1、环境
CentOS 5.8
Master 192.168.2.110 M1hadoop2110
Slave 192.168.2.100 S1hadoop2100
Slave 192.168.2.101 S2hadoop2101
Slave 192.168.2.125 S3hadoop2125
Slave 192.168.2.132 S4hadoop2132
Slave 192.168.2.144 S5hadoop2144
vim /etc/hosts
192.168.2.110 M1hadoop2110
192.168.2.100 S1hadoop2100
192.168.2.101 S2hadoop2101
192.168.2.125 S3hadoop2125
192.168.2.132 S4hadoop2132
192.168.2.144 S5hadoop2144
2、建立用户
每台服务器上建立hadoop用户
# useradd hadoop
# passwd hadoop
3、关闭防火墙
# service iptables stop
# chkconfig iptables off
# service ip6tables stop
# chkconfig ip6tables off
关闭SELinux
# vim /etc/sysconfig/selinux
修改
SELINUX=disabled
# setenforce 0
# getenforce
关闭不需要的服务(这里我没有关闭,也搭建成功了)
# for SERVICES in abrtd acpid auditd avahi-daemon cpuspeed haldaemon mdmonitor messagebus udev-post;do chkconfig ${SERVICES} off;done
4、jdk、ssh、rsync
下载jdk
http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html
检查系统原版本
# java -version
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)
进一步查看JDK信息:
# rpm -qa | grep jdk
jdk-1.6.0_31-fcs
卸载jkd
# rpm -e --nodeps jdk-1.6.0_31-fcs
# mkdir -p /usr/java
安装jdk1.7
# rpm -ivh jdk-7u25-linux-x64.rpm
jdk默认安装在/usr/java中
验证安装
# java
# javac
# java -version
配置环境变量
我的机器安装完jdk-7*.rpm后不用配置环境变量也可以正常执行javac、java –version操作,因此我没有进行JDK环境变量的配置。但是为了以后的不适之需,这里还是记录一下怎么进行配置,操作如下:
修改系统环境变量文件
vi + /etc/profile
向文件里面追加以下内容:
JAVA_HOME=/usr/java/jdk1.7.0_25
JRE_HOME=/usr/java/jdk1.7.0_25/jre
PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib
export JAVA_HOME JRE_HOME PATH CLASSPATH
使修改生效
# source /etc/profile //使修改立即生效
# echo $PATH //查看PATH值
查看系统环境状态
# echo $PATH
/usr/local/cmake/bin:/usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/java/jdk1.7.0/bin:/usr/java/jdk1.7.0/jre/bin:/root/bin
安装和启动SSH协议
检查是否安装了ssh和rsync
# rpm -qa | grep openssh
# rpm -qa | grep rsync
如果没有安装
# yum -y install ssh
# yum -y install rsync
# service sshd restart --启动服务
5、配置Master无密码登录所有Slave
在Master上执行:
# su - hadoop
# ssh-keygen -t rsa -P ''
# cd .ssh
# ll
-rw------- 1 hadoop hadoop 1675 07-16 23:17 id_rsa
-rw-r--r-- 1 hadoop hadoop 401 07-16 23:17 id_rsa.pub
# cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
# chmod 600 ~/.ssh/authorized_keys
以root用户设置ssh
# su - root
# vim /etc/ssh/sshd_config
添加下列内容:
RSAAuthentication yes #启用RSA认证
PubkeyAuthentication yes #启用公钥私钥配对认证方式
AuthorizedKeysFile .ssh/authorized_keys #公钥文件路径(和上面生产的文件同)
# service sshd restart
退出root,登录hadoop
# su - hadoop
# ssh localhost
可以登录
在所有slave上执行:
# mkdir -p /home/hadoop/.ssh ;chown -R hadoop:hadoop /home/hadoop/.ssh ;chmod 700 /home/hadoop/.ssh
将master上公钥复制到各slave上
# su - hadoop
# scp ~/.ssh/id_rsa.pub hadoop@192.168.2.100:~/
# cat ~/id_rsa.pub >> ~/.ssh/authorized_keys ;chmod 600 ~/.ssh/authorized_keys
root用户可以执行下面命令
# cat /home/hadoop/id_rsa.pub >> /home/hadoop/.ssh/authorized_keys ;chmod 600 /home/hadoop/.ssh/authorized_keys; chown -R hadoop:hadoop /home/hadoop/.ssh/authorized_keys
以root用户修改/etc/ssh/sshd_config
# vim /etc/ssh/sshd_config
添加下列内容:
RSAAuthentication yes #启用RSA认证
PubkeyAuthentication yes #启用公钥私钥配对认证方式
AuthorizedKeysFile .ssh/authorized_keys #公钥文件路径
# service sshd restart
在master上使用ssh无密码登录slave
# su - hadoop
# ssh 192.168.2.100
最后删除slave上/home/hadoop/目录下的id_rsa.pub
# rm -f /home/hadoop/id_rsa.pub
6、配置所有slave无密码登录master
在2.100上
# su - hadoop
# ssh-keygen -t rsa -P ''
# cd .ssh
# cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
# scp ~/.ssh/id_rsa.pub hadoop@192.168.2.110:~/
在master上
# cat /home/hadoop/id_rsa.pub >> /home/hadoop/.ssh/authorized_keys
# rm -f /home/hadoop/id_rsa.pub
# su - hadoop
# ssh 192.168.2.100
在2.100上测试ssh无密码登录master
# ssh 192.168.2.110
slave无密码登录master设置成功,其他slave如上操作
------------------------------------------------------------------------------------
7、Hadoop集群安装
所有机器上都要安装hadoop,安装和配置需要以root身份
安装hadoop
# cd /usr/local
# tar -zxvf hadoop-1.1.2.tar.gz
# mv hadoop-1.1.2 hadoop
# mkdir -p /usr/local/hadoop/tmp
# chown -R hadoop:hadoop hadoop
# vim /etc/profile
添加下面内容:
# set hadoop path
export HADOOP_HOME=/usr/local/hadoop
export PATH=$PATH:$HADOOP_HOME/bin
export HADOOP_HOME_WARN_SUPPRESS=1
# source /etc/profile
配置hadoop
a、配置hadoop-env.sh
# vim /usr/local/hadoop/conf/hadoop-env.sh
文件末尾添加下面内容:
# set java environment
export JAVA_HOME=/usr/java/jdk1.7.0_25
hadoop配置文件在conf下,之前的版本的配置文件主要是Hadoop-default.xml和Hadoop-site.xml。
由于Hadoop发展迅速,代码量急剧增加,代码开发分为了core,hdfs和map/reduce三部分,配置文
件也被分成了三个core-site.xml,hdfs-site.xml,mapred-site.xml;core-site.xml和hdfs-site.xml
是站在HDFS角度上配置文件;core-site.xml和mapred-site.xml是站在MapReduce角度上配置文件
b、配置core-site.xml文件
修改Hadoop核心配置文件core-site.xml,这里配置的是HDFS的地址和端口号。
# vim /usr/local/hadoop/conf/core-site.xml
--------------------------------------------------
<configuration>
<property>
<name>hadoop.tmp.dir</name>
<value>/usr/local/hadoop/tmp</value>
<description>A base for other temporary directories.</description>
</property>
<!-- file system properties -->
<property>
<name>fs.default.name</name>
<value>hdfs://192.168.2.110:9000</value>
</property>
</configuration>
--------------------------------------------------
注:如没有配置hadoop.tmp.dir参数,系统默认的临时目录为:/tmp/hadoo-hadoop。而这个目录
在每次重启后会被干掉,必须重新执行format才行,否则会出错
c、配置hdfs-site.xml文件
修改hadoop中HDFS的配置,配置的备份方式默认为3.replication是数据副本数据,默认为3,
slave少于3台就会报错
# vim /usr/local/hadoop/conf/hdfs-site.xml
-------------------------------------------------------
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
</configuration>
-------------------------------------------------------
d、配置mapred-site.xml文件
修改hadoop中MapReduce的配置文件,配置的是JobTracker的地址和端口。
# vim /usr/local/hadoop/conf/mapred-site.xml
--------------------------------------------------------
<configuration>
<property>
<name>mapred.job.tracker</name>
<value>http://192.168.2.110:9001</value>
</property>
</configuration>
--------------------------------------------------------
e、配置masters文件
有两种方案:
1)修改localhost为M1hadoop2110
2)去掉“localhost”,加入Master机器的ip:192.168.2.110
保险起见,用第二种,因为万一忘记配置/etc/hosts局域网的dns失效,会错误,通过ip配对
网络通畅,就能找到对应的主机
# vim /usr/local/hadoop/conf/masters
删除localhost,加入:192.168.2.110
f、配置slaves文件(Master主机特有)
有两种方案
1)去掉localhost,每行只添加一个主机名,把剩余的slave主机名都填上。如
S1hadoop2100
S2hadoop2101
2)去掉localhost,加入群集中所有slave机器的ip,每行一个。
# vim /usr/local/hadoop/conf/slaves
192.168.2.100
192.168.2.101
192.168.2.125
192.168.2.132
192.168.2.144
现在master机器上的hadoop配置就结束了!!
下面开始配置slave上hadoop
一种方式是按照上面的步骤,把hadoop的安装包用普通用户hadoop通过scp复制到其他机器的/home/hadoop/
目录下,然后根据实际情况安装配置,除了上面的e步骤,那是master特有的
另一种方式是将master上配置好的hadoop所在文件夹/usr/local/hadoop复制到所有的slave的/usr/local
目录下(实际上slave机器上的slavers文件是不必要的,复制了也没有问题)。
# scp -r /usr/local/hadoop root@192.168.2.100:/usr/local/
# rsync -avR /usr/local/hadoop/ root@192.168.2.101:/ 这种方式复制到slave,不用改权限
在slave上/usr/local目录修改权限
# chown -R hadoop:hadoop hadoop
修改/etc/profile文件
# vim /etc/profile
添加下面内容:
# set hadoop path
export HADOOP_HOME=/usr/local/hadoop
export PATH=$PATH:$HADOOP_HOME/bin
export HADOOP_HOME_WARN_SUPPRESS=1
# source /etc/profile
其他slave安装上面的步骤配置
8、启动及验证
1)格式化HDFS文件系统
在master上使用hadoop用户操作(注:只需一次,下次启动不再需要格式化,只需start-all.sh)
$ hadoop namenode -format
2)启动hadoop
在启动前关闭集群中所有机器的防火墙,不然会出现datanode开后又自动关闭。
$ start-all.sh
可以通过以下启动日志看出,首先启动namenode 接着启动datanode1,datanode2,…,然后启动
secondarynamenode。再启动jobtracker,然后启动tasktracker1,tasktracker2,…。
启动 hadoop成功后,在 Master 中的 tmp 文件夹中生成了 dfs 文件夹,在Slave 中的 tmp 文件夹
中均生成了dfs 文件夹和 mapred 文件夹。
$ ll /usr/local/hadoop/tmp
3)验证hadoop
验证方法一:用“jps”命令 (我的机器上用不了jps,不知道是不是java的安装问题,没有深究)
在master上用java自带的小工具jps查看进程。
$ jps
在S1上用jps查看进程
$ jps
如果在查看Slave机器中发现"DataNode"和"TaskTracker"没有起来时,先查看一下日志的,如果是
"namespaceID"不一致问题,采用"常见问题FAQ B"进行解决,如果是"No route to host"问题,采用
"常见问题FAQ C"进行解决。
验证方式二:用"hadoop dfsadmin -report"
用这个命令可以查看Hadoop集群的状态。
Master服务器的状态:
$ hadoop dfsadmin -report
slave的状态
$ hadoop dfsadmin -report
1)访问http://192.168.2.110:50030
CentOS 5.8
Master 192.168.2.110 M1hadoop2110
Slave 192.168.2.100 S1hadoop2100
Slave 192.168.2.101 S2hadoop2101
Slave 192.168.2.125 S3hadoop2125
Slave 192.168.2.132 S4hadoop2132
Slave 192.168.2.144 S5hadoop2144
vim /etc/hosts
192.168.2.110 M1hadoop2110
192.168.2.100 S1hadoop2100
192.168.2.101 S2hadoop2101
192.168.2.125 S3hadoop2125
192.168.2.132 S4hadoop2132
192.168.2.144 S5hadoop2144
2、建立用户
每台服务器上建立hadoop用户
# useradd hadoop
# passwd hadoop
3、关闭防火墙
# service iptables stop
# chkconfig iptables off
# service ip6tables stop
# chkconfig ip6tables off
关闭SELinux
# vim /etc/sysconfig/selinux
修改
SELINUX=disabled
# setenforce 0
# getenforce
关闭不需要的服务(这里我没有关闭,也搭建成功了)
# for SERVICES in abrtd acpid auditd avahi-daemon cpuspeed haldaemon mdmonitor messagebus udev-post;do chkconfig ${SERVICES} off;done
4、jdk、ssh、rsync
下载jdk
http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html
检查系统原版本
# java -version
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)
进一步查看JDK信息:
# rpm -qa | grep jdk
jdk-1.6.0_31-fcs
卸载jkd
# rpm -e --nodeps jdk-1.6.0_31-fcs
# mkdir -p /usr/java
安装jdk1.7
# rpm -ivh jdk-7u25-linux-x64.rpm
jdk默认安装在/usr/java中
验证安装
# java
# javac
# java -version
配置环境变量
我的机器安装完jdk-7*.rpm后不用配置环境变量也可以正常执行javac、java –version操作,因此我没有进行JDK环境变量的配置。但是为了以后的不适之需,这里还是记录一下怎么进行配置,操作如下:
修改系统环境变量文件
vi + /etc/profile
向文件里面追加以下内容:
JAVA_HOME=/usr/java/jdk1.7.0_25
JRE_HOME=/usr/java/jdk1.7.0_25/jre
PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib
export JAVA_HOME JRE_HOME PATH CLASSPATH
使修改生效
# source /etc/profile //使修改立即生效
# echo $PATH //查看PATH值
查看系统环境状态
# echo $PATH
/usr/local/cmake/bin:/usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/java/jdk1.7.0/bin:/usr/java/jdk1.7.0/jre/bin:/root/bin
安装和启动SSH协议
检查是否安装了ssh和rsync
# rpm -qa | grep openssh
# rpm -qa | grep rsync
如果没有安装
# yum -y install ssh
# yum -y install rsync
# service sshd restart --启动服务
5、配置Master无密码登录所有Slave
在Master上执行:
# su - hadoop
# ssh-keygen -t rsa -P ''
# cd .ssh
# ll
-rw------- 1 hadoop hadoop 1675 07-16 23:17 id_rsa
-rw-r--r-- 1 hadoop hadoop 401 07-16 23:17 id_rsa.pub
# cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
# chmod 600 ~/.ssh/authorized_keys
以root用户设置ssh
# su - root
# vim /etc/ssh/sshd_config
添加下列内容:
RSAAuthentication yes #启用RSA认证
PubkeyAuthentication yes #启用公钥私钥配对认证方式
AuthorizedKeysFile .ssh/authorized_keys #公钥文件路径(和上面生产的文件同)
# service sshd restart
退出root,登录hadoop
# su - hadoop
# ssh localhost
可以登录
在所有slave上执行:
# mkdir -p /home/hadoop/.ssh ;chown -R hadoop:hadoop /home/hadoop/.ssh ;chmod 700 /home/hadoop/.ssh
将master上公钥复制到各slave上
# su - hadoop
# scp ~/.ssh/id_rsa.pub hadoop@192.168.2.100:~/
# cat ~/id_rsa.pub >> ~/.ssh/authorized_keys ;chmod 600 ~/.ssh/authorized_keys
root用户可以执行下面命令
# cat /home/hadoop/id_rsa.pub >> /home/hadoop/.ssh/authorized_keys ;chmod 600 /home/hadoop/.ssh/authorized_keys; chown -R hadoop:hadoop /home/hadoop/.ssh/authorized_keys
以root用户修改/etc/ssh/sshd_config
# vim /etc/ssh/sshd_config
添加下列内容:
RSAAuthentication yes #启用RSA认证
PubkeyAuthentication yes #启用公钥私钥配对认证方式
AuthorizedKeysFile .ssh/authorized_keys #公钥文件路径
# service sshd restart
在master上使用ssh无密码登录slave
# su - hadoop
# ssh 192.168.2.100
最后删除slave上/home/hadoop/目录下的id_rsa.pub
# rm -f /home/hadoop/id_rsa.pub
6、配置所有slave无密码登录master
在2.100上
# su - hadoop
# ssh-keygen -t rsa -P ''
# cd .ssh
# cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
# scp ~/.ssh/id_rsa.pub hadoop@192.168.2.110:~/
在master上
# cat /home/hadoop/id_rsa.pub >> /home/hadoop/.ssh/authorized_keys
# rm -f /home/hadoop/id_rsa.pub
# su - hadoop
# ssh 192.168.2.100
在2.100上测试ssh无密码登录master
# ssh 192.168.2.110
slave无密码登录master设置成功,其他slave如上操作
------------------------------------------------------------------------------------
7、Hadoop集群安装
所有机器上都要安装hadoop,安装和配置需要以root身份
安装hadoop
# cd /usr/local
# tar -zxvf hadoop-1.1.2.tar.gz
# mv hadoop-1.1.2 hadoop
# mkdir -p /usr/local/hadoop/tmp
# chown -R hadoop:hadoop hadoop
# vim /etc/profile
添加下面内容:
# set hadoop path
export HADOOP_HOME=/usr/local/hadoop
export PATH=$PATH:$HADOOP_HOME/bin
export HADOOP_HOME_WARN_SUPPRESS=1
# source /etc/profile
配置hadoop
a、配置hadoop-env.sh
# vim /usr/local/hadoop/conf/hadoop-env.sh
文件末尾添加下面内容:
# set java environment
export JAVA_HOME=/usr/java/jdk1.7.0_25
hadoop配置文件在conf下,之前的版本的配置文件主要是Hadoop-default.xml和Hadoop-site.xml。
由于Hadoop发展迅速,代码量急剧增加,代码开发分为了core,hdfs和map/reduce三部分,配置文
件也被分成了三个core-site.xml,hdfs-site.xml,mapred-site.xml;core-site.xml和hdfs-site.xml
是站在HDFS角度上配置文件;core-site.xml和mapred-site.xml是站在MapReduce角度上配置文件
b、配置core-site.xml文件
修改Hadoop核心配置文件core-site.xml,这里配置的是HDFS的地址和端口号。
# vim /usr/local/hadoop/conf/core-site.xml
--------------------------------------------------
<configuration>
<property>
<name>hadoop.tmp.dir</name>
<value>/usr/local/hadoop/tmp</value>
<description>A base for other temporary directories.</description>
</property>
<!-- file system properties -->
<property>
<name>fs.default.name</name>
<value>hdfs://192.168.2.110:9000</value>
</property>
</configuration>
--------------------------------------------------
注:如没有配置hadoop.tmp.dir参数,系统默认的临时目录为:/tmp/hadoo-hadoop。而这个目录
在每次重启后会被干掉,必须重新执行format才行,否则会出错
c、配置hdfs-site.xml文件
修改hadoop中HDFS的配置,配置的备份方式默认为3.replication是数据副本数据,默认为3,
slave少于3台就会报错
# vim /usr/local/hadoop/conf/hdfs-site.xml
-------------------------------------------------------
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
</configuration>
-------------------------------------------------------
d、配置mapred-site.xml文件
修改hadoop中MapReduce的配置文件,配置的是JobTracker的地址和端口。
# vim /usr/local/hadoop/conf/mapred-site.xml
--------------------------------------------------------
<configuration>
<property>
<name>mapred.job.tracker</name>
<value>http://192.168.2.110:9001</value>
</property>
</configuration>
--------------------------------------------------------
e、配置masters文件
有两种方案:
1)修改localhost为M1hadoop2110
2)去掉“localhost”,加入Master机器的ip:192.168.2.110
保险起见,用第二种,因为万一忘记配置/etc/hosts局域网的dns失效,会错误,通过ip配对
网络通畅,就能找到对应的主机
# vim /usr/local/hadoop/conf/masters
删除localhost,加入:192.168.2.110
f、配置slaves文件(Master主机特有)
有两种方案
1)去掉localhost,每行只添加一个主机名,把剩余的slave主机名都填上。如
S1hadoop2100
S2hadoop2101
2)去掉localhost,加入群集中所有slave机器的ip,每行一个。
# vim /usr/local/hadoop/conf/slaves
192.168.2.100
192.168.2.101
192.168.2.125
192.168.2.132
192.168.2.144
现在master机器上的hadoop配置就结束了!!
下面开始配置slave上hadoop
一种方式是按照上面的步骤,把hadoop的安装包用普通用户hadoop通过scp复制到其他机器的/home/hadoop/
目录下,然后根据实际情况安装配置,除了上面的e步骤,那是master特有的
另一种方式是将master上配置好的hadoop所在文件夹/usr/local/hadoop复制到所有的slave的/usr/local
目录下(实际上slave机器上的slavers文件是不必要的,复制了也没有问题)。
# scp -r /usr/local/hadoop root@192.168.2.100:/usr/local/
# rsync -avR /usr/local/hadoop/ root@192.168.2.101:/ 这种方式复制到slave,不用改权限
在slave上/usr/local目录修改权限
# chown -R hadoop:hadoop hadoop
修改/etc/profile文件
# vim /etc/profile
添加下面内容:
# set hadoop path
export HADOOP_HOME=/usr/local/hadoop
export PATH=$PATH:$HADOOP_HOME/bin
export HADOOP_HOME_WARN_SUPPRESS=1
# source /etc/profile
其他slave安装上面的步骤配置
8、启动及验证
1)格式化HDFS文件系统
在master上使用hadoop用户操作(注:只需一次,下次启动不再需要格式化,只需start-all.sh)
$ hadoop namenode -format
2)启动hadoop
在启动前关闭集群中所有机器的防火墙,不然会出现datanode开后又自动关闭。
$ start-all.sh
可以通过以下启动日志看出,首先启动namenode 接着启动datanode1,datanode2,…,然后启动
secondarynamenode。再启动jobtracker,然后启动tasktracker1,tasktracker2,…。
启动 hadoop成功后,在 Master 中的 tmp 文件夹中生成了 dfs 文件夹,在Slave 中的 tmp 文件夹
中均生成了dfs 文件夹和 mapred 文件夹。
$ ll /usr/local/hadoop/tmp
3)验证hadoop
验证方法一:用“jps”命令 (我的机器上用不了jps,不知道是不是java的安装问题,没有深究)
在master上用java自带的小工具jps查看进程。
$ jps
在S1上用jps查看进程
$ jps
如果在查看Slave机器中发现"DataNode"和"TaskTracker"没有起来时,先查看一下日志的,如果是
"namespaceID"不一致问题,采用"常见问题FAQ B"进行解决,如果是"No route to host"问题,采用
"常见问题FAQ C"进行解决。
验证方式二:用"hadoop dfsadmin -report"
用这个命令可以查看Hadoop集群的状态。
Master服务器的状态:
$ hadoop dfsadmin -report
slave的状态
$ hadoop dfsadmin -report
1)访问http://192.168.2.110:50030
参考:http://www.cnblogs.com/xia520pi/archive/2012/05/16/2503949.html