APP下载

云计算下Hadoop平台的搭建与实践

2014-02-01王志力

中国科技信息 2014年9期
关键词:海量集群机器

王志力

吉林医药学院 132013

1 云计算发展状况

2000年,SaaS兴起。2004年,MapReduce论文由Google提出并发布。Google提出Hadoop平台采用集群系统的开源项目,主要研究HDFS和Map/Reduce 。Hadoop随即成了一款非常优秀的分布式系统基础架构。2006年,“消费云”计划[1]Google发布出来。2009年Google公司推出的Google Chrome浏览器也依托于云计算平台建立起来。随后,虚拟计算环境联盟由VMware与思科联合建立起来。VMware也推出云操作系统VMware vSphere 4。Google又升级了Google Chrome浏览器推出Chrome OS操作系统。2010年,HP和微软联合提供完整的云计算解决方案。

2 云计算下Hadoop平台搭建与实践

目前有很多开源云计算平台:AbiCloud、Hadoop、Eucalyptus、MongoDB、Enomalism、Nimbus等。其中Hadoop是完全模仿Google体系架构做的一个开源项目,主要包括Map/Reduce分布式框架和HDFS文件系统。Hadoop平台作为云计算中一种海量数据处理时最优秀的平台,能够减少很多开销和时间。

2.1 Hadoop概述

Hadoop是由Apache基金会开发的一种分布式系统基础架构[2],利用分布式集群的威力高速运算和存储。Hadoop主要有两个主要部分:Map/Reduce框架和分布式文件系统HDFS(Hadoop Distributed File System)。Hadoop可以在低端硬件上构建云计算环境的基础服务和接口API(Application Program Interface,应用程序编程接口)。主要特点是:扩容能力(Scalable)、成本低(Economical)、高效率(Efficient)、可靠性(Reliable)。Hadoop采用Java开发可以架设在很多操作系统中。

HDFS具有高容错性和平台迁移两个主要特点[3]。HDFS在处理高维数据时可以一次读取多次存储。它是主从(Master/Slave)结构,一个HDFS集群包括2个节点NameNode(管理文件的命名空间和调节客户端访问文件的主服务器)和数据节点DataNodes(管理存储)。NameNode以及DataNode具有内置的Web服务器,能检测到当前集群的状态信息。

Map/Reduce是一个用于处理海量数据的分布式计算框架[4]。这个框架解决了诸如数据分布、工作调度、容错、机器间通信等复杂问题,Map/Reduce采用“分而治之”的思想,将计算任务抽象成Map和Reduce两个计算过程,“分散运算—合并结果”。 Map/Reduce任务把输入数据分割成不相关的若干键/值对(Key/Value)集,由多个Map任务来并行地处理。Map/Reduce会对Map的输出进行排序,将一个键(Key)的值(Value)组合在一起作为Reduce任务的输入,由Reduce任务计算出最终结果并输出。基本流程如下:

(Input) <Key1, Value1> -> map -> < Key2,Value2> -> combine -> < Key2, Value2> -> reduce-> < Key3, Value3> (Output)

2.2 Hadoop平台安装与配置

准备多台服务器,安装5台虚拟机VMware机。统一将VMware Workstation安装在D盘,分配磁盘空间时统一分配。一台作为Master机,另四台台作为Slave机。新建虚拟机,加载Linux系统Ubuntu的iso镜像文件,并在VMware环境下安装Ubuntu系统。软件统一安装在虚拟机系统VMware上,Linux系统采用Ubuntu,jdk使用jdk1.6.0版,Hadoop使用hadoop-0.20.2版本。第一台服务器作为Master机,主机名:master.hadoop.com,IP:10.0.0.1,第二~五台的配置是一样的作为Slave机,主机名分别为Slave01~Slave04:IP地址:10.0.0.2~5。在liunx系统配置yum源便于安装软件包,安装java的软件包,建立master机和slave机之间的信任关系,添加一个运行hadoop的普通用户。以超级用户身份打开environment文件,在其中添加两个环境变量:CLASSPATH及JAVA_HOME并设置路径值。在每台机器上新建一个超级用户,取名均为Hadoop,并建立SSH Key用来远程登录。配置$HADOOP_HOME/conf/路径下的3个文件hadoop-env.sh(导入JAVA_HOME环境变量值)、core-site.xml(指定默认文件系统名)和mapred-site.xml(tracker默认路径端口)。SSH建立Master与Slave之间信任关系并安装工具软件配置、修改和测试yum源,具体操作如下:

root创建一个目录/mnt/redhat 用于挂在linux的系统盘,命令如下:

[root@master ~]# mkdir /mnt/redhat

[root@master ~]# mount /dev/hdc /mnt/redhat

[root@master ~]# vim /etc/yum.repos.d/rheldebuginfo.repo

[rhel-debuginfo]

name=Red Hat Enterprise Linux $releasever -$basearch – Debug

baseurl=file:///mnt/redhat/Server enabled=1 gpgcheck=0

[root@master ~]# yum list

安装java包:[root@master ~]# yum install java

[root@master ~ ]# java –version java version"1.6.0"

OpenJDK Runtime Environment (build 1.6.0-b09)

OpenJDK Client VM (build 1.6.0-b09, mixed mode)

在所有机器上创建用户:# useradd boys和 #passwd boys。在Master机器上的Boys账户下执行命令:$ ssh-Keygen -t rsa。在/home/boys/.ssh目录下查看密钥对id_rsa.,id_rsa.pub,其中前者为私钥,后者为公钥。然后将id_rsa.pub的内容复制到/home/boys/.ssh/authorized_Keys文件中并执行命令:$cp id_rsa.pub authorized_Keys。若机器中有authorized_Keys这个文件则执行命令:

