Hadoop主要子项目介绍(Pig Zookeeper Hbase Hive Sqoop Avro Chukwa Cassandra )

jopen 8年前

现在Hadoop已经发展成为包含多个子项目的集合。虽然其核心内容是MapReduce和Hadoop分布式文件系统(HDFS),但Hadoop下的Common、Avro、Chukwa、Hive、HBase等子项目也是不可或缺的。它们提供了互补性服务或在核心层上提供了更高层的服务。

1、Hadoop Common
从Hadoop 0.20版本开始,Hadoop Core项目便更名为Common。Common是为Hadoop其他子项目提供支持的常用工具,它主要包括FileSystem、RPC和串行化库,它们为在廉价的硬件上搭建云计算环境提供基本的服务,并且为运行在该运平台上的软件开发提供了所需的API。

Hadoop体系最底层的一个模块,为Hadoop各子项目提供各种工具,如:配置文件和日志操作等。


2、Pig

1)、Pig是一种探索大规模数据集的脚本语言。
2)、pig是在HDFS和MapReduce之上的数据流处理语言,它将数据流处理翻译成多个map和reduce函数,提供更高层次的抽象将程序员从具体的编程中解放出来。
3)、Pig包括两部分:用于描述数据流的语言,称为Pig Latin;和用于运行Pig Latin程序的执行环境。
4)、Pig Latin程序有一系列的operation和transformation组成。每个操作或变换对输入进行数据处理,然后产生输出结果。这些操作整体上描述了一个数据流。Pig内部,这些变换操作被转换成一系列的MapReduce作业。
5)、Pig不适合所有的数据处理任务,和MapReduce一样,它是为数据批处理而设计的。如果只想查询大数据集中的一小部分数据,pig的实现不会很好,因为它要扫描整个数据集或绝大部分。


3、Hbase

HBase是Hadoop的一个子项目,HBase采用了Google BigTable的稀疏的,面向列的数据库实现方式的理论,建立在hadoop的hdfs上,一方面里用了hdfs的高可靠性和可伸缩行,另外一方面里用了BigTable的高效数据组织形式.可以说HBase为海量数据的real-time相应提供了很好的一个开源解决方案.据说在某运营商中使用类似于BigTable的技术可以在两秒时间内从2TB数据中查找到某条话费

1)、首先HBase不同于一般的关系数据库,它是一个适合于非结构化数据存储的数据库.另一个不同的是HBase基于列的而不是基于行的模式.

2)、Bigtable是一个疏松的分布式的持久的多维排序的map,这个map被行键,列键,和时间戳索引.每一个值都是连续的byte数组

3)、HBase使用和Bigtable非常相同的数据模型.用户存储数据行在一个表里.一个数据行拥有一个可选择的键和任意数量的列.表是疏松的存储的,因此用户可以给行定义各种不同的列.


4、Hive

Hive 是一种建立在 Hadoop 之上的数据仓库架构。它提供了:

• 一套方便的实施数据抽取(ETL)的工具。

• 一种让用户对数据描述其结构的机制。

• 支持用户对存储在Hadoop中的海量数据进行查询和分析的能力。

Hive 的基本特点是它采用 HDFS 进行数据存储并利用 Map/Reduce 框架进行数据操作。所以从本质上来说,Hive 就是个编译器,它把用户的操作(查询或者 ETL)变换成Map/Reduce 任务,利用 Map/Reduce 框架执行这些任务以对HDFS上的海量数据进行处理。

Hive 被设计成一种批处理系统。它利用 Map/Reduce 框架来处理数据。因此,它在Map/Reduce 任务提交和调度上有比较高的开销。即使对于小数据集(几百兆)来说,延迟也是分钟级的。但其最大的优点是延迟相对于数据集大小是线性增加的。

Hive 定义了一种简单的类 SQL 查询语言 HiveQL,让熟悉 SQL 的用户可以非常容易的进行查询。与此同时,HiveQL 也允许熟悉 Map/Reduce 框架的程序员在查询中插入自定义的 mapper 和 reducer 脚本以扩展 Hive 内嵌的功能,完成更复杂的分析。


5、HDFS

HDFS为分布式计算存储提供底层支持。

HDFS的设计思想:构建一个非常庞大的分布式文件系统。在集群中节点失效是正常的,节点的数量在Hadoop中不是固定的。单一的文件命名空间,保证数据的一致性,写入一次多次读取。典型的64MB数据块大小,每个数据块在多个DN(DataNode)有复制客户端通过NN(NameNode)得到数据块的位置,直接访问DN获取数据。

NameNode:

1)NameNode是一个通常在HDFS实例中单独机器上运行的软件。它负责管理文件系统名称空间和控制外部客户机的访问。它决定是否将会文件映射到DateNode上的复制块上。对于NameNode并不进行具体的IO操作,当外部客户机发生请求要求创建文件时NameNode 会议标识块和该块的第一个副本的DateNode IP地址作为响应。
2)NameNode在一个成为sImage的文件中存储所有有关于文件系统名称空间的信息,这个文件包含所有事物的记录文件(EditLog)将存储在NameNode的本地文件系统上。其中FsImage和EditLog文件也需要复制副本,以防止文件损毁或者NameNode系统丢失
DataNode:
1)DateNode通常是在一个HDFS实例中单独机器上运行的软件,DataNode通常以机架的形式组织,机架通过一个交换机将所有的系统链接起来。
2)DateNode 响应来自HDFS客户机的读写请求。他们还想应创建、删除和复制及来自NameNode块的命令
3)NameNode依赖来自于每个DataNode的定期心跳消息。每条消息都包含了一个块报告,NameNode可以根据这个报告验证映射和其他文件系统的元数据。如果DateNode不发送心跳消息,NameNode 将会采取修复措施。


