首页 > 代码库 > CentOS版hadoop完全分布初步搭建
CentOS版hadoop完全分布初步搭建
(之前学习时的记录)
整理一下在搭建hadoop完全分布模式时的相关步骤,及搭建过程中遇到的一些问题。
相关环境:
环境:基于win7的VM中CentOS64位系统
台数:3台;分别为master、slave1、slave2
hadoop版本:CDH3-U6
所用到的工具:Xshell(远程链接管理工具)、filezilla(可以远程移动文件)
第一部分:在VM中安装CentOS
1、下载
VM自己从网上下载,尽量不要装最新版本的;CentOS选择后缀为iso版本下载
2、安装
VM自己安装;
安装好VM后,开始安装CentOS;相关安装可以参考链接如下:
http://www.91linux.com/html/2014/CentOS_0415/9725.html
刚开始安装可以照着教程来装,参考教程上安装的是Desktop(桌面版)的,比较熟练的话尽量安装成Basic Serve版,相关步骤一样,只是后者没有操作界面,完全是代码行。
3、每个CentOS信息
对于初步搭建hadoop完全分布来说,安装三台Linux系统已足以。对于此,我分别安装了命名为master、slave1、slave2三台虚拟机,为Basic Serve版,相关配置后续再说。
第二部分、在CentOS中搭建hadoop集群
1、修改主机名和用户名(root用户执行,所有节点都需执行)
1)对上一步已搭建完的三个虚拟机,分别增加hadoop用户(root用户执行,所有节点都执行):
[root@localhost ~]#useradd hadoop
#添加以hadoop为用户名的用户
[root@localhost ~]#passwd hadoop
#修改该用户密码,密码统一设置为hadoop
2)修改主机名(root用户,所有节点都需要执行)
[root@localhost ~]#vi /etc/sysconfig/network
#使用VI对network文件进行修改,文件打开后会出现:
NETWORK=yes
HOSTNAME=localhost.localhost
按键盘的I键进行编辑,对于完全分布式来说,分别修改其“localhost.localhost”为“master”“slave1”“slave2”,修改完之后按Esc+Shift:+wq进行保存退出。
3)节点之间互访配置(这一步可以在配置完IP地址后在执行,所有节点均执行)
[root@localhost ~]#vi /etc/hosts
#打开host文件,在文件末尾追加:
192.168.1.10 master
#masterIP地址与主机名
192.168.1.11 slave1
# slave1IP地址与主机名
192.168.1.12 slave2
# slave2IP地址与主机名
2、配置静态IP(root用户执行,所有节点都需执行)
1)相关注意:在安装上CentOS后,会存在一个如何与宿主机进行正常通信的问题,在这一步中,首先在VM的网络虚拟配置中找到网络链接方式,选择为“桥接”模式,并选择具体网卡,
接着在系统设置中,设置虚拟机的连接方式为“桥接”;打开宿主机(Win7)中的cmd,输入ipconfig查看宿主机网段并记下,我的这台网段是10.129.49.xxx,所以在虚拟机桥接模式下,
所有虚拟机IP都应设为10.129.49.xxx(所有节点后边的数都不能相同)。
2)修改ifcfg-eth0文件(eth0代表网卡,可能有的虚拟机的网卡会不同,具体为哪个视虚拟机而定,root用户执行,所有节点都需执行)
在root用户下,输入
[root@localhost ~]#cd /etc/sysconfig/network-scripts
#进入network-scripts目录
[root@localhost ~]#ll
#查看目录下所有文件,看你的网卡是否是eth0,如果不是,视具体虚拟机而定
[root@localhost ~]#vi /etc/sysconfig/network-scripts/ifcfg-eth0
#进ifcfg-eth0文件,并进行编辑修改:(红色为修改部分)
DEVICE=eth0
BOOTPROTO=static
NM_CONTROLLED=yes
ONBOOT=yes
IPADDR=192.168.1.10
#静态IP地址
NETMASK=255.255.255.0
#掩码地址
GATWAY=192.168.1.1
#网关地址
3)修改UUID
[root@localhost ~]#vi /etc/sysconfig/network-scripts/ifcfg-eth0
#删除MAC地址行
[root@localhost ~]#rm -rf /etc/udev/rules.d/70-persistent-net.rules
#删除网卡和MAC地址绑定文件
4)重启并查看IP
[root@localhost ~]#reboot
[root@localhost ~]#ifconfig
打开宿主机的cmd,输入ping 192.168.1.10查看是否能进行通信,如果能则表示配置成功;分别配置slave1、slave2。
3、使用Xshell进行远程登录
使用Xshell登录是因为CentOS自带界面不可更改,也无法调整字体大小
对配置好IP的虚拟机用Xshell进行远程登录(即IP地址、用户名、用户密码),登陆后设置界面,调整字体大小。
4、配置SSH无密码链接
1)永久关闭防火墙(root用户)
[root@localhost ~]#chkconfig iptables off
2)启动SSH服务命令(root用户)
[root@localhost ~]#service ssh restart
#重启SSH
[root@localhost ~]#rpm -qa | grep openssh
#检查SSH是否安装成功
如果出现下面的信息:
openssh-askpass-5.3p1-81.e16.x86_64
openssh-5.3p1-81.e16.x86_64
openssh-clients-5.3p1-81.e16.x86_64
openssh-server-5.3p1-81.e16.x86_64
再执行命令:
[root@localhost ~]#rpm -qa | grep rsync
如果出现以下信息:
rsync-3.0.6-9.e16.x86_64
说明SSH安装成功。
3)生成SSH公匙(hadoop用户)
在主节点即master上执行
[hadoop@master ~]$ssh-keygen -t rsa
#遇到提示回车即可,最后显示图形为公匙的指纹加密
[hadoop@master ~]$ssh-copy-id -i ~/.ssh/id_rsa.pub hadoop@master
[hadoop@master ~]$ssh-copy-id -i ~/.ssh/id_rsa.pub hadoop@slave1
[hadoop@master ~]$ssh-copy-id -i ~/.ssh/id_rsa.pub hadoop@slave2
#将公匙发至从节点的slave1、slave2用户
注意:对于完全分布来说,只在主节点配置SSH无密码链接即可,之后把公匙发至从节点
4)验证安装(hadoop用户)
[hadoop@master ~]$ssh master
[hadoop@master ~]$ssh slave1
[hadoop@master ~]$ssh slave2
#如果没有出现输入密码提示则表示安装成功,执行这条命令后会远程登录从节点,返回主节点需执行exit
若按照上面步骤执行任然不成功,有可能是/home/hadoop/.ssh文件夹的权限问题。以hadoop用户执行
[hadoop@master ~]$chmod 700 /home/hadoop/.ssh
[hadoop@master ~]$chmod 700 /home/hadoop/.ssh/authorized_keys
5、安装JDK(root用户,所有节点都需执行)
CentOS预装的是Open JDK,但还是要推荐用Oracle JDK,下载地址为:
http://www.oracle.com/technetwork/Java/Javase/downloads/index.html
1)修改/opt文件夹权限
[root@localhost ~]#chown -R hadoop /opt
2)卸载Open JDK
[root@localhost ~]#java -version
#查看Java版本
[root@localhost ~]#rpm -qa | grep java
#查看Java详细信息
显示如下信息:
java-1.4.2-gcj-compat-1.4.2.0-40jpp.115
java-1.6.0-openjdk-1.6.0.0-1.7.b09.el5
卸载:
[root@localhost
~]#rpm -e –nodeps
java-1.4.2-gcj-compat-1.4.2.0-40jpp.115
[root@localhost ~]#rpm -e –nodeps java-1.6.0-openjdk-1.6.0.0-1.7.b09.el5
或者执行指令卸载:
[root@localhost
~]#yum -y remove java java-1.4.2-gcj-compat-1.4.2.0-40jpp.115
[root@localhost
~]#yum -y remove java java-1.6.0-openjdk-1.6.0.0-1.7.b09.el5
3)安装Oracle JDK(hadoop用户也可)
在第1)步给/opt文件夹加权限后,就可以使filezilla工具直接把在Windows中的JDK安装包直接拖至/opt文件夹下,然后进行解压:
[root@localhost
~]#tar -xzvf jdk-6u43-linux-x64.tar.gz
#解压JDK至/opt文件夹下
解压完后,删除JDK安装包
[root@localhost
~]#rm -rf jdk-6u43-linux-x64.tar.gz
#移除JDK安装包
4)配置环境变量
[root@localhost ~]#vi /etc/profile
#对profile文件进行编辑
对文件追加:
export JAVA_HOME=/opt/jdk1.6.0
export PATH=$PATH:$JAVA_HOME/bin
使环境变量立即生效,执行命令:
[root@localhost ~]#source /etc/profile
5)验证安装
[root@localhost ~]#java -version
出现如下信息,则安装成功:
#查看Java版本
Java version “1.6.0_31”
Java(TM) SE Runtime Environment (build 1.6.0_31-b04)
Java HotSpot(TM) 64-Bit Server VM (build 20.6-b01,mixed mode)
6、配置hadoop(hadoop用户,只在主节点执行)
前面已经对/opt权限进行过修改,这一步就直接在/opt文件中安装配置即可;
利用filezilla工具把安装包发送至/opt文件夹下(只在hadoop主节点即master节点执行),执行解压缩。
1)解压文件
[hadoop@master ~]$tar -zxvf hadoop-0.20.2-cdh3u6.tar.gz
#解压缩hadoop安装包
2)修改配置文件(hadoop用户在主节点执行)
Hadoop的配置文件都在/opt/ hadoop-0.20.2-cdh3u6/conf下,对其中主要文件进行配置:
修改hadoop-env.sh
在文件hadoop-env.sh末尾追加环境变量
export JAVA_HOME=/opt/jdk1.6.0
export HADOOP_HOME=/opt/hadoop-0.20.2-cdh3u6
修改core-site.xml
修改core-site.xml为:
<configuration> <property> <name>fs.default.name</name> <value>hdfs://master:9000</value> </property> </configuration>
修改hdfs-site.xml
修改hdfs-site.xml为:
<configuration> <property> <name>dfs.replication</name> <value>3</value> </property> </configuration> <name>dfs.name.dir</name> <value>/opt/hdfs/name</value> </property> <property> <name>dfs.data.dir</name> <value>/opt/hdfs/data</value> </property> </configuration>
修改mapred-site.xml
修改mapred-site.xml为:
<configuration> <property> <name>mapred.job.tracker</name> <value>master:9001</value> </property> </configuration>
3)修改masters文件
修改masters文件为:
master
4)修改slaves文件
修改slaves文件为:
slave1
slave2
5)将安装文件发送至从节点
利用scp命令将安装文件夹分发到从节点的相同路径下:
[hadoop@master ~]$scp -r /opt/hadoop-0.20.2-cdh3u6 hadoop@slave1:/opt
[hadoop@master ~]$scp -r /opt/hadoop-0.20.2-cdh3u6 hadoop@slave2:/opt
至此,Hadoop安装配置工作全部完成,为了能在任何路径下使用Hadoop命令,还需要配置环境变量(root用户执行,所有节点都需要执行)。对文件/etc/profile追加如下信息:
export HADOOP_HOME=/home/hadoop/hadoop-0.20.2-cdh3u6
export PATH=$PATH:$HADOOP_HOME/bin
修改完后,执行命令行(root用户执行,所有节点都需要执行):
[root@localhost ~]#source /etc/profile
7、格式化HDFS
在第一次启动Hadoop之前,必须先将HDFS格式化。执行命令:
[hadoop@master ~]$hadoop namenode -format
#如果别的路径执行不了,则进入/opt/hadoop-0.20.2-cdh3u6/bin文件下执行
按照提示输入Y,格式化成功后会出现格式化成功的信息:
16/1/20 10:50:51 INFO common.Storage: Storage directory /opt/hdfs/name has been successfully formatted.
8、启动Hadoop并验证安装
1)启动Hadoop
首先赋予脚本可执行权限(hadoop用户所有节点都需要执行),执行命令:
[hadoop@master ~]$chmod +x -R /opt/hadoop-0.20.2-cdh3u6/bin
然后执行启动脚本(hadoop用户,主节点执行),执行命令:
[hadoop@master ~]$./opt/ hadoop-0.20.2-cdh3u6/bin/start-all.sh
执行完成后,执行jps命令查看进程是否启动成功,若成功;
[hadoop@master ~]$jps
主节点会出现:
NameNode
JobTracker
SecondaryNameNode
slave1节点出现:
DateNode
TaskTracker
slave2节点出现:
DateNode
TaskTracker
9、验证是否安装成功
在新安装的集群上运行一个MapReduce程序,判断集群是否安装成功,Hadoop例库中自带多中已经写好的可以运行的MR程序,此处,此处以最简单的单词计数程序WordCount进行集群平台验证:
1)在集群的任何一台电脑上创建一个文本文件命名为words,这里以master为例。对文本文件添加内容:如“data mining on data warehouse”,如果程序正常运行,最终结果为:
data 2
mining 1
on 1
warehouse 1
2)在HDFS中新建目录并上传本地文件,执行命令如下:
#HDFS中新建目录
[hadoop@master ~]$hadoop dfs –mkdir /user/hadoop/input
#将本地文件上传
[hadoop@master ~]$hadoop dfs –put /opt/words /user/hadoop/input
3)运行程序并查看结果
#运行单词统计程序
[hadoop@master ~]$hadoop jar /opt/hadoop-0.20.2/hadoop-examples-0.20.2- cdh3u6.jar wordcount /user/hadoop/input /user/hadoop/output
#查看程序输出
[hadoop@master ~]$hadoop dfs –cat /user/hadoop/output/part-r-00000
屏幕打印为:
data 2
mining 1
on 1
warehouse 1
表示集群可以正常运行,到此Hadoop安装结束。
本文固定链接:CPP学习网_CPP大学-CentOS版hadoop完全分布初步搭建
CentOS版hadoop完全分布初步搭建