hadoop使用场景

    • 大数据量存储:分布式存储
    • 日志处理: Hadoop 擅长这个
    • 海量计算: 并行计算
    • ETL: 数据抽取到 oracle、mysql、DB2、mongdb 及主流数据库
    • 使用 HBase 做数据分析: 用扩展性应对大量的写操作—Facebook 构建了基于 HBase 的实时数据分析系统
    • 机器学习: 比如 Apache Mahout 项目
    • 搜索引擎:hadoop + lucene 实现
    • 数据挖掘:目前比较流行的广告推荐
    • 大量地从文件中顺序读。HDFS 对顺序读进行了优化,代价是对于随机的访问负载较高。
    • 数据支持一次写入,多次读取。对于已经形成的数据的更新不支持。
    • 数据不进行本地缓存(文件很大,且顺序读没有局部性)
    • 任何一台服务器都有可能失效,需要通过大量的数据复制使得性能不会受到大的影响。
    • 用户细分特征建模
    • 个性化广告推荐
    • 智能仪器推荐
    • hadoop 是什么?
      (1)Hadoop 是一个开源的框架,可编写和运行分布式应用处理大规模数据,是专为离线和大规模数据分析而设计的,并不适合那种对几个记录随机读写的在线事务处理模式。Hadoop=HDFS(文件系统,数据存储技术相关)+ Mapreduce(数据处理),Hadoop 的数据来源可以是任何形式,在处理半结构化和非结构化数据上与关系型数据库相比有更好的性能,具有更灵活的处理能力,不管任何数据形式最终会转化为 key/value,key/value 是基本数据单元。用函数式变成 Mapreduce 代替 SQL,SQL 是查询语句,而 Mapreduce 则是使用脚本和代码,而对于适用于关系型数据库,习惯 SQL 的 Hadoop 有开源工具 hive 代替。
      (2)Hadoop 就是一个分布式计算的解决方案.
      hadoop 能做什么?
            hadoop 擅长日志分析,facebook 就用 Hive 来进行日志分析,2009 年时 facebook 就有非编程人员的 30% 的人使用 HiveQL 进行数据分析;淘宝搜索中    的 自定义筛选也使用的 Hive;利用 Pig 还可以做高级的数据处理,包括 Twitter、LinkedIn 上用于发现您可能认识的人,可以实现类似 Amazon.com 的协同过滤的推荐效果。淘宝的商品推荐也是!在 Yahoo!的 40% 的 Hadoop 作业是用 pig 运行的,包括垃圾邮件的识别和过滤,还有用户特征建模。(2012 年 8 月 25 新更新,天猫的推荐系统是 hive,少量尝试 mahout!)
          下面举例说明:
            设想一下这样的应用场景. 我有一个 100M 的数据库备份的 sql 文件. 我现在想在不导入到数据库的情况下直接用 grep 操作通过正则过滤出我想要的内容。例如:某个表中 含有相同关键字的记录那么有几种方式, 一种是直接用 linux 的命令 grep 还有一种就是通过编程来读取文件, 然后对每行数据进行正则匹配得到结果好了 现在是 100M 的数据库备份. 上述两种方法都可以轻松应对.
      那么如果是 1G , 1T 甚至 1PB 的数据呢 , 上面 2 种方法还能行得通吗? 答案是不能. 毕竟单台服务器的性能总有其上限. 那么对于这种 超大数据文件怎么得到我们想要的结果呢?
      有种方法 就是分布式计算, 分布式计算的核心就在于 利用分布式算法 把运行在单台机器上的程序扩展到多台机器上并行运行. 从而使数据处理能力成倍增加. 但是这种分布式计算一般对编程人员要求很高, 而且对服务器也有要求. 导致了成本变得非常高.
      Haddop 就是为了解决这个问题诞生的.Haddop 可以很轻易的把 很多 linux 的廉价 pc 组成 分布式结点, 然后编程人员也不需要知道分布式算法之类, 只需要根据 mapreduce 的规则定义好接口方法, 剩下的就交给 Haddop. 它会自动把相关的计算分布到各个结点上去, 然后得出结果.
      例如上述的例子 : Hadoop 要做的事 首先把 1PB 的数据文件导入到 HDFS 中, 然后编程人员定义好 map 和 reduce, 也就是把文件的行定义为 key, 每行的内容定义为 value , 然后进行正则匹配, 匹配成功则把结果 通过 reduce 聚合起来返回.Hadoop 就会把这个程序分布到 N 个结点去并行的操作.
      那么原本可能需要计算好几天, 在有了足够多的结点之后就可以把时间缩小到几小时之内.
      这也就是所谓的 大数据 云计算了. 如果还是不懂的话再举个简单的例子
      比如  1 亿个  1 相加 得出计算结果, 我们很轻易知道结果是 1 亿. 但是计算机不知道. 那么单台计算机处理的方式做一个一亿次的循环每次结果 +1
      那么分布式的处理方式则变成 我用 1 万台 计算机, 每个计算机只需要计算 1 万个 1 相加 然后再有一台计算机把 1 万台计算机得到的结果再相加
      从而得到最后的结果.
      理论上讲, 计算速度就提高了 1 万倍. 当然上面可能是一个不恰当的例子. 但所谓分布式, 大数据, 云计算 大抵也就是这么回事了.
      hadoop 能为我司做什么?
      零数据基础,零数据平台,一切起点都是 0。
      • 日志处理
      • 用户细分特征建模
      • 个性化广告推荐
      • 智能仪器推荐
      • 一切以增加企业的商业价值为核心目的、最终目的
      怎么用 hadoop
        • hadoop 的应用的在我司还属于研发型项目,拟用日志的分析来走通一次流程,因为此阶段目前来说还不需要数据挖掘的专业人员,在数据分析阶段即可,而系统有数据库工程师,Mapreduce 有 java 开发工程师,而分析由我本人介入,而可视化暂时可由前端 JS 实现,本来我的调研方案,针对大数据的解决方案是 hadoop+R 的,但是对于 R 我们是完全不懂,在公司还没有大量投入人员的情况下,只有日志分析目前看来是最容易出成果的,也是可以通过较少人员能出一定成果的,所以选取了这个方向作为试点。