当前位置:首页 期刊杂志

基于Hadoop的分布式平台实现

时间:2024-05-04

韩 震,孙 红

(上海理工大学 光电信息与计算机工程学院, 上海 200093)

基于Hadoop的分布式平台实现

韩 震,孙 红

(上海理工大学 光电信息与计算机工程学院, 上海 200093)

互联网的迅速发展产生了各种海量数据,快速有效处理海量数据是云计算的目标。Hadoop作为典型的云计算平台可高效处理海量数据。介绍了Hadoop相关概念,包括HDFS、MapReduce等众多子项目;阐述了Hadoop完全分布式平台搭建,包括环境配置、搭建方法等;通过数据处理实验验证了Hadoop分布式平台的有效性。

Hadoop;云计算;平台搭建;数据处理;分布式平台

0 引言

大数据时代[1],云计算和大数据处理技术得到了快速发展。Hadoop作为流行的大数据处理平台,涵盖了整个Hadoop家族项目与架构,以及关键技术的设计思想和工作流程,发展潜力巨大。Hadoop包括分布式文件系统(HDFS)和MapReduce编程框架等众多基础架构。除此之外,Hadoop使用Java语言编程,具有很强的可移植性[2]。

1 Hadoop简介

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。可以随时读写、随机读取大规模数据集。

2 Hadoop完全分布式平台搭建

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运转状态

3 Hadoop分布式平台应用

Hadoop安装目录下都会自带eclipse插件。在Hadoop-1.2.1版本中,插件需要经过编译重新生成。编译涉及一些与系统有关的变量改写,例如jdk版本、系统版本等,本文不再作详细赘述。

将编译好的jar包插件放到eclipse目录下的目录中,并在eclipse完成调试。应用程序选用Hadoop源码中的

WordCount实例,这是Hadoop自带的一个统计词频的实例程序。新建myMapReduce工程,与之前建立好的Hadoop工程关联,并将WordCount.Java复制至刚刚建立的myMapReduce项目。然后上传测试文档至HDFS中,开始运行程序,运行结果如图3所示。

从图3可以看到任务执行成功情况、输入输出行数、开始及结束时间等信息。可以验证本文搭建的Hadoop集群可以正常工作并执行MapReduce程序。

4 结语

大数据时代已经到来,并行计算与分布式计算技术成为新兴的、应用广泛的数据处理技术。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

免责声明

我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自各大过期杂志,内容仅供学习参考,不准确地方联系删除处理!