Hadoop大数据平台的搭建与测试_崔文斌
Hadoop 大数据平台的搭建与测试
*崔文斌,王云诚,牟少敏,浩庆波,昌腾腾
(山东农业大学农业大数据研究中心,山东泰安271018)
摘要:大数据处理平台Apache ?Hadoop 是一个开源的分布式系统框架,可以运行分布式应用程序。在大数据时
代Hadoop 有着良好的发展前景。本文简要介绍了Hadoop 的发展史,分析了Hadoop 集群的构造模块和组件,搭
建了Hadoop 集群并进行了测试。
关键词:大数据;Hadoop ;分布式应用程序;分布式系统
中图分类号:F301.2文献标识码:A 文章编号:1000-2324(2013)04-0550-06
THE BUILDING AND TESTING PLATFORMFORHADOOP DISTRIBUTED-ARCHITECTURE
CUI Wen -bin ,MU Shao -min ,WANG Yun -cheng ,HAO Qing -bo ,CHANG Teng -teng
(Agricultural Big -Data ResearchCenter ,Shandong Agricultural University ,Taian 271018,China )
Abstract :Big Data Processing Platform Apache Hadoop is an open source distributed system framework ,can run distributed application programs.In the era of Big Data Hadoop has good development prospects.This paper briefly introduces the history of Hadoop ,analyzes the structure of the Hadoop cluster modules and components ,building the Hadoop cluster and tested.
Key words :Big Data ;Hadoop ;Distributed Applications Program ;The Distributed System
《Nature 》自2008年发表有关大数据(Big Data )的专刊以来,大数据的处理和分析已经成为人们关注
的焦点。大数据具有四个特点(4V ):多样化(Variety ),海量性(Volume ),快速性(Velocity )和灵活性(Vi-tality )[1]。这四个特点要求我们对当前分布式架构的理念做出新的理解,在数据处理和数据整合上使用新的方法。Hadoop 就是在此环境下成功应用于大数据处理和分析的一个分布式架构平台,它具有方便、
[2]健壮性、可扩展性、搭建对硬件要求较低等优点,在大数据领域内的分布式处理上占有较大的优势。
阐述了Hadoop 集群的构造模块、组件;第二节就本文结构安排如下:第一节介绍了Hadoop 的发展史,
Hadoop 大数据平台的搭建和测试做出了详细的介绍和说明;第三节对全文进行了总结和展望。
1Hadoop 简介
Hadoop 是一个开源的分布式架构平台,数据的理念与传统的分布式系统不同,它强调将代码向数据迁移,而不是传统的将数据向代码迁移。避免了因为传输数据而耗费大量的时间。
1.1Hadoop 的发展史
Hadoop 是2005年作为Nutch 的一个子项目引入的,Nutch 则是Apache Lucene 的一个子项目,这三个
[3]项目都是由Doug Cutting 所创立的,每个项目都是在前一个项目的基础上发展而来的。
Lucene 是一个文本索引和查询库,而Nutch 则是Lucene 的一个扩展,它试图以Lucene 为核心建立一个完整的Web 搜索引擎。Doug Cutting 所设想的Nutch 是开放和民主的,可以代替Google 等商业产品的
收稿日期:2012-07-05
基金项目:山东省自然基金(ZR2012FM024)资助作者简介:崔文斌(1992-),男,本科。
*通讯作者:Author for correspondence.E -mail :msm@sdau.edu.cn
Doug Cutting 的团队又面临着一个比较严峻的挑战:如何解决软件的可扩展垄断技术。在完成Nutch 后,
性的问题,即要在Nutch 建立一个层,来负责分布式处理、冗余、自动故障恢复和负载均衡等。
2004年Google 发表了两篇论文来论述Google 的文件系统(GFS )[4]和MapReduce框架[5]。Google 认为使用这两项技术可以扩展完善自己的搜索系统。Doug Cutting 看到了这些技术适用于自己的Nutch ,其团队便设计了一个专门的项目可以充实这两种网络扩展技术,于是就有了Hadoop 。在2008年2月19日雅虎宣布其搜索网页的生产系统在采用了10000多个核的Linux 集群上运行Hadoop 。
1.2Hadoop 集群的构造模块
Hadoop 集群有5个构造模块:名字节点(NameNode ),数据节点(DataNode ),次名字节点(Secondary NameNode ),作业跟踪节点(JobTracker ),任务跟踪节点(TaskTracker ),现分别介绍如下。
1.2.1名字节点、数据节点和次名字节点名字节点的守护进程是Hadoop 中最重要的一个,它位于Ha-doop 的文件分布系统的主端,指导从端的数据节点执行I /O任务,跟踪文件如何被分配以及分配在哪一个数据节点下,还可以监测整个文件系统是否正常运行。Hadoop 集群上的每个数据节点都有一个守护进程,用来执行分布式系统的工作,即將文件分布式系统上的数据块写入到本地文件系统的实际文件中。
次名字节点的守护进程是一个用于监测文件系统运行状态的辅助进程,由于名字节点在集群中只有一个节点,当发生故障时对整个集群的损失是非常大的,次名字节点的存在可以大大的减少因名字节点失效恢复所需的时间,并降低了数据丢失的风险。
1.2.2作业跟踪节点和任务跟踪节点作业跟踪节点的守护进程是Hadoop 与应用程序之间的纽带,当代码提交到集群上后,作业跟踪节点就会确定执行的计划,如果任务失败,作业跟踪节点將自动重启任务。每个集群只有一个守护进程,它通常运行在集群的名字节点上。
任务跟踪节点的守护进程负责执行作业跟踪节点分配的任务,它通常运行在集群的数据节点上,每个数据节点只有一个任务跟踪守护进程,但是它可以生成多个Java 虚拟机来并行的处理多个Map 或Reduce任务。任务跟踪节点的守护进程的另一个任务则是不停的与作业跟踪节点进行通信,如果一段时间内作业跟踪节点没有收到来自任务跟踪节点的通信,作业跟踪节点则认为该节点已经死亡,将该节点的任务重新分配到其他的节点上去。
1.3Hadoop 组件
Hadoop 项目中有两个非常重要的部分,分别是HDFS (Hadoop 的文件分布式系统)和MapReduce并行计算框架。
1.3.1HDFS HDFS 是为MapReduce的大规模分布式数据处理框架设置的,可以存储一个普通的文件存储系统无法存储的大文件,在物理空间上它將一个大文件分为若干个比较小的数据块(通常为64MB ),存放在集群中每一个节点上,在逻辑空间上则是以一个文件存储。在读取数据时HDFS 可以实现并行操作,所以提高了其在读取数据时的吞吐量。
1.3.2MapReduce并行计算框架MapReduce程序通过操作键/值对来处理数据,一般形式如下:
Map :(K 1,V 1)→list (K 2,V 2)
Reduce:(K 2,list (V 2))→list (K 3,V 3)
MapReduce將数据处理任务抽象为一系列的Map 和Reduce过程,Map 主要是完成数据的过滤工作,Reduce主要完成数据的聚集工作。用户在使用这种编程模型时,可以根据相对应的编程规则来实现Map
[5]函数和Reduce函数,然后MapReduce会自动对任务进行划分以做到并行执行。
MapReduce工作流程如图1所示。
·552·山东农业大学学报(自然科学版)第44卷
图1MapReduce工作流程
Fig.1Mapreduce werk flow
通过HDFS 將输入的数据集分割后,分布到集群中的每一台机器上,然后由作业跟踪节点确定Map
Map 的任务结束后产生中间结果存放在本地的磁盘上,的任务,为了节省Reduce过程的时间,在洗牌(Shuffling )阶段之前对结果进行一下“本地的Reduce”即Conbiner 过程。在HDFS 將数据分配到每个节点后,洗牌阶段是节点间唯一的通信的时间。经过洗牌阶段后进行Reduce阶段,將最终的结果输出。2Hadoop 平台的搭建
Hadoop 有三种安装模式:本地(单机)模式、伪分布模式和全分布模式。本地模式主要是用于开发调试MapReduce程序的应用逻辑。伪分布模式在单机模式之上添加了代码的调试功能,可以运行HDFS ,可以与其他的守护进程交互等功能。Hadoop 集群的运行采用的全分布模式,下面详细的介绍安装过程:
安装环境包括Linux 操作系统,远程登录协议(SSH ),JDK 和Hadoop 分布式框架等。本文中大数据平台搭建的实验用机的基本配置:CPU (Intel (R)Core (TM )i5-3470CPU @3.20GHz ),内存(4G ),硬盘(1T );开源软件有:Hadoop (Hadoop -1.2.0),Linux (Ubuntu 13.04
2.164位),JDK1.7。安装配置环境
Hadoop 可以在Windows 和Linux 两种操作系统下安装,在Window 系统下安装之前要先安装Cygwin 软件,来模拟Unix 操作系统的环境,安装完成后需配置环境变量CYGWIN 为Cygwin 的安装路径。本文主要介绍在Linux 下安装,为了搭建Hadoop 集群更加的方便,在安装Linux 操作系统时需要所有机器的用户名保持一致,本文使用的用户名为Bigdata 。下面详细介绍安装的主要步骤。
2.1.1配置各节点的Hosts 文件本文以七个节点为例介绍Hadoop 大数据平台搭建的过程,为了方便节点间通过节点名称来访问,分别在每个节点的/etc/hosts文件中添加如下信息:
master 192.168.211.14
slave1192.168.211.13
slave2192.168.211.16
slave3192.168.211.17
slave4192.168.211.10
slave5192.168.211.15
backup 192.168.211.2
master 表示集群名字节点的名称,backup 为集群次名字节点的名称,slave1到slave5为集群数据节点的名称。
2.1.2配置无密码的远程登录协议Hadoop 在运行过程中名字节点的守护进程需要与数据节点的守护进程进行通信,为了实现名字节点与数据节点之间通信,不需要输入密码,需要配置无密码的远程登录协
首先在集群的每个节点上创建ssh 隐藏文件夹,并更改文件夹的权限为755(文件所有者可读可写可执行,属组内和其他用户组的用户可读可执行),然后在名字节点上进入ssh 文件夹,配置远程登录协议的私钥和公钥:
cd .ssh
ssh -keygen
cp id_rsa.pub ./authorized_keys
最后將配置好的公钥通过下面命令分布到集群中的其它节点上。
scp authorized_keys*:/home/用户名/.ssh /
*为在hosts 中配置的节点的名称或节点的IP 地址。
为了验证无密码的远程登录协议是否配置成功,从名字节点向所有的节点发起连接命令:ssh *
*为在hosts 中配置的节点的名称或节点的IP 地址。
在首次连接其它节点时,会提示输入密码,此时输入目的节点的密码会显示本次登录该节点的时间和IP 地址,若不显示则表示无密码的远程登录协议配置失败。
2.1.3安装配置Java Hadoop 是基于Java 语言开发的开源框架,因此运行它时需要有Java 的支持,必须在每台机器上安装JDK ,安装配置JDK 的过程如下:议。具体配置如下:
首先在usr 下建立一个名为java 的文件夹作为JDK 的安装目录,然后把下载的jdk -7u25-linux -x64.tar.gz 移动到安装目录下并解压下载到的安装包:
sudo tar -zxvf jdk -7u25-linux -x64.tar.gz
配置环境变量:sudo gedit /etc/profile?,在文件最后添加如下语句(确认好自己的路径):
JAVA_HOME=/usr/java/jdk1.7.0_25
PATH =$JAVA_HOME/bin:$PATH
CLASSPATH =.:$JAVA_HOME/lib/dt.jar :$JAVA_HOME/lib/tools.jar
export JAVA_HOME
export PATH
export CLASSPATH
环境变量配置完成后,重启电脑后使用java –version 命令验证安装的JDK ,若显示版本信息则证明安装正确,否则安装失败。为了方便Hadoop 集群的搭建,每个节点的JDK 安装目录要尽量保持一致,否则需要在每个节点上修改Hadoop 的配置文件。
2.2安装配置Hadoop
在http ://mirror.bit.edu.cn /apache/hadoop/common/上下载Hadoop 安装包。在名字节点上將下载的安装包解压到用户根目录下,进行如下的配置:
2.2.1配置名字节点上的/etc/profile为了方便直接使用Hadoop 命令,在名字节点上的/etc/profile配置如下:
export HADOOP_HOME=/home/bigdata/hadoop-1.2.0
export HADOOP_CONF_DIR=$HADOOP_HOME/conf
export PATH =$HADOOP_HOME/bin:$PATH
2.2.2配置conf /hadoop-env.sh 文件
你的JDK 的安装位置)。
配置conf /core-site.xml 文件
<configuration ><property >
<name >fs.default.name </name>
<value >hdfs ://master:49000</value></property><property >
<name >hadoop.tmp.dir </name>
<value >/home/bigdata/hadoop_home/var</value>
</property>
</configuration>
2.2.4配置conf /mapred-site.xml 文件
<configuration ><property >
<value >master :49001</value>
</property>
<property >
<name >mapred.local.dir </name>
<value >/home/bigdata/hadoop_home/var</value>
</property>
</configuration>
2.2.5配置conf /hdfs-site.xml 文件
<configuration ><property >
<name >dfs.replication </name>
<value >3</value>
</property>
</configuration>
2.2.6配置masters 和slaves 主从结点配置conf /masters和conf /slaves来设置主从结点,需要注意的是最好使用节点名称,并且保证机器之间通过节点名称可以互相访问,每个节点的名称占一行。
在masters 配置文件中输入:
master
backup
在slaves 配置文件中输入slave1到slave5节点的名称,每个节点的名称占一行。
通过如下命令:
scp -r /home/bigdata/hadoop-1.2.0bigdata@*/home/bigdata/
*表示节点的IP 地址
將Hadoop 分布到集群中的其他节点上。至此大数据平台的搭建已完成。下面将要完成对搭建的大数据平台的测试工作。
2.3Hadoop 集群的测试
先格式化一个新的分布式文件系统:hadoop namenode –format 。
然后启动服务。Hadoop 集群有两种启动服务的方式,第一种方式是在名字节点上通过命令:
start -all.sh 同时启动HDFS 和Map /Reduce;
另一种则是分别启动HDFS 和Map /Reduce。在分配的名字节点上,运行下面的命令启动HDFS :配置HDFS 备份的副本的数目,要小于目前集群中节点的个数。配置JobTracker 的端口和地址添加export JAVA_HOME=/usr/java/jdk1.7.0_25(这里修改为配置HDFS 文件系统的端口和路径。2.2.3<name >mapred.job.tracker </name>
start -dfs.sh (单独启动HDFS )
start -dfs.sh 的脚本会参照名字节点上的slaves 文件的内容,在所有列出的数据节点上启动守护进
运行下面的命令启动Map /Reduce:程。在分配的作业跟踪节点上,
start -mapred.sh (单独启动Map /Reduce)
start -mapred.sh 的脚本会参照作业跟踪节点上的slaves 文件的内容,在所有列出的任务跟踪节点上启动守护进程。
若需要关闭所有的节点则在配置的名字节点上运行下面的命令:
stop -all.sh 。
最后输入JDK 提供的一个显示当前所有的Java 进程的Pid 命令JPS (Java Virtual Machine Process Sta-
DataNode 、NameNode 、TaskTracker 、Jps 和JobTracker 则tus Tool ),出现下面六个进程:SecondaryNameNode 、
表示平台已经安装正确。若需要停止所有的服务则运行下面的命令否则平台安装失败。平台测试通过后,可以运行分布式的应用程序来处理和分析大数据。
3总结展望
Hadoop 分布式架构平台是大数据的一个非常重要的开源架构平台,与其他并行化架构平台相比有着非常大的优势,本文主要对它的组成,构建模块及安装过程进行了部分介绍,并且成功的搭建了Hadoop 分布式架构平台,为以后对大数据的研究提供了一个科研的平台。我们下一步的工作是在大数据平台下进行有关算法的研究,将其中的一些算法实现并行化运行。
参考文献
[1]中国电子科学研究院学报编辑部.大数据时代[J ].中国电子科学研究院学报,2013,1:27-31
[2](美)拉姆.Hadoop 实战[M ].韩冀中译,2011:3-4北京:人民邮电出版社,
[3]Sanjay Ghemawat Howard Gobioff Shun -Tak Leung ,The Google file system [D ].USA :Google.2003:29-43
[4]Jeffrey Dean Sanjay Ghemawat ,MapReduce:Simplified Data Processing on Large Clusters [D ].USA :San Frcmcisco ,cakfcrnia.2004:137-150[5]王珊,2011,10:1741-1752王会举,覃雄派,等.架构大数据:挑战、现状与展望[J ].计算机学报,