Hadoop 集羣搭建常見問題
本人近期也一直在搭建Hadoop的相關環境,包括hadoop的搭建、zookeeper的搭建已經hbase的部署,這過程中也遇到了形形色色的問題,中間的過程也是十分的抓狂。在這裏和大家分享一些自己的問題,希望對大家有所幫助,先列出三個供大家參考:
1. “Agent admitted failure to sign using the key”
該問題是在建立集羣ssh通信的過程中會出現的問題。在搭建hadoop集羣的過程中,需要保持各個節點之間的無密ssh連接,首先需要設置一個主節點的ssh密鑰,這個報錯可能就出現在建立各節點之間無密通信的過程中。
錯誤提示:Agent admitted failure to sign using the key.
解決方法:使用 ssh-add 指令將私鑰 加進來 (根據個人的密匙命名不同更改 id_rsa):
ssh-add ~/.ssh/id_rsa
2.“Incompatible clusterIDs”
該問題是在搭建Hadoop集羣,啓動HDFS的過程中可能出現的問題。
錯誤提示:java.io.IOException: Incompatible clusterIDs in /data/dfs/data: namenode clusterID = xxxxxxxxxx
出錯的原因:hadoop的升級功能需要data-node在它的版本文件裏存儲一個永久性的clusterID,當datanode啓動時會自動檢查並匹配namenode的版本文件裏的clusterID,如果兩者不匹配,就會出現"Incompatible clusterIDs"的異常。
每次namenode format會生成一個新的namenodeId,而data目錄包含了上次format時的id,namenode format清空了namenode下的數據,但是沒有格式化datanode下的數據,就會出現”java.io.IOException:Incompatible namespaceIDs“異常
解決方法:方法1:停掉集羣,刪除問題節點的data目錄下的所有內容。即hdfs-site.xml文件中配置的dfs.data.dir目錄。並且重新對namenode格式化。
方法2:停掉集羣,然後將datanode節點目錄/dfs/data/current/VERSION中的修改爲與namenode相應文件中的一致
注:不要將data目錄本身刪除
3.“name or service not known”
該問題同樣是在建立ssh連接時出現的問題
錯誤提示: ssh: Could not resolve hostname XXXXXXXX: Name or service not known
解決方法:方法1:將以下代碼寫在你的.bashrc文件中:
#HADOOP VARIABLES START
export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64
export HADOOP_INSTALL=/usr/local/hadoop
export PATH=$PATH:$HADOOP_INSTALL/bin
export PATH=$PATH:$HADOOP_INSTALL/sbin
export HADOOP_MAPRED_HOME=$HADOOP_INSTALL
export HADOOP_COMMON_HOME=$HADOOP_INSTALL
export HADOOP_HDFS_HOME=$HADOOP_INSTALL
export YARN_HOME=$HADOOP_INSTALL
export HADOOP_HOME=$HADOOP_INSTALL
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_INSTALL/lib/native
export HADOOP_OPTS="-Djava.library.path=$HADOOP_INSTALL/lib/native"
#HADOOP VARIABLES END
之後在執行下列指令:
sudo apt-get install apache2
方法2:修改你集羣節點上etc/hadoop/hadoop-env.sh:
export HADOOP_OPTS="$HADOOP_OPTS -XX:-PrintWarnings -Djava.net.preferIPv4Stack=true"