6、MapReduce

1)MapReduce 是一个高性能的批处理分布式计算框架,用于对海量数据进行并行分析和处理。与传统数据仓库和分析技术相比,MapReduce 适合处理各种类型的数据,包括结构化、半结构化和非结构化数据。数据量在 TB 和 PB 级别,在这个量级上,传统方法通常已经无法处理数据。

2)MapReduce 将分析任务分为大量的并行 Map 任务和 Reduce 汇总任务两类。Map 任务运行在多个服务器上。目前部署的最大集群有 4000 个服务器。

3)最基本的MapReduce包括了Map、Reduce、mian函数,Google发现大多数分布式运算可以抽象为MapReduce操作。Map是把输入Input分解成中间的Key/Value对,Reduce把Key/Value合成最终输出Output。这两个函数由程序员提供给系统,下层设施把Map和Reduce操作分布在集群上运行,并把结果存储在GFS上。


7、Zookeeper

ZooKeeper是一个针对大型分布式系统的可靠协调服务,Google Chubby的开源实现。

1、用于协调分布式系统上的各种服务。例如确认消息是否准确到达,防止单点失效,处理负载均衡等 
2、应用场景:Hbase,实现Namenode自动切换 
3、工作原理:领导者,跟随者以及选举过程


8、Sqoop 

1、用于在Hadoop和关系型数据库之间交换数据 
2、 通过JDBC接口连入关系型数据库 


9、Avro

一种提供高效、跨语言RPC的数据序列系统,持久化数据存储。

1、数据序列化工具,由Hadoop的创始人Doug Cutting主持开发 
2、 用于支持大批量数据交换的应用。支持二进制序列化方式,可以便捷,快速地处理大量数据 
3、 动态语言友好,Avro提供的机制使动态语言可以方便地处理 Avro数据。


10、Chukwa 

分布式数据收集和分析系统。Chukwa运行HDFS中存储数据的收集器,它用MapReduce来生成报告。

chukwa 是一个开源的用于监控大型分布式系统的数据收集系统。这是构建在 hadoop 的 hdfs 和 map/reduce 框架之上的,继承了 hadoop 的可伸缩性和鲁棒性。Chukwa 还包含了一个强大和灵活的工具集,可用于展示、监控和分析已收集的数据。

具体而言, chukwa 致力于以下几个方面的工作:
1. 总体而言, chukwa 可以用于监控大规模(2000+ 以上的节点, 每天产生数据量在T级别) hadoop 集群的整体运行情况并对它们的日志进行分析
2. 对于集群的用户而言: chukwa 展示他们的作业已经运行了多久,占用了多少资源,还有多少资源可用,一个作业是为什么失败了,一个读写操作在哪个节点出了问题.
3. 对于集群的运维工程师而言: chukwa 展示了集群中的硬件错误,集群的性能变化,集群的资源瓶颈在哪里.
4. 对于集群的管理者而言: chukwa 展示了集群的资源消耗情况,集群的整体作业执行情况,可以用以辅助预算和集群资源协调.
5. 对于集群的开发者而言: chukwa 展示了集群中主要的性能瓶颈,经常出现的错误,从而可以着力重点解决重要问题.

11、Cassandra 

Apache Cassandra是一套开源分布式Key-Value存储系统。它最初由非死book开发,用于储存特别大的数据。非死book目前在使用此系统。

Cassandra的主要特点就是它不是一个数据库,而是由一堆数据库节点共同构成的一个分布式网络服务,对Cassandra 的一个写操作,会被复制到其他节点上去,对Cassandra的读操作,也会被路由到某个节点上面去读取。对于一个Cassandra群集来说,扩展性能 是比较简单的事情,只管在群集里面添加节点就可以了。

Cassandra是一个混合型的非关系的数据库,类似于Google的BigTable。其主要功能比 Dynomite(分布式的Key-Value存 储系统)更丰富,但支持度却不如文档存储MongoDB(介于关系数据库和非关系数据库之间的开源产品,是非关系数据库当中功能最丰富,最像关系数据库 的。支持的数据结构非常松散,是类似json的bjson格式,因此可以存储比较复杂的数据类型。)Cassandra最初由非死book开发,后转变成了开源项目。它是一个网络社交云计算方面理想的数据库。以Amazon专有的完全分布式的Dynamo为基础,结合了Google BigTable基于列族(Column Family)的数据模型。P2P去中心化的存储。很多方面都可以称之为Dynamo 2.0。


PS

Hbase和Hive在Hadoop中的功能有什么联系?

1、 hbase与hive都是架构在hadoop之上的。都是用hadoop作为底层存储。而hbase是作为分布式数据库,而hive是作为分布式数据仓库。当然hive还是借用hadoop的MapReduce来完成一些hive中的命令的执行。而hbase与hive都是单独安装的。

2、hdfs作为底层存储,hdfs是存放文件的系统,而Hbase负责组织文件。hive需要用到hdfs存储文件,需要用到MapReduce计算框架。 


来自: http://blog.csdn.net//u011067360/article/details/24435255