时间:2024-05-04
韩 震,孙 红
(上海理工大学 光电信息与计算机工程学院, 上海 200093)
基于Hadoop的分布式平台实现
韩 震,孙 红
(上海理工大学 光电信息与计算机工程学院, 上海 200093)
互联网的迅速发展产生了各种海量数据,快速有效处理海量数据是云计算的目标。Hadoop作为典型的云计算平台可高效处理海量数据。介绍了Hadoop相关概念,包括HDFS、MapReduce等众多子项目;阐述了Hadoop完全分布式平台搭建,包括环境配置、搭建方法等;通过数据处理实验验证了Hadoop分布式平台的有效性。
Hadoop;云计算;平台搭建;数据处理;分布式平台
大数据时代[1],云计算和大数据处理技术得到了快速发展。Hadoop作为流行的大数据处理平台,涵盖了整个Hadoop家族项目与架构,以及关键技术的设计思想和工作流程,发展潜力巨大。Hadoop包括分布式文件系统(HDFS)和MapReduce编程框架等众多基础架构。除此之外,Hadoop使用Java语言编程,具有很强的可移植性[2]。
Hadoop是一个分布式计算平台,具有庞大的分布式计算基础架构,由Apache软件基金会开发,囊括了众多Apache软件基金会子项目,每个子项目可以提供配套服务,以保持整个系统的完整性,统称为Hadoop家族[3]。Hadoop家族分布如图1所示。
从Hadoop家族架构可看出,整个Hadoop家族包含一系列子项目,下面简单介绍其中几个[4]:
Core:一组分布式系统及输入输出相关功能接口。
Avro:一种提供高效、跨语言RPC的数据序列系统,持久化数据存储。
MapReduce:分布式数据计算模型,安装在大量计算机集群中工作。它继承于Google的MapReduce,目的是实现多台计算机集群并行处理数据,缩短数据处理所需要的时间。
图1 Hadoop家族分布
HDFS:分布式文件系统,与MapReduce相似,在大型计算机集群中工作,继承于Google的GFS,使用数据流方式访问数据,具有更高的效率,对硬件配置要求较低。
ZooKeeper:一个分布式的、高可用性的协调服务。能够安插分布式相关应用,配置一些如分布式锁的功能。
HBase:一种分布式数据库,属于一个列式存储数据库,把HDFS当成基础单元,能够通过MapReduce操作计算和随时读取。继承于Google的bigtable。可以随时读写、随机读取大规模数据集。
Hadoop平台分3种运行模式,分别是单机模式、伪分布模式和完全分布模式。其中,单机模式安装非常简单,仅做一些基本操作即可,一般仅限于调试,实际中基本不使用。伪分布模式在计算机上完成所有操作,在单一的节点上同时启动namenode、datanode、jobtracker、tasktracker、secondary namenode等5个进程,并将在此节点上模拟分布式运行各个节点。完全分布模式就是通常所说的Hadoop集群,由若干个节点构成,每个节点在系统中按照自己的定位完成相应的任务[5]。本文需要在完全分布式的Hadoop集群上完成整个实验。集群中的节点服务器都由虚拟机实现,每个虚拟机装载了Linux系统,其中,Linux系统版本是Ubuntu 14.04,Java开发版本为JDK-1.8.0_45, Hadoop版本是Hadoop-1.2.1。本实验中搭建的Hadoop集群由9个节点组成,包括一台NameNode与Jobtracter节点,8台DataNode与Tasktracker节点,具体每个节点的名称、IP地址如表1所示。
表1 集群节点配置
Hadoop平台搭建分为Linux环境配置、Hadoop节点配置两个部分,下面分别说明。
2.1 Linux环境配置
一般而言,Ubuntu的Linux系统自带JDK。在本实验中,将重新安装最新版本的JDK-1.8.0_45。将Java环境变量全部配置完成以后,在命令终端里输入java -version命令查看是否安装成功及版本信息。
修改每个节点的主机名和IP地址,把主节点命名为master,从节点命名为slave01、slave02等,一直到slave08。其中,每个节点对应的IP地址依次为192.168.1.101-192.168.1.109,机器名称和IP的配置映射关系在Linux系统中etc路径下的hosts文件中增加。
2.2 Hadoop节点配置
2.2.1 安装Hadoop
Hadoop安装包本质上是一个压缩文件,它的安装十分方便,只需将它解压并且配置相关的文件信息即可直接使用[6]。Hadoop压缩包可从Apache的官方网站上获得,该网包括了目前发布的所有版本,下载网址为http://hadoop.apache.org/releases.html。Hadoop发行的版本种类很多,本文选用的版本为Hadoop-1.2.1。下载完成后,把压缩包解压到/home/Hadoop目录下,之后在etc目录下的profile中进行相关环境变量修改。
2.2.2 配置各节点文件
配置core-site.xml文件:将core-site.xml的相关参数进行修改,相关代码如下:
其中,参数hadoop.tmp.dir表示Hadoop运行时临时文件的存放目录,fs.default.name表示HDFS的namenode通信地址,即namenode的主机名或IP地址及端口。
配置mapred-site.xml文件:将mapred-site.xml的相关参数进行修改,相关代码如下:
在该文件中主要修改mapred.job.tracker属性,它所表示的是Jobtracker所在的主机名称或者IP地址及端口。
配置hdfs-site.xml文件:将hdfs-site.xml的相关参数进行修改,代码如下所示:
在该文件中主要修改dfs.replication这一属性,它表示HDFS创建的副本量。在这里,本文设置副本数量为3。
配置master和slaves文件:在master文件中,添加master节点的IP地址;在slaves文件中,添加所有slave节点的IP地址。
2.2.3 将配置好的Hadoop复制到其它节点
本实验共有9个节点,所以可以通过命令操作,将配置好的文件复制到其它节点。下面列举复制到其中两个节点的命令:
scp -r /root/slave01:/my/hadoop
scp -r /root/slave02:/my/hadoop
2.2.4 配置SSH
为了提高效率,避免每次使用和停止Hadoop时都要输入密码,需要设置节点之间SSH免密码连接,即从Master与Slave之间和Slave节点之间是免密码连入的[7]。
在每个节点的终端上输入以下指令来生成公私密钥:
ssh -keygen - t rsa - P ‘’ -f ~/.ssh/id_rsa
并将公钥文件id_rsa.pub通过以下命令追加到authorized_keys文件中:
cat id_rsa.pub >> authorized_keys
对每个节点进行以上操作,实现当前用户不用密码登陆本机。同时,本文将所有节点的公钥与私钥放置在一个文件内,并将这个文件发送到各个节点,从而实现每个节点之间的SSH免密码互连。
2.2.5 格式化并启动Hadoop
完成了上述所有配置操作后,在命令终端敲打cd命令将路径切换到hadoop/bin路径下,输入如下指令来格式化HDFS[8]:
hadoop namenode -format
格式化完毕输入指令启动Hadoop。
Start-all.sh
此时,可使用jps命令查看运行进程来确认Hadoop启动成功,在master节点和slave01-slave08节点执行jps命令,可得到如表2所示的运行进程。
表2 master与slave运行进程
通过50070和50030端口,可以查看NameNode节点正在运行的任务状态,如图2所示。根据显示的各个节点进程运行情况,可以看出整个集群节点运行已经成功,实现了Hadoop分布式平台。
图2 NameNode运转状态
Hadoop安装目录下都会自带eclipse插件。在Hadoop-1.2.1版本中,插件需要经过编译重新生成。编译涉及一些与系统有关的变量改写,例如jdk版本、系统版本等,本文不再作详细赘述。
将编译好的jar包插件放到eclipse目录下的目录中,并在eclipse完成调试。应用程序选用Hadoop源码中的
WordCount实例,这是Hadoop自带的一个统计词频的实例程序。新建myMapReduce工程,与之前建立好的Hadoop工程关联,并将WordCount.Java复制至刚刚建立的myMapReduce项目。然后上传测试文档至HDFS中,开始运行程序,运行结果如图3所示。
从图3可以看到任务执行成功情况、输入输出行数、开始及结束时间等信息。可以验证本文搭建的Hadoop集群可以正常工作并执行MapReduce程序。
大数据时代已经到来,并行计算与分布式计算技术成为新兴的、应用广泛的数据处理技术。Hadoop作为典型的云计算平台,拥有巨大的发展潜力与良好的应用前景。本文详细描述了Hadoop完全分布式集群的搭建流程,实现了Hadoop集群并将统计词频程序应用在集群上,实验表明本文系统可以进行大数据处理。下一步工作是利用yarn资源管理器来实现Hadoop集群资源的合理分配,并进行相关算法应用。
[1] CHAIKEN R, JENKINS B. Easy and efficient parallel processing of massive data sets [J]. Proceedings of the VLDB Endowment,2008(2):1265-1276.
[2] DEAN J, GHEMAWATS. MapReduce:simplified data processing on large clusters [J]. Communication of the ACM, 2008,51(1):107-113.
[3] 杨浩彬,吴文锋.使用VMware Esxi和Hadoop进行大数据平台的搭建研究[J].信息技术与信息化,2015,10(7):185-187.
[4] 孟小峰, 杜治娟. 大数据融合研究:问题与挑战[J].计算机研究与发展, 2016, 53(2):231-246.
[5] 李筱.面向异构多核系统的并行计算模型和调度算法研究[D].长沙:湖南大学,2012.
[6] 徐焕良,翟璐,薛卫,等. Hadoop平台中MapReduce调度算法研究[J]. 计算机应用与软件, 2015, 32(5):1-6.
[7] 严霄凤,张德馨. 大数据研究[J].计算机技术与发展, 2013,23(4):168 -172.
[8] 范素娟,田军峰. 基于Hadoop的云计算平台研究与实现[J]. 计算机技术与发展, 2016,26(7):127-132.
(责任编辑:杜能钢)
国家自然科学基金项目(61472256,61170277);上海市教委科研创新重点项目(12zz137);沪江基金项目(C14002)
韩震(1993-),男,安徽滁州人,上海理工大学光电信息与计算机工程学院硕士研究生,研究方向为大数据与云计算;孙红(1964-),女,上海人,博士,上海理工大学光电信息与计算机工程学院副教授、硕士生导师,研究方向为计算机网络通信与云计算、控制科学与工程、模式识别与智能系统。
10.11907/rjdk.162889
TP319
A
1672-7800(2017)003-0056-03
我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自各大过期杂志,内容仅供学习参考,不准确地方联系删除处理!