hadoop介绍
- 格式:docx
- 大小:85.69 KB
- 文档页数:5
Hadoop这个名字不是一个缩写,它是一个虚构的名字。
该项目的创建者,Doug Cutting如此解释Hadoop的得名:"这个名字是我孩子给一个棕黄色的大象样子的填充玩具命名的。
我的命名标准就是简短,容易发音和拼写,没有太多的意义,并且不会被用于别处。
小孩子是这方面的高手。
Google就是由小孩命名的。
Hadoop 是一个能够对大量数据进行分布式处理的软件框架。
但是Hadoop 是以一种可靠、高效、可伸缩的方式进行处理的。
Hadoop 是可靠的,因为它假设计算元素和存储会失败,因此它维护多个工作数据副本,确保能够针对失败的节点重新分布处理。
Hadoop 是高效的,因为它以并行的方式工作,通过并行处理加快处理速度。
Hadoop 还是可伸缩的,能够处理PB 级数据。
此外,Hadoop 依赖于社区服务器,因此它的成本比较低,任何人都可以使用。
Hadoop带有用Java语言编写的框架,因此运行在Linux生产平台上是非常理想的。
Hadoop 上的应用程序也可以使用其他语言编写,比如C++。
Hadoop 有许多元素构成。
其最底部是Hadoop Distributed File System (HDFS),它存储Hadoop 集群中所有存储节点上的文件。
HDFS(对于本文)的上一层是MapReduce 引擎,该引擎由JobTrackers 和TaskTrackers 组成。
Hadoop由以下几个项目构成
总体结构图如下
1、Hadoop Common :Hadoop体系最底层的一个模块,为Hadoop各子项目提供各种工具,如:配置文件和日志操作等。
2、HDFS:分布式文件系统,提供高吞吐量的应用程序数据访问,对外部客户机而言,HDFS 就像一个传统的分级文件系统。
可以创建、删除、移动或重命名文件,等等。
但是HDFS 的架构是基于一组特定的节点构建的(参见图1),这是由它自身的特点决定的。
这些节点包括NameNode(仅一个),它在HDFS 内部提供元数据服务;DataNode,它为HDFS 提供存储块。
由于仅存在一个NameNode,因此这是HDFS 的一个缺点(单点失败)。
存储在HDFS 中的文件被分成块,然后将这些块复制到多个计算机中(DataNode)。
这与传统的RAID 架构大不相同。
块的大小(通常为64MB)和复制的块数量在创建文件时由客户机决定。
NameNode 可以控制所有文件操
作。
HDFS 内部的所有通信都基于标准的TCP/IP 协议。
3、MapReduce :一个分布式海量数据处理的软件框架集计算集群。
4、Avro :doug cutting主持的RPC项目,主要负责数据的序列化。
有点类似Google的protobuf和Facebook的thrift。
avro用来做以后hadoop的RPC,使hadoop的RPC模块通信速度更快、数据结构更紧凑。
5、Hive:类似CloudBase,也是基于hadoop分布式计算平台上的提供data warehouse的sql功能的一套软件。
使得存储在hadoop里面的海量数据的汇总,即席查询简单化。
hive提供了一套QL的查询语言,以sql为基础,使用起来很方便。
6、Hbase:基于Hadoop Distributed File System,是一个开源的,基于列存储模型的可扩展的分布式数据库,支持大型表的存储结构化数据。
7、Pig :是一个并行计算的高级的数据流语言和执行框架,SQL-like语言,是在MapReduce上构建的一种高级查询语言,把一些运算编译进MapReduce 模型的Map和Reduce中,并且用户可以定义自己的功能。
8、ZooKeeper :Google的Chubby一个开源的实现。
它是一个针对大型分布式系统的可靠协调系统,提供的功能包括:配置维护、名字服务、分布式同步、组服务等。
ZooKeeper的目标就是封装好复杂易出错的关键服务,将简单易用的接口和性能高效、功能稳定的系统提供给用户。
9、Chukwa :一个管理大型分布式系统的数据采集系统由yahoo贡献。
10、Cassandra :无单点故障的可扩展的多主数据库
11、Mahout :一个可扩展的机器学习和数据挖掘库。