$cat id_rsa.pub>>authorized_Keys, 就 可 将 id_rsa.pub中内容加在authorized_Keys这个文件末尾。进入到Salve机中用命令$ ssh-Keygen -t rsa产生密钥,把刚产生的.ssh目录的权限由775改为711,使用命令:chmod 711 ~/.ssh。把Master机.ssh目录下的id_rsa.pub 的内容拷贝到Salve 机.ssh目录下的authorized_Keys文件末尾中。做法类似第二步。然后把Authorized_Keys的访问权限修改成644。现在由Master机到Slave机的认证关系建立好了,可以在Master机器下用Ssh命令访问Slave机器进行测试,若访问成功且不需要密码,从Master访问Slave机的信任关系就设置好了。同理可以设置从Slave机访问Master机的信任关系。

2.3 Hadoop集群的搭建和部署

对于Hadoop不同的系统会有不同的节点划分方式。NameNode和JobTracker部署时根据自己的需要,几台都行。Master机(主服务器)主要部署NameNode或JobTracker,其它的是Slave机(从服务器)。我们这里将NameNode和JobTracker部署在一台机器上,DateNode和TaskTracker的部署在其余的四台机器上,详细的配置:boys的用户下解压Hadoop安装包,使用最近的安装包hadoop-1.0.2.tar.gz,把安装包解压到当前的目录下:$tar –zxvf /home/boys/hadoop-1.0.2.tar.gz –O./hadoop。

编辑/home/boys/hadoop/conf/hadoop-env.sh文件,把JAVA_HOME设置为Java安装的跟路径,文件内容如下:

# Set Hadoop-specific environment variables here.

# The only required environment variable is JAVA_HOME. All others are

# Optional. When running a distributed configuration it is best to

# set JAVA_HOME in this file, so that it is correctly defined on

# Remote nodes.

# The java implementation to use. Required.Export JAVA_HOME=/user

# Extra Java CLASSPATH elements. Optional.

# Export HADOOP_CLASSPATH=/..

# The maximum amount of heap to use, in MB.Default is 1000.

# Export HADOOP_HEAPSIZE=2000

配置所有机器的主机名和IP地址之间能正确的解析,用root账户修改每台机器的/etc/hosts文件,修改如下:

[boys@master conf]$ cat /etc/hosts

# Do not remove the following line, or various programs.

# that require network functionality will fail.

127.0.0.1 localhostserver

10.0.0.1 master.hadoop.com

10.0.0.2 ~5 slave01~04.hadoop.com

在所有的机器上配置Hadoop,主要是配置*.xml文件,具体操作如下:

在master.hadoop.com机器上编辑/home/boys/hadoop/conf/ 目 录 下 的 core-site.xml、hdfs-site.xml、mapred-site.xml、masters、slaves文件。

把Hadoop安装文件复制到其他机器上:

$ scp –r /home/boys/hadoop slave01 ~ 04.hadoop.com:/home/boys/

编辑所有机器的conf/hadoop-env.sh文件,将JAVA_HOME变量设置成为各自的java安装的根目录。

Hadoop运行格式化分布式文件系统,操作的命令代码:

[boys@master~]$/home/boys/hadoop/bin/hadoop namenode –format

启动Hadoop的守护进程,在master.hadoop.com上启动 NameNode、JobTracker,在 slave01~ slave04上启动DataNode和TaskTracker。

[boys@master~]$/home/boys/hadoop/bin/startall.sh

至此,Hadoop已经在集群上部署完毕。如果要新加入后删除节点,仅仅修改NameNode的Masters和Slaves。集群的测试:启动Hadoop的守护进程,查看进程是否启动:[boys@master ~]$ ps wxf 显示进程,[boys@master ~]$ /home/boys/hadoop/bin/hadoop dfsadmin –report或在linux上自带的firfox的浏览器查看,访问:http://master.hadoop.com:50070和http://master.hadoop.com:50030,State状态正常就说明搭建的hadoop集群成功。

Hadoop云计算平台,Hadoop平台安装、配置和测试,搭建linux系统,为用户在处理海量数据时算法的测试提供了良好的集成环境。

[1]Barroso LA, Dean J, Holzle U. Web search for a planet: The Google cluster architecture [J]. IEEE Micro, 2003, 23(2):22-28.

[2]Chunru Dong, Patrick P K Chan, Wing WY ng, et al. 2-Stage instance selection algorithm for KNN based on Nearest unlike Neighbors [J]. International Conference on Machine Learning and Cybernetics (ICMLC 2010), 2010, 1: 134-140.

[3]Jeffrey Dean, sanjay Ghemawat. Map Reduce: Simplified Data Processing on Large Clusters Communications of the ACM [J].2008, 9: 107-113.

[4]朱珠.基于Hadoop的海量数据处理模型研究和就用[D].北京:北京邮电大学,2008.

猜你喜欢

海量集群机器
一种傅里叶域海量数据高速谱聚类方法
机器狗
机器狗
海上小型无人机集群的反制装备需求与应对之策研究
海量快递垃圾正在“围城”——“绿色快递”势在必行
未来机器城
一种无人机集群发射回收装置的控制系统设计
Python与Spark集群在收费数据分析中的应用
勤快又呆萌的集群机器人
一个图形所蕴含的“海量”巧题