学习Hadoop

我与Hadoop

对Hadoop最初的了解是在两年前,那时候刚刚研一。当时对于Hadoop充满好奇,可是由于学业还有项目的原因自己迟迟没有去好好的研究下Hadoop。研二由于论文选题的方向是Nosql才有了真正去接触Hadoop的机会。这期间对Hadoop的了解也是时断时续,之所以会这样,主要是因为Hadoop自己本身并不是很成熟,还有就是网上的学习资源也是参差不齐。再加上自己又和同门接了个项目再弄,所以感觉对Hadoop的学习并不是非常系统和深入。一个偶然的机会看了吴超的视频才有了真正向系统学习下Hadoop的决心,甚至花了一千大洋买了整个Hadoop系列的视频。

Hadoop生态圈

把吴超的Hadoop视频看的差不多了,对整个Hadoop生态圈有了大致的了解。在这里准备总结下这几天看的也算是加深下自己的印象。
该图片来自http://my.oschina.net/leejun2005/blog/82699
该图片来自http://my.oschina.net/leejun2005/blog/82699

这个生态圈中的数据分析、统计和挖掘模块我只学了Hive和Pig,对Mahout还不是很了解,Mahout将是我下一个要深入了解的对象。

HDFS

整个Hadoop系统得以运行全靠底层的分布式文件系统HDFS,HDFS是一种能够运行在大量廉价硬件上的分布式文件系统,它不仅具有分布式文件系统的大量优点,而且还做了许多改善:具有高容错性,对硬件性能要求不高,可以实现高吞吐量的数据访问,特别适合运用在超大规模数据集上。

MapReduce

MapReduce是一个分布式计算框架,负责对大数据进行处理,其中Map,对数据集上的独立元素进行指定的操作,生成键-值对形式中间结 果。Reduce,则对中间结果中相同“键”的所有“值”进行规约,以得到最终结果。MapReduce这样的功能划分,非常适合在大量计算机组成的分布 式并行环境里进行数据处理。

该图片来自http://www.thebigdata.cn/Hadoop/11944.html

Hive(基于Hadoop的数据仓库)

由facebook开源,最初用于解决海量结构化的日志数据统计问题。Hive定义了一种类似SQL的查询语言(HQL), 将SQL转化MapReduce任务在Hadoop上执行。通常用于离线分析。

Hbase(分布式列存数据库)

源自Google的Bigtable论文,发表于2006年11月,HBase是Google Bigtable克隆版。HBase是一个针对结构化数据的可伸缩、高可靠、高性能、分布式和面向列的动态模式数据库。 和传统关系数据库不同,HBase采用了BigTable的数据模型:增强的稀疏排序映射表(Key/Value),其中,键由行关键字、列关键字和时间 戳构成。HBase提供了对大规模数据的随机、实时读写访问,同时,HBase中保存的数据可以使用MapReduce来处理,它将数据存储和并行计算完 美地结合在一起。
数据模型:Schema–>Table–>Column Family–>Column–>RowKey–>TimeStamp–>Value

Zookeeper(分布式协作服务)

源自Google的Chubby论文,发表于2006年11月,Zookeeper是Chubby克隆版。解决分布式环境下的数据管理问题:统一命名,状态同步,集群管理,配置同步等。

Sqoop(数据同步工具)

Sqoop是SQL-to-Hadoop的缩写,主要用于传统数据库和Hadoop之前传输数据。数据的导入和导出本质上是Mapreduce程序,充分利用了MR的并行化和容错性。

Pig(基于Hadoop的数据流系统)

由yahoo!开源,设计动机是提供一种基于MapReduce的ad-hoc(计算在query时发生)数据分析工具,定义了一种数据流语言—Pig Latin,将脚本转换为MapReduce任务在Hadoop上执行。通常用于进行离线分析。

Mahout(数据挖掘算法库)

Mahout起源于2008年,最初是Apache Lucent的子项目,它在极短的时间内取得了长足的发展,现在是Apache的顶级项目。Mahout 的主要目标是创建一些可扩展的机器学习领域经典算法的实现,旨在帮助开发人员更加方便快捷地创建智能应用程序。Mahout现在已经包含了聚类、分类、推 荐引擎(协同过滤)和频繁集挖掘等广泛使用的数据挖掘方法。除了算法,Mahout还包含数据的输入/输出工具、与其他存储系统(如数据库、 MongoDB 或Cassandra)集成等数据挖掘支持架构。

Flume(日志收集工具)

Cloudera开源的日 志收集系统,具有分布式、高可靠、高容错、易于定制和扩展的特点。它将数据从产生、传输、处理并最终写入目标的路径的过程抽象为数据流,在具体的数据流 中,数据源支持在Flume中定制数据发送方,从而支持收集各种不同协 议数据。同时,Flume数据流提供对日志数据进行简单处理的能力,如过滤、格式转换等。此外,Flume还具有能够将日志写往各种数据目标(可定制)的 能力。总的来说,Flume是一个可扩展、适合复杂环境的海量日志收集系统。