浅谈大数据下的Hadoop分布式架构
2016-03-22刘斌闫佳陈兴
刘斌++闫佳++陈兴
摘要:随着信息技术的迅猛发展,各行业产生的数据呈爆炸性的增长,而这些数据已远超过了传统的计算技术与信息系统的处理能力。实现大数据的研究,以有效的信息技术的手段和计算方法,获取、处理和分析各行业的大数据发现潜在的价值意义重大。该文就主要就是针对大数据下的Hadoop分布式架构的讨论。
关键词:大数据;Hadoop分布式架构;HDFS分布式文件系统;MapReduce并行计算框架
中图分类号:TP391 文献标识码:A 文章编号:1009-3044(2016)01-0007-02
1 大数据的相关介绍
1.1 大数据的概念
大数据(Big Data),或称巨量资料,指的是所涉及的资料量巨大到无法通过目前主流的软件工具在合理时间内达到撷取、管理、处理,并整理成为帮助企业经营决策更积极目的的资讯。大数据不同于集中在一个磁盘阵列中的海量数据集合。大数据是由分布存储在集群节点中多个单节点的磁盘空间中能被进行分布式处理的数据构成的一个数据总体。大数据的规模可以随着节点数量的不断增加而不断扩大。大数据的价值在于基于人们历史产生的各类数据可以产生出新的有价值的信息。
1.2 大数据的特点
1)大体量(Volume):大数据是指数据量非常庞大,其庞大体现在数据存储量大、计算量大。
2)时效性(Velocity):大数据是指在数据不断增长,增长速度快,数据在存储、传输时的处理速度快。
3)多样性(Variety)大数据可以结构化的表单,半结构的文本、视频、图像、语音以及非结构化的文件。
4)大价值(Value):在大量的数据中有价信息是很少的,但这些有价信息是通过分析挖掘才能够发现的。虽然价值密度低,但其商业价值高。
2 Hadoop分布式系统的介绍
2.1 Hadoop系统
Hadoop是Apache基金会下的一个能够对大量数据进行分布式处理的软件框架,具有可靠、高效、可伸缩的数据处理特点。硬件角度看,Hadoop系统是应用于普通的商用服务器集群的分布式存储和并行计算系统。软件角度看,Hadoop系统包括分布式存存储和并行计算两个部分。如图1所示:系统的架构图。
2.2 HDFS分布式文件系统
(1)HDFS系统逻辑架构
HDFS是一个多层次的架构,基于主从模式进行管理,采用远程过程通讯即RPC来实现层间的交互。
HDFS由客户端层、名称节点层和数据节点层三个层次构成。
客户端层通过HDFS提供一个文件系统接口,通过名称节点和数据节点的交互来读写HDFS的文件系统。客户端首先从名称节点(NameNode)上获得文件数据块的位置列表,然后直接从数据节点上读取文件数据,NameNode不参与文件的传输。
名称节点层主要由名称节点服务器和二级名称节点构成。NameNode执行文件系统的命名操作。二级名称节点Secondary NameNode主要辅助NameNode处理镜像文件和事务日志,他会定期从NameNode上复制镜像文件和事务日志到临时目录,合并生成新的日志文件后重新上传到NameNode上。
数据节点层主要是由多个数据节点构成。DataNode负责处理客户的读/写请求,依照NameNode的命令,来执行数据块的创建、复制、删除等工作。
(2)HDFS系统物理架构
HDFS的典型部署方式是在两个专门的服务器上运行NameNode和Secondary NameNode,再将DataNode安装在以机架位单位的多组机架的机器上。一个集群只有一个NameNode。
2.3 MapReduce并行计算框架
MapReduce是一种分布式软件编程框架,其运行依赖于分布式作业系统。分布式作业系统也是主从模式的,它由一个作业节点(JobTracker)和多个任务节点(TaskTracker)构成。MapReduce向作业端发出一个数据处理请求,作业主节点接收到请求后,会将MapReduce的程序代码经网络传输到多个作业节点,由多个作业节点调用MapReduce程序对本地的数据进行处理。
(1)设计思路
MapReduce编程模式设计遵循“分而治之、移动逻辑、屏蔽底层、处理定制”的设计思想。
分而治之是将大规模的数据分拆成N个数据块部分,由一个主节点将MapReduce函数分发到各个数据块的分支节点上去运行,然后通过合并各分支节点的结果来得到最终结果。MapReduce并行计算模型如图2所示。
图2 MapReduce并行编程模型
2)基本概念
字面上看,map是映射,reduce是化简,而逻辑上讲,map即分析,reduce即归纳。Map函数是面向部分的分析,而reduce是面向整体的归纳,map函数对应分布式的可处理特性,reduce函数对应分布式的可和并特性。
1)map()函数
map()函数的输入数据是由任务节点分配的预先已分割成固定大小的数据片段(splits),Hadoop会对每一个splits创建map任务,此任务是调用map()函数对源键值对的键和值根据定义的规则进行处理,生成中间值键值对。若将源键值对抽象为
(2)reduce()函数
reduce()函数的输入数据是由节任务点把不同的map任务输出的中间数组整合起来并行排序而产生的,然后调用用户自定义的reduce()函数,对输入的
3)运行机制
MapReduce的map任务和reduce任务都是在JobTracker的统一调度下由TaskTracker来执行的。而任务从发起到执行返回,一切都是源于MapReduce提交作业的那一刻。在作业提交到JobTracker服务器的过程中,JobTracker提供给MR客户端JobClient 的runjob做了大量的工作。整个MapReduce运行时序关系图如图3所示。
图3 MapReduce运行时序关系图
1)首先,用户程序客户端通过作业客户端接口程序JobClient提交一个用户程序。
2)JobClient向JobTracker提交作业执行请求获得一个JobID.
3)JobClient同时也会将用户程序作业和待处理的数据文件信息准备好并存储在HDFS中。
4)JobClient正式向JobTracker提交和执行该作业。
5)JobTracker接收并调动该作业,进行作业的初始化准备工作,根据待处理数据的实际分片情况,调度和分配一定的Map节点来完成作业。
6)JobTracker查询作业中的数据分片信息,构建并准备相应的任务。
7)JobTracker启动TaskTracker节点开始执行具体的任务。
8)TaskTracker根据所分配的具体任务,获取相应的作业和数据。
9)TaskTracker节点创建Java虚拟机,并启动相应的Map任务(或者Reduce任务)的执行。
10)TaskTracker执行所分配的任务之后,若是Map任务,则把中间结果数据输出到HDFS中;若是Reduce任务,则输出最终结果。
3 总结
在当代,我们已经被海量的数据包围。要从这些数据中提取出有价值的信息,就需要提供底层细节透明的分布式基础设施。HDFS的高容错性、高伸缩性等优点,允许将Hadoop部署到廉价的硬件上,构建分布式系统;MapReduce分布式计算框架可以再不了解分布式系统底层细节的情况下开发并行、分布的应用程序,重复利用大规模的计算资源。
参考文献:
[1] 陈如明.大数据时代的挑战、价值与应用对策[J].移动通信,2012(17).
[2] 成静静,喻朝新.基于云计算的大数据同意分析平台研究与设计[J].广东通信技术,2013(3).
[3] 郑启龙,房明,汪胜.基于MapReduce模型的并行科学计算[J].微电子与计算机,2009(8).
[4] 高洪,杨庆平,黄震江.基于Hadoop平台的大数据分析关键技术标准化探讨[J].信息技术与标准化,2013(5).