用了近兩個禮拜的摸索終於搭建好了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 或者其他虛擬化軟件,上手時間還快。