游会迪,张振友

(华北理工大学信息工程学院,河北唐山063200)

基于Hadoop大数据平台的搭建及其测试研究

游会迪,张振友

(华北理工大学信息工程学院,河北唐山063200)

Hadoop作为当今大数据时代下最流行的技术之一,对学术的发展和商业模式都产生了深远的影响。该文首先简单地介绍了Hadoop及其核心组成部分HDFS、MapReduce的技术原理,分析比较了CDH Hadoop和Apache Hadoop的特点,然后详细说明了如何在Ubuntu系统下安装并搭建CDH Hadoop平台,并在单机模式下实现Hadoop的伪分布式环境的配置,最后简要地提出了Hadoop的安装配置过程中的常见问题及其解决办法。

Hadoop;伪分布式;SSH无密码登录

1 Hadoop简介

Hadoop是一种开源的分布式编程软件框架,同时还是可以开发运行分布式应用程序、处理大数据[1]的平台,它的两个核心组成部分为HDFS和MapReduce:

1)HDFS[2]:全称为Hadoop Distributed File System,即分布式文件系统,它是该架构中数据存储管理的基础,具备高度容错的特征,在该系统中,数据以块的形式存在,可以同时存放在集群中的多个主机上,并且采用了一次写入、多次读取的方式,同时,它以流式对数据进行访问,有效地提高了应用程序数据访问的吞吐量。

2)MapReduce[3]:它是一种并行计算的框架,可以分布式地对大规模的数据进行处理计算,该过程包含两个关键的部分,即Map和Reduce,首先MapReduce将输入的数据集划分成若干个小部分,并将这些数据拷贝到集群中的其他机器上,Master节点再进行Map任务的分配,执行任务的worker节点则会读取对应的数据块里的数据,并从中提取出键值对,之后,Master则会将这些键值对传递给负责Reduce任务的worker节点,由Reduce对这些键值对做处理整合,简单来说,Map用于对数据分解,而Reduce用于对结果进行汇总,从而实现“分而治之”的效果。

Apache Hadoop、Cloudera’s Distribution Including Apache Hadoop(CDH)是Hadoop的两种常用的免费的发行版[4],CDH Hadoop相较于Apache Hadoop来说,版本的划分更加清晰,目前CDH Hadoop有三个系列版本:CDH3、CDH4、CDH5,而Apache Hadoop版本则混乱得多;CDH Hadoop更新速度更快,支持Yum/Apt包,Tar包,RPM包,Cloudera Manager等多种安装的方式,而Apache Hadoop只支持Tar包的安装方式;CDH Ha⁃doop支持Kerberos的安全认证,而Apache Hadoop使用的是简单的用户名匹配的认证方式;CDH的文档清晰,许多使用Apache Hadoop的用户都会阅读CDH提供的文档。由于CDH Hadoop有如上所述的诸多优点,因此本文将对CDH Hadoop的安装及其伪分布式配置进行详细的说明。

2 Hadoop平台的搭建

2.1 软件需求

1)Ubuntu版本:ubuntu-16.04 LTS(64位);

2)jdk版本:jdk1.8.0;

3)hadoop版本:hadoop-2.6.0-cdh5.9.0。

2.2 搭建过程

1)添加hadoop用户并进行权限设置

打开terminal终端,执行命令su root,进入root模式,然后再输入下面的指令:

在打开的sudoers文件里,找到root ALL=(ALL:ALL)ALL,然后在下面添加:hadoop ALL=(ALL:ALL)ALL

2)安装ssh,配置无密码登录[5]

Ubuntu默认已经安装了SSH client,需要我们自行安装SSH server,安装完后每次登录都是需要输入密码的,为了方便,我们将其配置成SSH无密码登录:

#加入授权,之后就可以无密码登录了

3)安装jdk

首先在usr/local目录下新建java的安装目录,并将jdk压缩包拷贝到该路径下,进行解压,执行命令:sudo tar-xvf jdk1.8.0. tar.gz,之后设置jdk的环境变量:

需要注意的是,在保存该文档之后,需要在终端执行命令source/etc/profile,使profile生效。最后,为了保险起见,检验jdk是否安装成功:输入命令java-version和$JAVA_HOME/bin/ java—version,如果两个命令显示出java的版本号等信息一致,则说明配置成功。

