5.2.2.1 HDFS
HDFS是Hadoop体系中数据存储管理的基础。它是一个高度容错的系统,能检测和应对硬件故障,用于在低成本的通用硬件上运行。HDFS简化了文件的一致性模型,通过流式数据访问,提供高吞吐量应用程序数据访问功能,适合带有大型数据集的应用程序。
关于HDFS的详细介绍参见第6章。
5.2.2.2 MapReduce
MapReduce是一种编程模型,用于大规模数据集(大于1TB)的并行运算。MapReduce将应用划分为Map和Reduce两个步骤,其中Map对数据集上的独立元素进行指定的操作,生成键值对形式的中间结果。Reduce则对中间结果中相同“键”的所有“值”进行规约,以得到最终结果。MapReduce这样的功能划分,非常适合在大量计算机组成的分布式并行环境里进行数据处理。MapReduce以JobTracker节点为主,分配工作以及负责和用户程序通信。
关于MapReduce的详细介绍参见第7章。
5.2.2.3 Common
从Hadoop 0.20版本开始,Hadoop Core模块更名为Common。Common是Hadoop的通用工具,用来支持其他的Hadoop模块。实际上Common提供了一系列文件系统和通用I/O的文件包,这些文件包供HDFS和MapReduce公用。它主要包括系统配置工具、远程过程调用、序列化机制和抽象文件系统等。它们为在廉价的硬件上搭建云计算环境提供基本的服务,并且为运行在该平台上的软件开发提供了所需的API。其他Hadoop模块都是在Common的基础上发展起来的。
5.2.2.4 Yarn
Yarn是Apache新引入的子模块,与MapReduce和HDFS并列。由于在老的框架中,JobTracker要一直监控Job下的Tasks的运行状况,承担的任务量过大,所以引入Yarn来解决这个问题。Yarn的基本设计思想是将MapReduce中的JobTracker拆分成了两个独立的服务:一个全局的资源管理器ResourceManager和每个应用程序特有的ApplicationMaster。其中ResourceManager负责整个系统的资源管理和分配,而ApplicationMaster则负责单个应用程序的管理。
当用户向Yarn中提交一个应用程序后,Yarn将分两个阶段运行该应用程序:第一个阶段是启动ApplicationMaster;第二个阶段是由ApplicationMaster创建应用程序,为它申请资源,并监控它的整个运行过程,直到运行成功。Yarn架构如图5-4所示。
图5-4 Yarn架构
5.2.2.5 Hive
Hive最早是由Facebook设计,基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供类SQL查询功能。Hive没有专门的数据存储格式,也没有为数据建立索引,用户可以非常自由地组织Hive中的表,只需要在创建表时告知Hive数据中的列分隔符和行分隔符,Hive就可以解析数据。Hive中所有的数据都存储在HDFS中,其本质是将SQL转换为MapReduce程序完成查询。Hive与Hadoop的关系,如图5-5所示。
(www.xing528.com)
图5-5 Hive与Hadoop的关系
使用Hive的命令行接口,在操作上与使用关系数据库类似,但是本质上有很大的不同,例如:关系数据库(RDBMS)是为实时查询的业务进行设计的,而Hive则是为海量数据做数据挖掘设计的,实时性很差;Hive使用的计算模型是MapReduce,而RDBMS则是自己设计的计算模型;Hive和RDBMS存储文件的系统不同,Hive使用的是Hadoop的HDFS,RDBMS则是服务器本地的文件系统;Hive处理数据规模大,RDBMS处理数据规模相对较小;Hive不使用索引查询,RDBMS则经常使用索引。Hive与RDBMS对比,如表5-2所示。
表5-2 Hive与RDBMS对比
5.2.2.6 HBase
HBase即Hadoop Database,是一个分布式的、面向列的开源数据库。HBase不同于一般的关系数据库:其一,HBase是一个适合于存储非结构化数据的数据库;其二,HBase是基于列而不是基于行的模式。用户将数据存储在一个表里,一个数据行拥有一个可选择的键和任意数量的列。由于HBase表示疏松的数据,用户可以给行定义各种不同的列。HBase主要用于需要随机访问、实时读写的大数据。
HBase与Hive的相同点是HBase与Hive都是架构在Hadoop之上的,都用Hadoop作为底层存储(表5-3)。
表5-3 HBase与Hive对比
5.2.2.7 Avro
Avro由Doug Cutting牵头开发,是一个数据序列化系统。类似于其他序列化机制,Avro可以将数据结构或者对象转换成便于存储和传输的格式,其设计目标是用于支持数据密集型应用,适合大规模数据的存储与交换。Avro提供了丰富的数据结构类型、快速可压缩的二进制数据格式、存储持久性数据的文件集、远程调用RPC和简单动态语言集成等功能。
5.2.2.8 Chukwa
Chukwa是开源的数据收集系统,用于监控和分析大型分布式系统的数据。Chukwa是在Hadoop的HDFS和MapReduce框架之上搭建的,它同时继承了Hadoop的可扩展性和健壮性。Chukwa通过HDFS来存储数据,并依赖于MapReduce任务处理数据。Chukwa中也附带了灵活且强大的工具,用于显示、监视和分析数据结果,以便更好地利用所收集的数据。
5.2.2.9 Pig
Pig是一个对大型数据集进行分析和评估的平台。Pig最突出的优势是它的结构能够经受住高度并行化的检验,这个特性让它能够处理大型的数据集。目前,Pig的底层由一个编译器组成,它在运行的时候会产生一些MapReduce程序序列,Pig的语言层由一种叫作Pig Latin的正文型语言组成。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。