hadoop121集群部署.docx
《hadoop121集群部署.docx》由会员分享,可在线阅读,更多相关《hadoop121集群部署.docx(17页珍藏版)》请在冰豆网上搜索。
hadoop121集群部署
Hadoop集群部署
目 录
1部署环境准备3
1.1硬件及操作系统3
1.2网络配置规划4
1.3网络配置实况6
2依赖软件安装7
2.1软件包准备7
2.2JDK安装7
2.3SSH设置9
3Hadoop部署12
3.1控制节点部署12
3.1.1解压hadoop文件包12
3.1.2修改配置文件13
3.1.3配置hadoop系统路径15
3.2数据节点部署15
4hadoop启动16
4.1格式化HDFS16
4.2启动hadoop17
4.3验证hadoop18
4.4停止hadoop18
5常遇故障19
5.1没格式化直接启动19
5.2防火墙阻止程序运行19
5.3多次格式化后,导致datanode无法启动20
5.4Warning:
$HADOOP_HOMEisdeprecated.22
1部署环境准备
2硬件及操作系统
Hadoop要求机器的数量多,但对机器的配置要求不高。
可以是物理机,也可以是虚拟机,普通的PC机配置就可以了。
本次部署使用的是2台虚拟机和一台物理机:
在安装windows7操作系统的PC(配置为CPU3.2G、内存2G)上通过VMWare配置出2台Linuxcentos6.4虚拟机,由于虚拟第3台时内存不够,通过另一台PC机安装了centos6.0系统。
VMWare安装虚拟机参考:
虚拟机配置情况:
[root@centosc~]#cat/proc/cpuinfo|grepname|cut-f2-d:
|uniq–c
1Pentium(R)Dual-CoreCPUE5800@3.20GHz
[root@centosc~]#cat/proc/version
Linuxversion2.6.32-431.el6.i686(mockbuild@c6b8.bsys.dev.centos.org)(gccversion4.4.720120313(RedHat4.4.7-4)(GCC))#1SMPFriNov2200:
26:
36UTC2013
[root@centosc~]#getconfLONG_BIT
32
物理机配置情况:
3网络配置规划
虚拟机的宿主机(即安装windows7操作系统的PC)和安装centos6.0的物理机放置在同一局域网内,进行网络配置,虚拟机也要分配独自的IP地址。
虚拟机网络配置参考:
机器名和分配的IP地址如下:
centos6:
192.168.16.179(Namenode和Jobtracker物理机)
centosa:
192.168.16.178(Datanode和Tasktracker虚拟机)
centosc:
192.168.16.176(Datanode和Tasktracker虚拟机)
【注】对于HDFS来说,节点分为Namenode和Datanode,其中Namenode有且只有1个,Datanode可以有1个或很多个;而对于MapReduce来说,节点分为Jobtracker和Tasktracker,其中Jobtracker有且只有1个,Tasktracker可以有1个或很多个。
一般Namenode部署在一台机器,Jobtracker部署在一台机器,Datanode和Tasktracker部署在同一台机器上。
本次将Namenode和Jobtracker也部署在一块。
补充一点官方的资料如下――
HadoopRunningMode:
(1)Standalone(orlocal)Mode:
nodaemons,runinasingleJVM:
localfilesystem+localMapReducejobrunner
(2)Pseudo-distributedMode:
daemonsrunonthelocalmachine:
HDFS+MapReducedaemons
(3)FullydistributedMode:
daemonsrunsonaclusterofmachines:
HDFS+MapReducedaemons
TorunHadoopinaparticularmode,youneedtodotwothings:
settheappropriateproperties,andstarttheHadoopdaemons.
Keyconfigurationpropertiesfordifferentmodes:
ComponentPropertyStandalonePseudo-distributedFullydistributed
--------------------------------------------------------------------------------------------
Corefs.default.namefile:
///(default)hdfs:
//localhost/hdfs:
//namenode/
HDFSdfs.replicationN/A13(default)
MapReducemapred.job.trackerlocal(default)localhost:
8021jobtracker:
8021
4网络配置实况
配置每台服务器上的3个系统文件/etc/sysconfig/network、
/etc/sysconfig/network-scripts/ifcfg-eth0、/etc/hosts,具体内容如图:
控制节点服务器
数据节点1服务器
数据节点2服务器
5依赖软件安装
6软件包准备
本次准备部署的hadoop版本为1.2.1,JDK版本为1.6.0_21
7JDK安装
在3台服务器上各自都创建目录/usr/software,将JDK安装文件分别拷贝到该目录。
设置为可执行状态
[root@centosasoftware]#chmod744./jdk-6u21-linux-i586.bin
运行安装
[root@centosasoftware]#./jdk-6u21-linux-i586.bin
运行后结果
修改文件/etc/profile配置JDK,并生效
[root@centosasoftware]#vi/etc/profile
exportJAVA_HOME=/usr/software/jdk1.6.0_21
exportPATH=$PATH:
$JAVA_HOME/bin:
$JAVA_HOME/jre/bin
[root@centosasoftware]#source/etc/profile
验证安装结果
【注】物理机那台通过java–version发现系统已经默认安装了JDK,通过find命令查找详细路径。
8SSH设置
在3台机器上,分别都创建hadoop用户,设置密码,并且密码统一设置为一样(如:
hadoop123)
[root@centos6~]#useraddhadoop
[root@centos6~]#passwdhadoop
在Hadoop启动以后,Namenode是通过SSH来启动和停止各个节点上的各种守护进程的,这就需要在节点之间执行指令的时候是不需要输入密码的方式,因此部署前要配置SSH使用无密码公钥认证的方式。
首先要保证每台机器上都装了SSH服务器,且都正常启动。
实际中一般用的都是OpenSSH,这是SSH协议的一个免费开源实现。
[root@centos6~]$ssh-version
OpenSSH_5.3p1,OpenSSL1.0.0-fips29Mar2010
在3台机上分别通过hadoop用户运行命令ssh-keygen-tdsa,要求输入时直接回车键(Enter),运行后便生成目录.ssh,该目录为隐性目录,通过ls不能直接看到,但可以通过cd命令进入该目录:
修改.ssh目录权限
[hadoop@centos6~]$chmod755.ssh#授权为755,不能最高权限
下面的这一步骤只在控制节点(master)上运行,生成密钥对,因为控制节点需要主动发起SSH连接到其他3台数据节点。
对于SSH来说,centos6就是其他2台机器的SSH客户端,于是就需要生成一个密钥对(即一个私钥、一个公钥),将私钥留在centos6本地,公钥分别拷贝到其他2台机器,从而实现centos6通过SSH使用无密码公钥认证的方式对数据节点的机器进行访问。
[root@centos6~]#su-hadoop
[hadoop@centos6~]$pwd
[hadoop@centos6~]$cd.ssh
生成密钥对(失败可重新尝试执行命令需要选择yes/no选择yes):
[hadoop@centos6.ssh]$catid_rsa.pub>>authorized_keys
[hadoop@centos6.ssh]$chmod644authorized_keys
#把公用密匙添加到authorized_keys文件中,此文件最后一定要赋予644权限
将公钥分别拷贝到其他2台机器
[hadoop@centos6.ssh]$scpauthorized_keyscentosa:
/home/hadoop/.ssh/
[hadoop@centos6.ssh]$scpauthorized_keyscentosc:
/home/hadoop/.ssh/
验证结果(第一次需要选择yes/no选择yes即可,第二次不需要输入直接连接过去才算成功)
【注】生成空密码的密钥对命令
[hapoop@centos6:
~]$ssh-keygen-tdsaP‘’f~/.ssh/id_dsa
[hapoop@centos6:
.ssh]$catid_dsa.pub>>authorized_keys
9Hadoop部署
10控制节点部署
3.1.1解压hadoop文件包
将hadoop-1.2.1.tar.gz复制到centos6目录/usr/software下并解压:
[root@centos6software]#tar-zvxfhadoop-1.2.1.tar.gz
将解压后的文件夹移到/home/hadoop目录,并调整所属权:
[root@centos6software]#mv–ifhadoop-1.2.1/home/hadoop/
[root@centos6software]#cd/home/hadoop/
[root@centos6hadoop]#chown–Rhadoop.hadoophadoop-1.2.1
[root@centos6hadoop]#su-hadoop
3.1.2修改配置文件
为了方便以后升级,建立一个链接指向当前的hadoop版本,并将配置文件与安装目录分离:
[hadoop@centos6~]$ln-shadoop-1.2.1/hadoopApp
[hadoop@centos6~]$cdhadoopApp
[hadoop@centos6hadoopApp]$mkdirhadoopApp-config#用于放配置文件
[hadoop@centos6hadoopApp]$cp./conf/core-site.xml./hadoopApp-config/
需要复制的文件包括core-site.xml、hdfs-site.xml、mapred-site.xml、hadoop-env.sh、master、slavers。
core-site.xml文件配置内容
hdfs-site.xml文件配置内容
mapred-site.xml文件配置内容
master文件配置内容(master主机名)
slavers文件配置内容(slavers主机列表)
hadoop-env.sh设置一下JDK路径(增加一行)
exportJAVA_HOME=/etc/alternatives/jre_openjdk
创建core-site.xml配置所涉及的目录:
[hadoop@centos6~]$mkdirhadoop_tmp
3.1.3配置hadoop系统路径
先复制hadoop文件包到数据节点:
[hadoop@centos6~]$scp–rhadoop-1.2.1centosa:
/home/hadoop
[hadoop@centos6~]$scp–rhadoop-1.2.1centosc:
/home/hadoop
配置系统路径:
[hadoop@centos6~]$su-root
[root@centos6~]#vi/etc/profile
exportHADOOP_HOME=/home/hadoop/hadoopApp
exportPATH=.:
$JAVA_HOME/bin:
$HADOOP_HOME/bin:
$HADOOP_HOME/sbin:
$PATH
exportHADOOP_CONF_DIR=/home/hadoop/hadoopApp/hadoopApp-config
[root@centos6~]#source/etc/profile
11数据节点部署
1
2
3
3.1
创建core-site.xml配置所涉及的目录:
[hadoop@centosa~]$mkdirhadoop_tmp
[hadoop@centosa~]$ln-shadoop-1.2.1/hadoopApp
配置系统路径:
[hadoop@centosa~]$su-root
[root@centosa~]#vi/etc/profile
exportHADOOP_HOME=/home/hadoop/hadoopApp
exportPATH=.:
$JAVA_HOME/bin:
$HADOOP_HOME/bin:
$HADOOP_HOME/sbin:
$PATH
exportHADOOP_CONF_DIR=/home/hadoop/hadoopApp/hadoopApp-config
[root@centosa~]#source/etc/profile
【注】其他数据节点服务器上也做类似操作。
12hadoop启动
13格式化HDFS
[root@centos6~]#su–hadoop
[hadoop@centos6~]$cd./hadoopApp/bin
[hadoop@centos6bin]$./hadoopnamenode–format
14启动hadoop
[hadoop@centos6bin]$./start-all.sh
15验证hadoop
在浏览器中输入地址http:
//192.168.16.179:
50070/
16停止hadoop
[hadoop@centos6bin]$./start-all.sh
17常遇故障
18没格式化直接启动
DataStreamerException:
org.apache.hadoop.ipc.RemoteException:
java.io.IOException:
File/home/hadoop/hadoop_tmp/mapred/system/
jobtracker.infocouldonlybereplicatedto0nodes,insteadof1
【解决方法】先执行格式化[hadoop@centos6bin]$./hadoopnamenode–format
19防火墙阻止程序运行
格式化后仍然无法启动,查看防火墙状态,如果处于开启状态则关闭。
如果防火墙未关,可能出现如下错误:
DataStreamerException:
org.apache.hadoop.ipc.RemoteException:
java.io.IOException:
File/home/hadoop/hadoop_tmp/mapred/system/
jobtracker.infocouldonlybereplicatedto0nodes,insteadof1
【解决方法】关闭防火墙需要root用户操作:
[root@centos6~]#serviceiptablesstatus
处于启动状态
处于关闭状态
(1)重启后永久性生效:
[root@centos6~]#vim/etc/sysconfig/selinux
(修改为:
SELINUX=disabled并且SELINUXTYPE=disabled)
(2)即时生效,重启后失效:
[root@centos6~]#serviceiptablesstart
[root@centos6~]#serviceiptablesstop
(3)在开启了防火墙时,做如下设置,开启相关端口,
修改/etc/sysconfig/iptables文件,添加以下内容:
-ARH-Firewall-1-INPUT-mstate——stateNEW-mtcp-ptcp——dport9000-jACCEPT
-ARH-Firewall-1-INPUT-mstate——stateNEW-mtcp-ptcp——dport9001-jACCEPT
20多次格式化后,导致datanode无法启动
Hadoop多次格式化后,导致datanode启动不了,可能出现如下错误:
DataStreamerException:
org.apache.hadoop.ipc.RemoteException:
java.io.IOException:
File/home/hadoop/hadoop_tmp/mapred/system/
jobtracker.infocouldonlybereplicatedto0nodes,insteadof1
【解决方法一】停止hadoop,删除每个datanode节点上的data目录后,再重新格式化,然后启动:
【解决方法二】每次格式化,name下面的VERSION的namespaceID会产生一个新的ID,要去修改各个节点的VERSION的namespaceID:
数据节点:
21Warning:
$HADOOP_HOMEisdeprecated.