准备工作
centos版本是centos7。因为最新的hadoop版本(2.7.1)需要libc2.14以上,但是centos6.5只能升级到libc2.12所以需要使用centos7. 1个moaster节点,2个slave节点。
- 修改服务器名字 centos7现在哟一个hostname的查看和设置命令
1
2$ hostnamectl status
$ sudo hostnamectl set-hostname myhost.xmodulo.com
我设置之后的情况如下: 1
2
3
410.115.230.40 master.hadoop
10.115.230.41 slave1.hadoop
10.115.230.42 slave2.hadoop
`
- 修改hosts文件 在所有server的
/etc/hosts
中加入这几行:1
2
310.115.230.40 master.hadoop
10.115.230.41 slave1.hadoop
10.115.230.42 slave2.hadoop
设置完毕以后,在每一台server上使用以下命令确保hosts配置正确 1
2
3ping master.hadoop
ping slave1.hadoop
ping slave2.hadoop
- 查看GLIBC的版本, 使用这个命令查看
1
strings /lib64/libc.so.6 | grep GLIBC
如果命令执行时,没有/lib64/lib.so.6这个文件,那么就安装glibc,命令是:yum install glibc
运行的结果应该是这个样子的 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21GLIBC_2.2.5
GLIBC_2.2.6
GLIBC_2.3
GLIBC_2.3.2
GLIBC_2.3.3
GLIBC_2.3.4
GLIBC_2.4
GLIBC_2.5
GLIBC_2.6
GLIBC_2.7
GLIBC_2.8
GLIBC_2.9
GLIBC_2.10
GLIBC_2.11
GLIBC_2.12
GLIBC_2.13
GLIBC_2.14
GLIBC_2.15
GLIBC_2.16
GLIBC_2.17
GLIBC_PRIVATE
如果没有大于等于GLIBC_2.14,那么需要更新glibc,因为最新的hadoop版本(2.7.1)是需要GLIBC_2.14及以上版本。
- 安装jdk 在所有的节点上安装jdk
1
2yum install java-1.8.0-openjdk
yum install java-1.8.0-openjdk-devel
在centos上/etc/profile
配置openjdk环境: 1
2
3
4
5# set java environment
export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk
export JRE_HOME=/usr/lib/jvm/java-1.8.0-openjdk/jre
export CLASSPATH=.:$CLASSPATH:$JAVA_HOME/lib:$JRE_HOME/lib
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH
添加普通用户hadoop
1
adduser hadoop
添加信任关系 需要配置所有的Slave无密码登录Master step1. 安装ssh和rsync step2. 生成public key:
ssh-keygen
step3. 将id_rsa.pub文件中的内容添加到authorized_keys中,authorized_keys文件的全新需要是600
. step4. 通过ssh命令验证信任关系,例如:1
ssh slave2.hadoop
关闭防火墙,或者配置防火墙 防火墙的配置可以参考网上的资料,这里仅仅关闭防火墙 centos 6 直接关闭 iptables
1 | service iptables stop |
也可以通过命令ntsysv
,关闭开机时启动iptables服务
centos 7 需要通过下面的命令关闭firewall (这个很关键,弄了半天才解决) 1
systemctl stop firewalld
可以参考CentOS 7.0 关闭firewalld防火墙指令 及更换Iptables防火墙
Install hadoop
以下操作,可以先在master节点上操作完成,然后将hadoop目录拷贝到其他节点上
- 登录root账户,下载hadoop的安装文件,这里下载的是hadoop-2.7.1,同时解压到
/usr/
目录下 - 修改hadoop-2.7.1的属性:
chown -R hadoop:hadoop hadoop-2.7.1
。 在hadoop的目录下创建tmp
1
2mkdir /usr/hadoop-2.7.1/tmp
chown -R hadoop:hadoop /usr/hadoop-2.7.1/tmp添加hadoop的路径到
/etc/profile
1
2
3# set hadoop path
export HADOOP_HOME=/usr/hadoop-2.7.1
export PATH=$PATH:$HADOOP_HOME/bin
配置hadoop
配置hadoop-env.sh 修改
${HADOOP_HOME}/etc/hadoop/hadoop-env.sh
在文件中修改这一行1
export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk
配置core-site.xml
修改${HADOOP_HOME}/etc/hadoop/core-site.xml
文件, 在configuration的tag中添加:
1 | <configuration> |
备注:如没有配置hadoop.tmp.dir参数,此时系统默认的临时目录为:/tmp/hadoo-hadoop。而这个目录在每次重启后都会被干掉,必须重新执行format才行,否则会出错。
- 配置hdfs-site.xml
修改${HADOOP_HOME}/etc/hadoop/hdfs-site.xml
,
1 | <configuration> |
备注:dfs.replication 是数据副本数量,默认为3,salve少于3台就会报错
- 配置mapred-site.xml
修改${HADOOP_HOME}/etc/hadoop/mapred-site.xml
1 | <configuration> |
- 配置yarn-site.xml
修改${HADOOP_HOME}/etc/hadoop/yarn-site.xml
1 | <configuration> |
- 配置slaves文件 修改
${HADOOP_HOME}/etc/hadoop/slaves
, 添加:
1 | slave1.hadoop |
拷贝到slave节点
通过以下命令拷贝到slave上
1 | scp -r hadoop-2.7.1 root@slave2.hadoop:/usr/ |
在各个slave节点上,进入’/usr’目录下改变目录的属性
1 | chown -R hadoop:hadoop hadoop-2.7.1/ |
并且在/etc/profile
中添加hadoop的配置:
1 | # set hadoop path |
启动和验证
在“master”上使用普通用户hadoop进行操作
1 | hdfs namenode -format |
启动hadoop 1
2
3
4start-all.sh
or
start-dfs.sh
start-yarn.sh
查看状态: 1
hdfs dfsadmin -report
例子如下:
另外可以通过网页查看例如:http://master:50070
查看hadoop的任务运行情况:http://master:8088
增加调试信息设置
通过下面的设置,可以输出hadoop命令的调试信息。 1
2
3
4$ export HADOOP_ROOT_LOGGER=DEBUG,console
$ hadoop fs -text /test/data/origz/access.log.gz
15/08/14 20:45:12 DEBUG util.NativeCodeLoader: Failed to load native-hadoop with error: java.lang.UnsatisfiedLinkError: /usr/hadoop-2.7.1/lib/native/libhadoop.so.1.0.0: /lib64/libc.so.6: version `GLIBC_2.14' not found (required by /usr/hadoop-2.7.1/lib/native/libhadoop.so.1.0.0)
解决问题
如果无法查看到datanote,可能有很多问题引起的。 有一个办法,就是重新format namenode,然后再排除其他问题。 具体:删除slave和master的hadoop.tmp.dir内容,然后再次运行hdfs namenode -format
。 这种方式,将会清除所有数据。
reference
http://www.powerxing.com/install-hadoop-cluster/
http://www.centoscn.com/image-text/install/2014/1121/4158.html