最近看了些资料,关于hadoop大集群实施阶段,会碰到的几个问题,总结出几个解决思路,记录下来,以供以后参考。转载请注明出处,谢谢。
1.配置hosts文件,如果集群很大,几千台,如何快速配置?
2.配置ssh免密码登陆,问题同1
3.配置masters和slaves文件,问题同1
4.向各节点复制hadoop,问题同1
5.设备选型,什么类型设备适合hadoop?
6.是否使用虚拟机?
关于集群安装linux系统,如果数量只有上百个,可刻录光盘,复制光盘,再给每台机器安装配套的linux系统。如果是更多的机器,可使用“Ghost广播”这种方式复制。
解决方案:
1.配置hosts文件,如果集群很大,几千台,如何快速配置?
1.一般来说,会使用DNS管理代替修改hosts文件,linux下可使用bind软件(但该软件的安装较复杂,需一定linux基础),安装完后,修改resolv.conf文件配置,具体步骤可谷歌或百度,相关教程很多。
2.配置ssh免密码登陆,问题同1
2.采用NFS(网络文件系统)解决。确保公钥存放在用户打算连接的所有机器的~/.ssh/authorized_keys 文件中。如果hadoop的用户的home目录在NFS文件系统中,则密钥可以通过键入以下指令在整个集群共享:
%cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
3.配置masters和slaves文件,问题同1
3.其实只需要配置master机器的masters和slaves文件就可以了。
4.向各节点复制hadoop,问题同1
4.如果节点数较少,可以敲入以下命令解决:
scp -rp ./hadoop-2.2.0 username@slave1:/home/username
同样的,节点数量多为了效率,则灵活运用awk工具来改进这条命令,先将所有的从节点hostname集中在一个文件slave中,它的格式如下:
slave1
slave2
slave3
...
...
slaveN
然后使用该条命令,则它会循环输出,自动将命令集合存入test文件了。(关于awk工具的详细请自行谷歌或百度:))
cat ./slave | awk ’{print "scp -rp ./hadoop-2.2.0 username@"$1":/home/username"}‘ > test
查看test文件 cat test,内容如下:
scp -rp ./hadoop-2.2.0 username@slave1:/home/username
scp -rp ./hadoop-2.2.0 username@slave2:/home/username
scp -rp ./hadoop-2.2.0 username@slave3:/home/username
...
...
scp -rp ./hadoop-2.2.0 username@slaveN:/home/username
再将test文件转为可执行的文件
chmod a+x test
执行它即可实现目的。
sh ./test
5.设备选型,什么类型设备适合hadoop?
5.其实普通的pc服务器就可以,如果需要存储大量数据的,使用多硬盘的pc服务器,许多云服务硬件提供商已经有这类设备,比如装载了八块硬盘的pc服务机、专门的hadoop一体机等等。cpu目前都比较快了,6核8核都可以了。
6.是否使用虚拟机?
6.无偿不可,如果pc服务器性能很强大,比如32G内存以上,cpu性能过剩的情况下,可以划分几个虚拟机来充分利用机器性能。但需要注意一点,不同虚拟机不要使用同一硬盘(来避免IO冲突)。比如有8个硬盘,可划分4个虚拟机,把8个硬盘等分给4个虚拟机(这种不能完全避免IO冲突,只是尽可能的降低了而已)。如果要装虚拟机,则选型时就需要注意,如果一台装4个虚拟机则应尽量购买拥有4个IO通道的服务机器。然后对性能要求高的,应综合考虑 “成本” 和 “硬盘的个数、传输速度、缓存、转速、IO通道个数及速度”之间的平衡。