用了近两个礼拜的摸索终于搭建好了hadoop集群,测试性能也符合预期。
centos6.4下hadoop2.3集群总结如下:
关于环境的设置:
1.关闭selinux (反复折腾了好多次)
vi /etc/selinux/config
SELINUX=disabled
2.关闭防火墙
service iptables status service ip6tables status service iptables stop service ip6tables stop chkconfig iptables off chkconfig ip6tables off
3.对ssh打开免密码登陆设置
vi /etc/ssh/sshd_config
RSAAuthentication yes PubkeyAuthentication yes AuthorizedKeysFile .ssh/authorized_keys
4.设置jdk环境变量
export JAVA_HOME=/usr/local/jdk1.7.0_51 export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar export PATH=$PATH:$JAVA_HOME/bin update-alternatives --install /usr/bin/java java /usr/local/jdk1.7.0_51/bin/java 60 update-alternatives --config java
关于经常遇到的问题:
- etc/hadoop/hdfs-site.xml 文件中dfs.replication每个节点都需要保持一致
针对小规模的集群设置为1其实就可以了 执行效率还提高了,没必要是用2份或者3份,反而影响性能
- namenode 最好与datanode分开
因为它是起到管理节点的作用,头节点效率低了,直接影响整个hadoop运行速度以及稳定性
- hadoop2.3 对默认的机器硬件要求为4核和8g
所以在机器性能没有问题的情况下,最好使用默认值,强制使用2核或者1核反而达不到预期效果
- hadoop 中针对集群方式,其实所有节点配置都是一样的,增加或减少节点只需要对etc/hadoop/slaves进行配置就可以了。其他的事情hadoop自己来做。
hadoop常用命令如下:
./bin/hdfs dfsadmin -report ./bin/hadoop namenode -format ./bin/hdfs dfs -mkdir -p /export/home/hadoop ./bin/yarn jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.3.0.jar randomwriter /export/home/hadoop/input ./sbin/start-dfs.sh && ./sbin/start-yarn.sh ./sbin/stop-yarn.sh && ./sbin/stop-dfs.sh
./bin/yarn jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.3.0.jar randomwriter /export/home/hadoop/input1
执行结果有原来的伪分布式的43分钟
使用集群方式后三个slave,每个slave 4核8,使用1个副本 执行结果为4.5分钟。
针对自己搭建的集群使用vmware workstation 就足够了,没有必要使用exsi 或者其他虚拟化软件,上手时间还快。