Hadoop是Apache Lucene创始人DougCutting创建的,Hadoop起源于开源的网络搜索引擎Apaache Nutch,它本身也是Lucene项目的一部分。
MapReduce是一个批量查询处理器,能够在合理的时间范围内处理针对整个数据集的动态查询。
MapReduce比较适合以批处理方式处理需要分析整个数据集的问题,尤其是动态分析。
MapReduce适合一次写入、多次读取数据的应用,关系型数据库则更适合持续更新的数据集。
MapReduce和关系型数据库之间的另一个区别在于他们所操作的数据集的结构化程度。
MapReduce对非结构化和半结构化数据非常有效,因为它是在处理数据时才对数据进行解释,换句话说,MapReduce输入的键和值并不是数据固有的属性,而是由分析数据的人来选的。
结构化数据是具有既定格式的实体化数据,如XML文档或满足特定预定义格式的数据库表(RDBMS包括该内容);
半结构化数据比较松散,虽然可能有格式,但经常被忽略,所以它只能作为对数据结构的一般性指导。例如电子表格,它在结构上是由单元格组成的网格,但是每个单元格内可以保存任何形式的数据。
非结构化数据没有什么特别的内部结构,例如纯文本或图像数据。
|
传统的关系型数据库 |
MapReduce |
数据大小 |
GB |
PB |
数据存储 |
交互式和批处理 |
批处理 |
更新 |
多次读/写 |
一次写入、多次读数 |
结构 |
静态模式 |
动态模式 |
完整性 |
高 |
低 |
横向扩展 |
非线性的 |
线性的 |
数据本地化特性是MapReduce的核心特征,并因此而获得良好的性能。
MapReduce三大设计目标:
1、为只需要短短几分钟或几个小时就可以完成的作业提供服务;
2、运行于同一个内有高速网络连接的数据中心内;
3、数据中心内的计算机都是可靠的、定制的硬件。
Hadoop项目:
Common:一系列组件和接口,用于分布式文件系统和通用I/O(序列化、Java RPC和持久化数据结构)。
Avro:一种序列化系统,用于支持高校、跨语言的RPC和持久化数据存储。
MapReduce:分布式数据处理模型和执行环境,运行于大型商用机集群。
HDFS:分布式文件系统,运行于大型商用机集群。
Pig:数据流语言和运行环境,用以探究非常庞大的数据集,Pig运行在MapReduce和HDFS集群上。
Hive:一种分布式的、按列存储的数据仓库,Hive管理HDFS中存储的数据,并提供基于SQL的查询语言(由运行时引擎翻译成MapReduce作业)用以查询数据。
HBase:一种分布式的、按列存储的数据库,HBase使用HDFS作为底层存储,同时支持MapReduce的批量式计算和点查询(随机读取)。
ZooKeeper:一种分布式的、可用性高的协调服务,ZooKeeper提供分布式锁之类的基本服务用于构建分布式应用。
Sqoop:该工具用于在结构化数据存储(如关系型数据库)和HDFS之间高效批量传输数据。
Oozie:该服务用于运行和调度Hadoop作业(如MapReduce,Pig,Hive及Sqoop作业)。
Hadoop2.X(版本)新特性:
1、在新的YARN系统(Yet AnotherResource Negotiator)系统上构建了一个新的运行环境,称为MapReduce 2,YARN是一个通用的用于运行分布式应用的资源管理器。
2、HDFS联邦管理,该管理将HDFS的命名空间分散到多个namenode中以支持包含有大规模数据文件的集群。
3、HDFS的高可用性,针对系统奔溃而启用备用的namenode来避免namenode的单点故障问题。
Hadoop发行版本系列支持的特性 | |||
特性 |
1.X |
0.22 |
2.X |
安全认证 |
是 |
否 |
是 |
旧的配置名称 |
是 |
弃用 |
弃用 |
新的配置名称 |
否 |
是 |
是 |
旧的MapReduce API |
是 |
是 |
是 |
新的MapReduce API |
是(加入部分缺失类库) |
是 |
是 |
MapReduce 1 运行环境(经典) |
是 |
是 |
否 |
MapReduce 2 运行环境(YARN) |
否 |
否 |
是 |
HDFS联邦管理 |
否 |
否 |
是 |
HDFS高可用 |
否 |
否 |
是 |