此篇文章主要面向hadoop的初学者,选取的hadoop版本是2.6.4,搭建是hadoop完全分布式集群(单节点或伪分布式没有实际价值,所以不考虑)。
写此文的原因是因为我初学hadoop时,加入多个hadoop的QQ群,每次问hadoop的问题,基本都没有人回复,故将hadoop2.6.4的完成集群配置写出来,供初学者参考。
1.准备3台虚拟机
IP | hadoop节点 | 主机名 |
---|---|---|
192.168.5.174 | namenode | dashuju174 |
192.168.5.172 | datanode | dashuju172 |
192.168.5.173 | datanode | dashuju173 |
2.配置主机名
在172,、173、174三台主机的/etc/hosts中配置
192.168.5.174 dashuju174
192.168.5.172 dashuju172
192.168.5.173 dashuju173
检查172、173、174三台主机的/etc/sysconfig/network中HOSTNAME是否正确,如果不正确,修改后需要reboot重启机器
174 的机器配置成HOSTNAME=dashuju174
173 的机器配置成HOSTNAME=dashuju173
172 的机器配置成HOSTNAME=dashuju172
3.JDK1.7配置
在/etc/profile中配置JDK的环境变量,注意profile的修改需要source /etc/profile进行生效
JAVA_HOME=/usr/java/jdk1.7.0_79
export JAVA_HOME
JRE_HOME=/usr/java/jdk1.7.0_79/jre
export JRE_HOME
CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH
export CLASSPATH
PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH:.
export PATH
4.hadoop用户创建
groupadd hadoop // 创建hadoop用户组
useradd -g hadoop hadoop// 添加用户,并将hadoop用户添加到hadoop用户组中
passwd hadoop // 设置hadoop的密码,姑且默认为000000
5.SSH免登陆
su - hadoop,进入到hadoop用户
ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
进入 /home/hadoop/.ssh目录
vi authorized_keys,将172,173,174中id_rsa.pub的内容写入到authorized_keys中,例如
ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAwb5Tv4HDaBddIbsehSas+UqVHdMxPRs3DkY5cL2t29ohfgG9kqNjOi4mOglSu/gO1qejzPoq8ZTWWbOvRqdNio1vtUiLbxheFw9ip4SwoHfaSxvI9vgq5obk6Hl36pWtdgEJ4crBeYfeGS2tLmuOnGQmvMGYz/UmgiJBaGOYuPZP6AsNSy/OsfYoDJpBXPOt+Lod6ch4EnJBbNMQqZTVImwKo1d5Jw0Oeqnjqxg9ocv9KXoPMZX9yiOHSjldHpf3/sSDxalyJEj7Z3Jii/1iwQiFLBSuCvXzdEuZXMwSo6s3zaXuUu4y1yeL2gcL5CZhS3qay2nBbxKKnrL/NoBhzQ== hadoop@dashuju172
ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEA2wRC1AqG6mjiXLorZe9z39MUuo0vXwBdO7dHriIOpbU2rxHYMvo4NyYQYw0pItyfTjt0YYe8wDT49Cj/vDsf939hFbN0EfOc648DeC9+RUtGlby03Hii3WD/qKpCQlk6+sxUs99To1+Kw5YwH9uaVhbrR0lwa4URagUVtzHMlb2eh9zSMxWApsWKWfu59BCfYOvKLemkVgCc78OWU1nE6FRpV8+R1a2nKisWWecDgQ/jcLi9YFb2Kyga/0ukZv/iXLIVge+ENT8VfeXkW5AqCBuEgvLH5gVaE3cSqnCBiayrlgcmtEW9w5aD3S40VpypIW3KEzikGsLJ8JUfWZ1bPw== hadoop@dashuju174
ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAvR5duVdaeysdVDafp3u41zjDuYoJBOsKGvIFIhfo4nYcqN1MXrwa8yVbP3+rmxy8ylZTtfmoqQF0egOvzZp6Ot/pVnl6LPsBdz/qPZnwzfaPvwfM9F1kLSQAWGJSAnoulr5tyC0OLCWKpXV/aMU1uC/zDSD6A+TXwoVk6Uh/z2SIZJolESj38moFw/jCm1uSC+N9A8S+ynLQqbgWoow67EvgXcR8WEyotnbtbun6oFICCXXaHm1/8I+7ZcbFBJVxlLp/+igAKLk+enajqVszytS/gJ1LYouMnfKiRmn5JP8EEdZ280zX0hgVPHrkxzVo5dS3FgF1Rj5RhbQyCxnVkw== hadoop@dashuju173
执行命令,将authorized_keys从173上复制到172和174上
scp -P 2222 authorized_keys hadoop@dashuju172:/home/hadoop/.ssh
执行命令,即可免密码登录了,注意2222因为服务器端口更改了,如果是22端口,则不需要加
ssh -p 2222 hadoop@dashuju172
注意id_rsa的权限问题
chmod 755 ~/.ssh/
chmod 600 ~/.ssh/id_rsa ~/.ssh/id_rsa.pub
chmod 644 ~/.ssh/known_hosts
chmod g-w authorized_keys
6.检查GLIBC版本
在root用户下执行以下命令,hadoop2.6.4版本依赖glibc2.14,如下图所示则需要对linux中glibc库进行升级
strings /lib64/libc.so.6 |grep GLIBC
升级命令如下:
wget http://mirror.bjtu.edu.cn/gnu/libc/glibc-2.14.tar.xz
tar xvf glibc-2.14.tar.gz
cd glibc-2.14
mkdir build
cd build
../configure --prefix=/usr/local/glibc-2.14 // 配置glibc并设置当前glibc-2.14安装目录
make -j4
make install
cp /usr/local/glibc-2.14/lib/libc-2.14.so /lib64/libc-2.14.so
mv /lib64/libc.so.6 /lib64/libc.so.6.bak
LD_PRELOAD=/lib64/libc-2.14.so ln -s /lib64/libc-2.14.so /lib64/libc.so.6
如果最后一行命令执行出错,可通过
LD_PRELOAD=/lib64/libc-2.12.so ln -s /lib64/libc-2.12.so /lib64/libc.so.6
再改回去
最后,执行strings /lib64/libc.so.6 |grep GLIBC,查看glibc是否更新