Hadoop相关技术

一.Hadoop简介

Hadoop是由Apache软件基金会所开发的分布式系统架构,用户可以将自己所开发的分布式程序部署其上面,充分利用集群的优势对海量数据进行高速运算和存储。Hadoop的框架最核心的设计是:HDFS和MapReduce。HDFS为海量数据提供了存储,MapReduce为海量数据提供了运算。

二.HDFS分布式文件系统

HDFS是一种分布式文件系统。它出现的目的是为了解决海量数据存储问题。它是部署在由很多文件存储服务器组成的集群上。HDFS启动后,会监听一个端口,由Namenode提供一个统一的虚拟的目录树并对外呈现,用户无需关心文件具体存在哪个地方。其存储文件工作原理如图2-1所示,图2-1右下角“cts03”应该改为“cts04”,其读取文件工作原理如图2-2。

 

Hadoop相关技术_第1张图片

                                                                                          图2-1 HDFS工作原理图

对HDFS工作原理简述如下:

       (1)客户端存储文件

当客户端程序请求存储一个文件到HDFS某一个具体的文件目录下面时,Namenode会检查虚拟目录树(元数据)里是否存在该客服端程序所请求的文件目录。如果存在, Namenode会选择一台Datanode的服务器与客户端程序通信并且分配一个全局唯一的块ID然后给客户端程序一个响应,客户端程序得到响应后,会与被Namenode选择的Datanode通信,然后通过Socket将文件块(默认128M,副本数量为3,副本任务由HDFS内部完成,与客户端程序无关)上传到Datanode上并告知块ID,Datanode则将文件块存储到自己的存储目录里面并命名为块ID。然后,Namenode会记录客户端程序所请求的存储路径和块ID以及文件快所存储的真实服务器。然后开始传第二块文件快,Namenode会重新选择一台Datanode的服务器与客户端程序通信并且分配一个全局唯一的块ID,后续流程与前面所述类似,直到整个文件传完。

Hadoop相关技术_第2张图片

 

                                                                                   图2-2 HDFS工作原理

       (2)客户端读取文件

当客户端程序向HDFS请求读取一个文件时,Namenode会检查虚拟目录树里是否存在该客服端程序所请求读取的文件路径。如果存在, Namenode会告知客户端程序该文件的元数据信息(包括块ID和该文件块所在的文件存储服务器,块ID较小的先读取)。客服端程序得到响应后,它会与Namenode所告知的文件存储服务器通信,该文件存储服务器上的DataNode程序会检查自己文件目录里是否存在该客服端程序所请求的文件目录。如果存在,DataNode就将文件传给客服端程序。然后客服端程序与第二块文件快所在的文件存储服务器通信,后续流程与前面所述类似,直到整个文件读取完。客服端程序自己处理这个文件。

三.Map/Reduce编程框架

MapReduce将整个运算过程分为两个阶段:Map阶段(MapTask)和Reduce阶段(ReduceTask),如图3-1所示。

 

Hadoop相关技术_第3张图片

                                                                                图3-1 Map/Reduce编程框架图

       (1)Map阶段

MapTask一行一行的读取原始数据,将数据分为(Key,Value)缓存起来,并且求出Key的hashCode再去对Reduce的数量取模将数据分区。

       (2)Reduce阶段

ReduceTask取相应分区的(Key,Value)并将数据分好组,对每一组数据进行聚合,通过迭代器实现数据的聚合,最终,将运算结果写到HDFS中。

分布式程序MapReduce运行所需的yarn平台是一个分布式程序运行调度系统,它本身也是一个分布式系统。客户端程序将Jar包传到YARN平台里的ResourceManager后,ResourceManager将Jar包传给NodeManager,NodeManager启动Jar包里面的程序,等MapTask程序都运行完后再启动ReduceTask程序。一般地,机器里的DataNode与NodeManager相对应。同时,NodeManager有内存分配机制,它将一台机器里的总资源划分成若干个容器,运行一个Task任务只需要占用其中一个容器。

MapReduce程序在执行Task任务前,需要先启动MRAppMaster,而MRAppMaster启动内存至少需要1.5G,所以应注意YARN平台总资源的配置。

四.Hive

Hive是一个SQL工具,它能接收用户输入的sql语句,然后把sql语句翻译成MapReduce程序对HDFS上的数据进行查询、运算,并返回结果或者将结果存入HDFS中。

Hive利用HDFS来存储数据文件;利用MapReduce来做数据分析运算;利用SQL来为用户提供查询的接口。

Hive工作机制如图4-1所示。

 

Hadoop相关技术_第4张图片

                                                                                           图4-1 Hive工作机制图

Hive中的元数据(用户表的定义信息)默认放在Derby嵌入式数据库中,由于Derby数据库只支持单连接,只能Hive本身去连接它,故一般将MySQL数据库作为Hive元数据存放的数据库。

至此,Hadoop相关技术介绍完毕。由于本人水平有限,不足之处敬请各位同行多多批评指正!

 

 

 

 

 

你可能感兴趣的:(大数据技术)