4)Hadoop-cdh的安装和配置

把hadoop-2.6.0-cdh5.9.0拷贝到/opt/下,进行解压,进入/ opt/hadoop-2.6.0-cdh5.9.0/etc/hadoop/,在hadoop-env.sh中添加如下的环境变量信息:

export JAVA_HOME=/usr/local/java/jdk1.8.0

export HADOOP_HOME=/opt/hadoop-2.6.0-cdh5.9.0

配置core-site.xml,这个文档里包含了Hadoop启动时的配置信息:

保存文档,之后在终端执行命令sudo gedit

/opt/hadoop-2.6.0-cdh5.9.0/etc/hadoop/hdfs-site.xml,然后在打开的hdfs-site.xml中添加如下配置信息,之后在本地根目录下创建Hadoop_tmp文件夹,再在该文件夹下创建name、data和tmp子文件夹。

5)格式化hdfs,执行命令:hdfs namenode—format

6)启动hadoop

进入到/opt/hadoop-2.6.0-cdh5.9.0/etc/hadoop目录下,执行如下命令:

3 Hadoop平台的测试

执行命令:jps,如果结果显示了如下几个进程,则表示ha⁃doop启动成功:SecondaryNameNode、DataNode、NameNode、Re⁃sourceManager、NodeManager和Jps。

或者打开浏览器,分别输入以下网址:

http://localhost:8088(MapReduce的Web页面)

http://localhost:50070(HDFS的Web页面)

如果都能查看的话,则说明Hadoop启动成功。如果需要关闭hadoop,则执行命令:

4 常见问题及其解决办法

比较常见的一个问题是当配置完hadoop之后,执行startdfs.sh和start-yarn.sh,发现localhost:8088可以打开,而localh⁃sot:50070无法打开,另外,执行jps命令,结果中并没有显示na⁃menode和datanode进程,在dfs.data.dir和dfs.name.dir路径下的文件或为空,或文件有缺失。

解决办法:

找到logs下的datanode日志,查看最新的记录:

遇到问题,最好的办法就是去查看相应的log文件,然后找到问题所在,对症下药,需要注意的是,每一次的启动日志都是追加在日志文件之后,所以需要拉到文件的最后面查看。

还有一种类似的错误,在安装配置完hadoop后,执行startdfs.sh和start-yarn.sh启动hadoop,执行jps,发现NameNode启动起来了,而DataNode进程却没有启动起来。这种问题一般是由于多次格式化NameNode引起的,这个时候可以查看namenode和datanode的clusterID,如果datanode的clusterID和namenode的clusterID不一致,那幺就将datanode中的clusterID修改成na⁃menode中的clusterID,再重新启动hadoop。

5 结束语

Hadoop架构平台是大数据技术中极为重要的一种分布式平台,本文对Hadoop核心组成部分的技术原理进行了简要地说明,并对hadoop的单机伪分布式环境进行了搭建,这为日后的大数据的研究、处理等工作提供了一个很好的平台基础,下一步我们的研究重心将是对相关的算法进行深入的学习和优化,并将算法应用到hadoop平台上,实现其并行化的运行。

[1]中国电子科学研究院学报编辑部.大数据时代[J].中国电子科学研究院学报,2013(1):27-3l.

[2]翟周伟.Hadoop核心技术[M].北京:机械工业出版社,2015.

[3]江务学,张瑗,王志明.MapReduce并行编程架构模型研究[J].微电子学与计算机,2011(6):168-175.

[4]夏靖波,韦泽鲲,付凯,等.云计算中Hadoop技术研究与应用综述[J].计算机科学,2016,43(11):6-11.

[5]项亮.推荐系统实践[M].北京:人民邮电出版社,2012.

[6]孟永伟,黄建强,曹腾飞,等.Hadoop集群部署实验的设计与实现[J].实验技术与管理,2015,32(1):145-149.

[7]陆嘉恒.Hadoop实战[M].北京:机械工业出版社,2011.

TP311

A

1009-3044(2017)19-0211-03

2017-05-15

游会迪(1993—),女,河北石家庄人,硕士,主要研究方向为数据库及其应用;张振友(1964—),通信作者,男,河北唐山人,硕士,教授/研究生导师,主要研究方向为数据库及其应用。