hadoop 2.0安装的详细过程

来源:互联网 发布:php接口开发教程 编辑:程序博客网 时间:2024/06/05 16:16
 
----------------------------------------------------------------------------------------------------------------

   hadoop2.0部署
Hadoop部署是学习与应用  hadoop前的必由之路,也可以说是拦路虎,许多人都会卡在
这一步,因为没有 hadoop集群环境或部署的环境有瑕疵,hadoop令初学者望而却步。本节
将深入浅出的讲解 hadoop部署,期望能把读者引入  hadoop的精彩世界。
5.3.1   部署综述
1.部署方式
Hadoop主要有两种部署方式,传统解压包方式和  Linux标准方式。早期的  hadoop都是
采用直接解压 hadoop-x.gz包方式部署的,近两年来由于   Cloudera、Hortonworks等公司
[3]                                      [4]
对 hadoop及其相关组件的包装、整合,hadoop部署方式正向标准   Linux部署方式靠拢。相
对来说,标准 Linux部署方式简单易用,而传统部署方式则繁琐易错,但标准部署方式隐藏
了太多细节,相反传统解压包方式有助于读者深入理解  hadoop,笔者建议在采用标准方式
部署前,先学习传统部署方式。
此外,无论是解压包方式还是标准方式,hadoop部署都有单机模式,伪分布模式和分布
式模式,考虑到实战意义,加之为避免混淆,笔者只介绍分布式模式。下一小节将以传统解
压包方式部署  hadoop,部署成功后,请读者打开第六章第一节,再以标准 Linux方式部署
hadoop,并比较二者区别。
2.部署步骤
无论是解压包方式还是标准方式,hadoop部署时都大概分为如下几个步骤:
(1)制定部署规划
(2)准备机器
(3)准备机器软件环境
(4)下载  hadoop
(5)解压  hadoop
(6)配置  hadoop
(7)启动  hadoop
(8)测试  hadoop
这里称步骤二、三为部署前工作,步骤五、六、七为 hadoop部署,最后的步骤八为   hadoop
测试,当然了,其实最重要的还是第一步部署规划,它为 hadoop部署指明了方向,根据上
述划分,hadoop部署步骤又可简述如下:
(1)制定部署规划
(2)部署前工作
(3)部署  hadoop








 
(4)测试  hadoop
无论是下一小节的传统部署方式,还是第六章的标准部署方式,都会按照这个步骤部署,
请读者务必从整体上把握部署步骤。
3.准备环境
准备环境讲解的是准备机器和准备机器软件环境,也就是部署前工作,本质上说,hadoop
部署和这一步无关,但大部分用户或是没有 Linux环境,或是刚安装  Linux,直接使用刚安
装的 Linux来部署完全模式的   hadoop是不可能实现的,用户必须做些诸如修改机器名,添
加域名映射等工作(当然,若您有 DNS服务器,那您可以不添加域名映射)后才可部署。
1)硬件环境
由于分布式计算必然需要用到很多机器,部署时用户需提供多台机器,至于提供几台,
需根据步骤一“部署规划”确定,如下一节的传统方式部署“部署规划”指明使用 3台机器,
而第六章的标准方式的“部署规划”则要求使用 6台机器。
实际上,完全模式部署 hadoop时,最低只需要两台机器(一个主节点,一个从节点)
即可实现完全分布模式部署,而使用多台机器部署,会使这种完全分布模式体现的“更加充
分”(一个主节点,多个从节点),只是从节点多少不同而已,二者并无本质区别。读者可以
根据自身情况,做出符合您当前实际的“部署规划”,其他部署步骤都相同。此外,硬件方
面,每台机器最低要求都是 1G内存,20G硬盘空间。
上述两段笔者要求用户最少要提供两台机器,但却未要求这两台都是实体机器,实际上,
用户可以提供两台或多台实体机器,也可以提供两台或多台虚拟机器,即用户可以使用虚拟
化技术,将一台机器虚拟成两台或多台机器,并且虚拟后的机器和实体机器使用上无任何区
别,用户可权当此虚拟机就是实体机器。
【例 5-2】现有机器 A,其配置为 4G内存,双核,硬盘  100G;系统为 64位  win7,现
要求使用 VMware将此机器虚拟成三台  CentOS机器  cMaster,cSlave0,cSlave1。
解答:用户需下载并安装 VMware,接着使用 VMware安装  CentOS,正如在 win7上安
装其他软件,用户根据实际情况,点击下一步即可,大体步骤如下:
(1)下载 VMware Workstation:谷歌搜索并下载 VMware Workstation。
(2)安装 VMware Workstation:在 win7下正常安装  VMware Workstation软件。
(3)下载 CentOS:到 CentOS官网下载  64位的  CentOS,请尽量下载最新版(当前最
新版 CentOS-6.5)。
(4)新建 CentOS虚拟机:打开  VMware WorkstationFile(文件)New Virtual Machine
Wizard(新建虚拟向导)Typical(recommended)(推荐)Installer  disc image  file(iso)(选中刚才
下载的  CentOS-6.4-x.iso文件)填写用户名与密码,用户名建议使用    joe密码亦建议使用
joe填入机器名 cMaster直至 Finish。
(5)重复步骤四,填入机器名 cSlave0,接着安装直至结束;再次重复步骤四,填入机
器名 cSlave1,接着安装直至结束。
上述步骤四使用 VMware新装了  cMaster,步骤五其实跟步骤四一样,只是机器名改成
了 cSlave0和  cSlave1,至此,win7下已新装了三台  CentOS机器。
需要注意的是,此处的 cMaster只是  VMware面板对此机器的称号,并不是此机器真实
机器名,实际上新安装 CentOS的机器机器名统一为“localhost.localdomain”,也就是这三台
机器真实机器名都是“localhost.localdomain”,而不是 cMaster或  cSlave,它只是 VMware面
板对这些机器的称号。
此外,采用虚拟化技术时,最稀缺的是内存资源,根据笔者经验,如果您的 win7机器
内存仅为 2G时,其下 VMware可启动  1台 CentOS;4G时,VMware可同时启动  3台  CentOS;
6G时,VMware可同时启动   5台   CentOS。此外,32位  win7仅支持  2G内存,如果你的内








 
存大于 2G,需使用 64位  win7。
2)软件环境
Hadoop支持  windows和   Linux,但在 windows上仅测试过此软件可运行,并未用于生
产实践,而大量的实践证明,在 Linux环境下使用  hadoop则更加稳定高效。本节使用   Linux
较成熟的发行版 CentOS部署  hadoop,需注意的是新装系统(CentOS)的机器不可以直接部
署 hadoop,需做些设置后才可部署,这些设置主要为:修改机器名,添加域名映射,关闭防
火墙,安装 jdk。
【例 5-3】现有一台刚装好 CentOS系统的机器,且装机时用户名为  joe,要求将此机器
名修改为 cMaster,添加域名映射,关闭防火强,并安装 jdk。
解答:修改机器名,添加域名映射,关闭防火墙,安装 jdk这四个操作是   hadoop部署
前必须做的事情,请务必做完这四个操作后再部署  hadoop,读者可参考如下命令完成这四
个操作:
(1)修改机器名
[joe@localhost ~]$ su - root
#切换成 root用户修改机器名
#编辑存储机器名文件
[root@localhost ~]# vim /etc/sysconfig/network
将“HOSTNAME=localhost.localdomain”中的“localhost.localdomain”替换成您需要使
用的机器名,按题目要求,此处应为 cMaster,即此行内容为:
HOSTNAME=cMaster
#指定本机名为  cMaster
注意重启机器后更名操作才会生效,用户需通过此命令修改集群中所有机器的机器名,
重启后,本机将有自己唯一的机器名 cMaster了。
(2)添加域名映射
首先使用如下命令查看本机 ip地址,这里以  cMaster机器为例
[root@cMaster ~]# ifconfig
#查看 cMaster机器  ip地址
假如看到此机器的 ip地址为“192.168.1.100”,又此机器机器名为  cMaster,则域名映射
应为:
192.168.1.100
cMaster
接着编辑域名映射文件“/etc/hosts”,将上述内容添加入此文件。
[root@cMaster ~]# vim /etc/hosts
#编辑域名映射文件
(3)关闭防火墙
CentOS的防火墙    iptables默认情况下会阻止机器间通信,笔者建议系统管理员开启
hadoop需使用端口,也可以暂时关闭或永久关闭   iptables(不建议),本节为简单起见,永久
关闭防火墙,其关闭命令如下(执行命令后务必重启机器才可生效):
[root@cMaster ~]# chkconfig --level 35 iptables off
#永久关闭 iptables,重启后生效
(4)安装  jdk
hadoop部署前需安装  jdk,而且 hadoop只能使用  oracle的   1.6及其以上版的  jdk,不能
使用 openjdk。用户需首先下载 jdk-x.rpm包,如  jdk-7u40-linux-x64.rpm。打开刚才已经安装
的 CentOS机器,将   win7下  jdk-7u40-linux-x64.rpm拷贝至虚拟机下某位置,Termianl下执
行(此方式安装的 jdk无需配置  java_home)如下命令:
[root@cMaster ~]# java
#查看 java是否安装
[root@cMaster ~]# rpm -ivh /home/joe/jdk-7u40-linux-x64.rpm
[root@cMaster ~]# java
#以 root权限,rpm方式安装    jdk
#验证 java是否安装成功
【例 5-4】现有三台机器,且其都刚安装好  CentOS系统,安装系统时用户名皆为  joe,
要求将此三台机器机器名分别修改为 cMaster,cSlave0和   cSlave1,接着添加域名映射,关
闭防火强,并安装 jdk。








 
解答:除了添加域名映射外,其它三项按【例 5-3】根据实际情况,在每台机器上执行
即可。此处的域名映射需要在三台机器上都添加,首先登录到每台机器上,查看这三台机器
对应的 ip地址。
[root@cMaster ~]# ifconfig
#查看 cMaster机器  ip地址
#查看 cSlave0机器  ip地址
#查看 cSlave1机器  ip地址
[root@cSlave0 ~]# ifconfig
[root@cSlave1 ~]# ifconfig
假定这三台机器对应的 ip地址为:
192.168.1.100
192.168.1.101
192.168.1.102
cMaster
cSlave0
cSlave1
接着分别编辑每台机器的“/etc/hosts”文件,将上述内容添加进此文件即可,注意三台
机器都要添加。
[root@cMaster ~]# vim /etc/hosts
#编辑 cMaster的域名映射文件
#编辑 cSlave0的域名映射文件
#编辑 cSlave1的域名映射文件
[root@cSlave0 ~]# vim /etc/hosts
[root@cSlave1 ~]# vim /etc/hosts
添加域名映射后,用户就可以在 cMaster上直接  ping另外两台机器的机器名了,如:
[root@cMaster ~]# ping cSlave1
#在 cMaster上  ping机器   cSlave1
4.关于 Hadoop依赖软件
Hadoop部署前提仅是机器完成修改机器名,添加域名映射,关闭防火墙和安装   jdk这
四个操作,其它都不需要。下面的 ssh可能是部分读者关心,但实际上却完全不相关的操作
或设置。
关于 ssh:许多人都认为部署 hadoop需要建立集群  ssh无密钥认证,事实上并不是这样
的,ssh只是给  sbin/start-yarn.sh等几个  start-x.sh与  stop-x.sh脚本使用,hadoop本身是一堆
java代码,而  java代码并不依赖  ssh,也完全不应当依赖 ssh(第三方软件),只是运维时为
了方便启动或关闭整个集群,才需打通 ssh,本节部署时将不会涉及到任何  ssh操作,也无
需打通 ssh。
此外,本节使用的 hadoop版本为当前最新稳定版  hadoop-2.2.0.tar.gz,读者可以当  apache
官网下载该版本的 hadoop。CentOS版本为   64位   CentOS-6.5,读者可以到  CentOS官网下
载。Jdk版本为  jdk-7u40-linux-x64.rpm,读者可以到 Oracle官网下载。
5.3.2   传统解压包部署
Hadoop部署分为单机模式、伪分布模式和分布式模式,为避免混淆,这里只讲解完全
分布模式,读者无需考虑其他部署模式,此外,相对于标准  Linux方式,解压包方式部署
hadoop更有利于用户更深入理解  hadoop体系架构,建议先采用解压包方式部署  hadoop,熟
悉后可采用标准  Linux方式部署   hadoop。以下将采用例题的方式,实现在三台机器上部署
hadoop。
【例 5-5】现有三台机器,且它们都刚装好 64位  CentOS-6.5,安装系统时用户名为 joe,
请按要求完成:①修改三台机器名为 cMaster,cSlave0和   cSlave1,并添加域名映射、关闭
防火墙和安装 jdk。②以 cMaster作为主节点,cSlave0和   cSlave1作为从节点,部署  hadoop。
解答:按上一小节讲解的部署步骤,读者可按如下步骤完成部署。
(1)制定部署规划
按题目要求,此 hadoop集群需三台机器(cMaster,cSlave0和   cSlave1),其中  cMaster
作为主节点,cSlave0和  cSlave1作为从节点。
(2)准备机器








 
请读者准备三台机器,它们可以是实体机也可以是虚拟机,若使用虚拟机,读者可按【例
5-2】新建三台虚拟机。
(3)准备机器软件环境
三台机器都需完成:修改机器名、添加域名映射、关闭防火墙和安装 jdk。这几步请参
考【例 5-3】与【例 5-4】完成。
(4)下载  hadoop
谷歌搜索“hadoop download”并按链接下载之,下好后以  joe用户身份,将  hadoop分
别拷入三台机器。
(5)解压  hadoop
分别以 joe用户登录三台机器,每台都执行如下命令解压  hadoop文件:
[joe@cMaster ~]# tar –zxvf /home/joe/hadoop-2.2.0.tar.gz
[joe@cSlave0 ~]# tar –zxvf /home/joe/hadoop-2.2.0.tar.gz
[joe@cSlave1 ~]# tar –zxvf /home/joe/hadoop-2.2.0.tar.gz
(6)配置 hadoop(三台机器都要配置,且配置相同)
#cMaster上  joe用户解压   hadoop
#cSlave0上  joe用户解压   hadoop
#cSlave1上  joe用户解压   hadoop
首先,编辑文件“/home/joe/hadoop-2.2.0/etc/hadoop/hadoop-env.sh”,找到如下一行:
export JAVA_HOME=${JAVA_HOME}
将这行内容修改为:
export JAVA_HOME=/usr/java/jdk1.7.0_40
这里的“/usr/java/jdk1.7.0_40”就是  jdk安装位置,如果不同,读者需根据实际情况更
改之,需要注意的是,三台机器都要执行此操作。
接着,编辑文件“/home/joe/hadoop-2.2.0/etc/hadoop/core-site.xml”,并将如下内容嵌入到
此文件里 configuration标签间,和上一个操作相同,三台机器都要执行此操作:
<property><name>hadoop.tmp.dir</name><value>/home/joe/cloudData</value></property>
<property><name>fs.defaultFS</name><value>hdfs://cMaster:8020</value></property>
编辑文件“/home/joe/hadoop-2.2.0/etc/hadoop/yarn-site.xml”,并将如下内容嵌入到此文件
里 configuration标签间,同样,三台机器都要执行此操作:
<property><name>yarn.resourcemanager.hostname</name><value>cMaster</value></property>
<property><name>yarn.nodemanager.aux-services</name><value>mapreduce_shuffle</value></property>
最后,将文件“  /home/joe/hadoop-2.2.0/etc/hadoop/mapred-site.xml.template”重命名为
“/home/joe/hadoop-2.2.0/etc/hadoop/mapred-site.xml”,接着编辑此文件并将如下内容嵌入到
此文件的 configuration标签间,同样,三台机器都要执行此操作:
<property><name>mapreduce.framework.name</name><value>yarn</value></property>
(7)启动  hadoop
首先,在主节点 cMaster上格式化主节点命名空间:
[joe@cMaster ~]# hadoop-2.2.0/bin/hdfs namenode -format
#格式化主节点命名空间
接着,在主节点 cMaster上启动存储主服务 namenode和资源管理主服务 resourceManager。
[joe@cMaster ~]# hadoop-2.2.0/sbin/hadoop-daemon.sh start namenode
[joe@cMaster ~]# hadoop-2.2.0/sbin/yarn-daemon.sh start resourcemanager
#cMaster启动存储主服务
#启动资源管理主服务
最后,在从节点上启动存储从服务  datanode和资源管理从服务    nodemanager,注意,
cSlave0和  cSlave1这两台机器上都要执行,对应命令如下:
[joe@cSlave0 ~]# hadoop-2.2.0/sbin/hadoop-daemon.sh start datanode      #cSlave0启动存储从服务
[joe@cSlave0 ~]# hadoop-2.2.0/sbin/yarn-daemon.sh start nodemanager    #cSlave0启动资源管理从服务
[joe@cSlave1 ~]# hadoop-2.2.0/sbin/hadoop-daemon.sh start datanode      #cSlave1启动存储从服务
[joe@cSlave1 ~]# hadoop-2.2.0/sbin/yarn-daemon.sh start nodemanager    #cSlave1启动资源管理从服务
(8)测试  hadoop








 
读者可以分别在三台机器上执行如下命令,查看 hadoop服务是否已启动。
$ /usr/java/jdk1.7.0_40/bin/jps
$ ps –ef | grep java
#jps查看  java进程
#ps查看  java进程
您会在 cMaster上看到类似如下信息:
3056 ResourceManager
#资源管理主服务
#存储主服务
2347 NameNode
而 cSlave0和  cSlave1上看到类似如下信息:
4021 DataNode
#存储从服务
2761 NodeManager
#资源管理从服务
此外,还可以任选一台机器,如 cMaster,打开 CentOS默认浏览器  firefox,地址栏输入
“cMaster:50070”,即可在 web界面看到  hdfs相关信息;同理,地址栏输入“cMaster:8088”,
即可在 web界面看到  yarn相关信息。
需注意的是,进程显示出来,web界面也能看到,但这并不代表集群部署成功,一个典
型的例子是这些都显示出来,但做 mapreduce程序时却出错,因此我们还须进一步用程序验
证集群,这将在下个例题中讲解。
【例 5-6】使用刚创建的集群,完成下列要求:①使用 hadoop命令在集群中新建文件夹
“/in”。②将 cMaster上,文件夹“/home/joe/hadoop-2.2.0/etc/hadoop/”里的所有文件上传至
集群的文件夹“/in”下。③使用示例程序 WordCount,统计“/in”下每个单词出现次数,并
结果存入“/out”目录。
解答:在 cMaster上,以  joe用户,按如下步骤执行即可:
[joe@cMaster ~]# cd hadoop-2.2.0
[joe@cMaster ~]# bin/hdfs dfs -mkdir /in
#集群里新建 in目录
[joe@cMaster ~]# bin/hdfs dfs -put /home/joe/hadoop-2.2.0/etc/hadoop/* /in
#将本地文件上传至  hdfs
[joe@cMaster ~]# bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.2.0.jar wordcount
/in /out/wc-01
#使用示例程序 WordCount计算数据
此时浏览器迅速打开“cMaster:8088”,你将会看到 web界面上显示正在运行的  wordcount
信息。打开“cMaster:50070”并点击链接“Browse the filesystem”你将会看到刚才的输入数
据“/in”和输出结果数据“/out/wc-01/part-r-00000”。当然也可以用 shell查看输入输出,对
应的 shell命令分别为:
[joe@cMaster ~]# bin/hdfs dfs -cat /in/*
#使用命令查看 hdfs里文件
[joe@cMaster ~]# bin/hdfs dfs -cat /out/wc-01/*
至此,hadoop单机部署才算真正完毕。细心的读者会发现,其实我们根本未涉及任何打
通 ssh操作,读者应当明白打通   ssh只是为  sbin/start-x.sh相关脚本使用,并不是  hadoop必
须的,hadoop依赖的只是  oracle版  jdk。
通过上述单机部署和集群部署,可以看出,hadoop本身部署起来很简单,其大量工作其
实都是前期的  Linux环境配置,hadoop安装只是解压、修改配置文件、格式化、启动和验
证,本节不是讲解 linux的专业书,若读者遇到  linux命令问题,请参考  linux专业书籍。
----------------------------------------------------------------------------------------------------------------


原创粉丝点击