本文从云计算的实际项目中总结,具有很好的参考价值;
1,hadoop大集群的设备选取:
普通pc就可以了,硬盘足够大,多块硬盘就可以;CPU只要四核以上;专门的存储是不需要的;实施hadoop集群的指导思想,我们用廉价的PC集群来代替高大上的小型机和存储;
2,用虚拟机部署,设备需要从下面指标考量
如果用虚拟机部署的话,内存要足够大,如果机器有很多CPU,利用虚拟机可以充分利用CPU的效率;虚拟机最好不要共用同一个物理硬盘,共用同一个物理硬盘很容易IO冲突;多个物理硬盘可以降低IO冲突;当然,还要考虑IO通道的问题;硬盘的个数,性能(包括传输速度,缓存,转速),IO通道的个数和速度都是应该考虑的指标;
3,在hadoop集群中名字解析的考虑,使用dns或者hosts文件:
在规模较小的集群中可以直接使用hosts文件解析;在大规模的集群中我们采用DNS解析域名;linux下可以用bind建立DNS;安装好bind后, 在/etc/resolve.conf中添加nameserver;
[root@rhmn ~]# cat /etc/resolv.conf
nameserver 12.1.0.1
使用nslookup测试DNS:
[root@rhmn ~]# nslookup
> www.baidu.com
Server: 12.1.0.1
Address: 12.1.0.1#53
Non-authoritative answer:
www.baidu.com canonical name = www.a.shifen.com.
Name: www.a.shifen.com
Address: 115.239.210.27
Name: www.a.shifen.com
Address: 115.239.210.26
>
4,建立免密码登陆;ssh 免密码登陆;
把~/.ssh/下面的公钥追加到对应机器的~/.ssh/authorized_keys中;
如果没有公钥,使用ssh-keygen生成
5,把hadoop目录整体复制到其他节点, 命令:
scp -rp ./hadoop hadoop@vm2:/home/hadoop
如果在大规模的环境下用脚本统一把hadoop目录拷贝到每个节点,例如向vm1-vm8的slave节点上拷贝hadoop文件夹:
创建文件包括vm1-vm8:
[root@rhmn ~]#cat slaves
vm1
vm2
vm3
vm4
vm5
vm6
vm7
vm8
生成脚本,拷贝hadoop目录:
cat slaves|awk '{print "scp -rp ./hadoop hadoop@"$1":/home/hadoop"}' > ./test.sh
chmod 755 ./test.sh
sh ./test.sh
或者是:
for i in `cat slaves`;do scp -rp ./hadoop hadoop@$i:/home/hadoop; done
6,分布式模式的安装的整个过程:
配置域名解析,DNS或者/etc/hosts
建立hadoop运行账号
java环境的搭建;
配置ssh免密码登陆
下载并解压hadoop安装包
配置namenode,修改site文件
配置hadoop-env.sh文件
配置master和slaves文件
向各个节点复制hadoop文件夹
在namenode上格式化namenode
启动hadoop
用JPS检验进程是否成功启动