Hadoop集群搭建
一.环境介绍
集群中包括四个节:一个Master,三个Salve。四个节点上均是CentOS6.4系统。Master机器主要配置NameNode和JobTracker的角色,负责总管分布式数据和分解任务的执行;3个Salve机器配置DataNode和TaskTracker的角色,负责分布式数据存储以及任务的执行。
节点的机器名和IP地址对应关系如下:
机器名 IP
master 10.255.24.191
slave1 10.255.24.192
slave2 10.255.24.193
slave4 10.255.24.194
二.环境搭建
1.网络配置部分(以master节点为例)
a.修改当前机器名
#vim /etc/sysconfig/network
HOSTNAME=master
b.配置当前机器IP
#vim /etc/sysconfig/network-scripts/ifcfg-eth0
ONBOOT=yes
BOOTPROTO=static
IPADDR=10.255.24.191
NETMASK=255.0.0.0
c.配置hosts文件
#vim /etc/hosts, 在文件末尾追加如下内容
10.255.24.191master
10.255.24.192slave1
10.255.24.193slave2
10.255.24.194slave3
d.参照上述内容将另外三台机器做相应配置
2.ssh无需密码登录
a.配置master无密码登录所有slave节点
1)生成密钥对
[root@master.ssh]# ssh-keygen -t dsa -P ''(一路回车), 在/root/.ssh目录下产生id_dsa和id_dsa.pub
两个文件
2)将公钥文件分别拷贝到slave1、slave2、slave3的/root/.ssh目录下
[root@master.ssh]# scp ./id_dsa.pub root@slave1:/root/.ssh/
[root@master.ssh]# scp ./id_dsa.pub root@slave2:/root/.ssh/
[root@master.ssh]# scp ./id_dsa.pub root@slave3:/root/.ssh/
3)在三台slave节点上分别将拷贝过来的id_dsa.pub文件追加到授权文件中
[root@slave1.ssh]# cat ./id_dsa.pub >> ./authorized_keys
[root@slave2.ssh]# cat ./id_dsa.pub >> ./authorized_keys
[root@slave3.ssh]# cat ./id_dsa.pub >> ./authorized_keys
4)测试是否成功
[root@master.ssh]# ssh root@slave1,如果屏幕打印类似如下信息
“Lastlogin: … … from master”则表示配置成功
b.配置slave1无密码登录master节点
1)生成密钥对
[root@slave1.ssh]# ssh-keygen -t dsa -P ''
2)将公钥文件分别拷贝到master的/root/.ssh目录下
[root@slave1.ssh]# scp ./id_dsa.pub root@master:/root/.ssh/
3)在master节点上将拷贝过来的id_dsa.pub文件追加到授权文件中
[root@master.ssh]# cat ./id_dsa.pub >> ./authorized_keys
4)测试是否成功
c.按照b的方法对slave2、slave3进行配置
3.java环境安装(以master节点为例)
a.jdk的安装
在/opt目录下对jdk-7u25-linux-x64.tar.gz进行解压即完成
[root@masteropt]# tar -zxf jdk-7u25-linux-x64.tar.gz, 在/opt目录下会出现目录jdk1.7.0_25
b.配置环境变量
[root@masteropt]# vim /etc/profile, 在文件末尾追加如下内容:
#setjava environment
exportJAVA_HOME=/opt/jdk1.7.0_25
exportCLASSPATH=.:$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
exportPATH=$PATH:$JAVA_HOME/bin:$JAVA_HOME/jre/bin
c.重启系统,进行验证
[root@masteropt]# java -version, 如果屏幕打印出java的版本信息则说明jdk安装和配置成功
d.按照相同的方法对三台slave节点进行jdk的安装和配置
4.hadoop的安装和配置(以master节点为例)
a.在/opt目录下对hadoop-1.2.1.tar.gz进行解压
[root@masteropt]# tar -zxf jdk-7u25-linux-x64.tar.gz, 在/opt目录下会出现目录hadoop-1.2.1,我把该目录重
新命名为hadoop121
b.在/opt/hadoop121目录下创建tmp文件夹(记住它的路径,用于设置dfs.tmp.dir属性)
c.在/opt/hadoop121目录下创建hdfs文件夹(记住它的路径,后续会用到)
d.配置hadoop的环境变量
[root@masteropt]# vim /etc/profile, 在文件末尾追加如下内容:
#sethadoop path
exportHADOOP_HOME=/opt/hadoop121
exportPATH=$PATH:$HADOOP_HOME/bin
e.重启是环境变量生效
f.配置hadoop
1)配置/opt/hadoop121/conf/hadoop-env.sh在文件末尾追加如下信息:
#setjava environment
exportJAVA_HOME=/opt/jdk1.7.0_25
2)配置/opt/hadoop121/conf/core-site.xml在文件的<configuration></configration>区段内添加如下内容
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/hadoop121/tmp</value>
</property>
<!--filesystem properties-->
<property>
<name>fs.default.name</name>
<value>hdfs://10.255.24.191:9000</value>
</property>
3)配置/opt/hadoop121/conf/hdfs-site.xml在文件的<configuration></configration>区段内添加如下内容
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
<!--namenode set-->
<!--datanode set-->
说明:replication是数据的副本数量,默认为3,slave节点少于设定的 之就会报错,要跟据实际情况进行设定。
4)配置/opt/hadoop121/conf/mapred-site.xml在文件的<configuration></configration>区段内添加如下内容
<property>
<name>mapred.job.tracker</name>
<value>http://192.168.1.2:9001</value>
</property>
g.按照上述a-f步,对三个slave节点进行hadoop安装和配置
h.补充对/opt/hadoop121/conf/hdfs-site.xml文件的配置
1)master节点在文件的<!--namenode set--> 行下补充如下内容
<property>
<name>dfs.name.dir</name>
<value>/opt/hadoop121/hdfs/name1,/opt/hadoop121/hdfs/name2</value>
</property>
说明:指定hdfs文件系统的元数据保存的目录,我指定了两个,用于做备份
2)所有slave节点在文件的<!--datanode set--> 行下补充如下内容
<property>
<name>dfs.data.dir</name>
<value>/opt/hadoop121/hdfs/data1,/opt/hadoop121/hdfs/data2</value>
</property>
说明:指定hdfs文件系统的数据存储目录,data1,data2应该为不同分区上的目录
i.在master和所有slave节点上配置/opt/hadoop121/conf/masters文件
将文件中的‘localhost’修改为master节点的ip:10.255.24.191
j.仅在master节点上配置/opt/hadoop121/conf/slaves文件
去掉文件中的‘localhost’,加入集群中所有slave节点的ip,每行一个
如: 10.255.24.192
10.255.24.193
10.255.24.194
5.启动及验证集群
a.格式化hdfs文件系统(仅在master执行,且仅执行一次)
[root@masterhadoop121]# ./bin/hadoop namenode -format, 完成后master节点的/opt/hadoop121/hdfs下
会自动创建name1,name2两个文件夹
b.关闭所有机器的防火墙
serviceiptables stop
c.启动hadoop集群(在master节点上执行)
[root@masterhadoop121]# ./bin/start-all.sh
master会根据配置,通过ssh启动相关的slave节点
d.验证hadoop(在master上执行)
[root@masteropt]# hadoop dfsadmin -report
会看到集群的状态,检查屏幕打印的node节点的信息,看看哥哥slave是否处 于活跃状态。
系统成功启动后,每个slave节点的/opt/hadoop121/hdfs下会自动创建 data1,data2两个文件夹。