常見問題以下(其中前面兩點最多):html
對於hadoop,須要改成yarn:hadoop/mapred:hdoop/hdfs:hadoop,其餘組件如spark直接爲spark:spark便可.java
主要對/var/log/cluster001, /var/run/cluste001以及/data/cluster001目錄下進行修改.node
相關配置爲添加,追加相關配置到hdfs-site.xml文件中.
參考:
+http://www.cloudera.com/documentation/enterprise/5-7-x/topics/cdh_sg_secure_webhdfs_config.html#topic_3_9+linux
當設置了安全的datanode時,啓動datanode須要root權限,須要修改hadoop-env.sh文件.且須要安裝jsvc,同時從新下載編譯包commons-daemon-1.0.15.jar,並把$HADOOP_HOME/share/hadoop/hdfs/lib下替換掉.
不然報錯Cannot start secure DataNode without configuring either privileged resources
參考:
http://blog.csdn.net/lalaguozhe/article/details/11570009
+http://blog.csdn.net/wulantian/article/details/42173095+c++
/tmp/dfs/data權限改爲755,不然報錯.directory is not readable.是由於hdfs-site.xml文件中dfs.datanode.data.dir.perm權限的設置.因爲datanode.dir沒有設置,因此存放在默認位置/tmp.git
cmake src -DHADOOP_CONF_DIR=/etc/hadoop
下載源碼從新編譯
同時服務器得安裝g++/cmake
yum install gcc-c++
yum install cmake
參考:
+http://blog.csdn.net/lipeng_bigdata/article/details/52687821+github
web
用戶訪問某個服務,得先申請票據,而後經過該票據再去訪問某一服務.不然,會報以下錯誤.
No valid credentials provided (Mechanism level: Failed to find any Kerberos tgt
api
緣由:格式化時致使datanode和namenode的clusterID不一致
解決辦法:
方法1.進入tmp/dfs,修改VERSION文件便可,將datanode裏version文件夾裏面的內容修改爲和namenode一致的.
方法2.直接刪除tmp/dfs,而後格式化hdfs便可(./hdfs namenode -format)從新在tmp目錄下生成一個dfs文件.
安全
緣由:目錄下文件損壞或者權限不知足要求
驗證: hdfs fsck /tmp/hadoop-hduser/nm-local-dir
解決辦法:
看log發現是屬主權限問題,而後重啓resourcemanager和nodemanager進程.
緣由:不詳
解決辦法:重啓了相關進程後解決了.
緣由:配置了ssl/tls,可是相關組件沒有配置
解決辦法:相關配置註釋.這部分屬於Configuring Encryption.
緣由:採用secure datanode,因爲datanode 數據傳輸協議沒有采用Hadoop RPC,所以datanode須要認證本身
解決方案:
1.使用安全的端口,依賴jsvc,採用root用戶啓動進程綁定該安全端口. hdfs腳本中能夠看到
2.經過sasl認證本身.從版本2.6.0開始, SASL can be used to authenticate the data transfer protocol.
這樣就沒必要依賴jsvc,也不須要從新編譯依賴包生成新的jsvc.以前參考的資料過期了.
參考資料:
http://stackoverflow.com/questions/27401033/hdfs-datanode-not-starting-with-kerberos
現象:YarnRuntimeException: Failed to initialize container executor error=13,權限不夠. nodemanager一直無法啓動
臨時解決方案:container-executor爲setuid權限()6050),屬於hadoop組,一直沒有找到緣由和實際的解決方案,就用root用戶啓動了.
緣由:機器selinux沒有關閉,selinux開啓的時候,ssh免密碼登陸會不起做用,仍然須要手動輸入密碼,以前沒有生效沒有在乎
現象:ExitCodeException exitCode=24: Can't get configured value for yarn.nodemanager.linux-container-executor.group
定位問題方法:直接運行./container-executor 會報錯誤 configuration tokenization failed Can't get configured value for yarn.nodemanager.linux-container-executor.group.
緣由:是因爲container-executor.cfg 配置不對,其中屬性值不能爲空,我這邊是由於"banned.users="
現象:啓動namenode,namenode雖然起來了,可是namenode日誌信息中不少 AccessControlException: SIMPLE authentication is not enabled. Available:[TOKEN, KERBEROS]
緣由:不少依賴hdfs的服務,可是沒有開啓安全認證,而hdfs開啓了.把依賴hdfs的服務關閉,則日誌信息中再也不flush該信息
解決方案:Hadoop2.6解決了該問題,可是須要額外配置多個參數,同時得開啓https(即設置HTTPS_ONLY),能夠經過hadoop用戶啓動datanode了
參考:http://secfree.github.io/blog/2015/07/01/sasl-data-transfer-protocol.html
現象:因爲使用hadoop2.6的secure mode新特性,默認須要開啓https,因此須要證書問題,而以前沒有配置
緣由:沒有生成證書信息
解決方案:採用openssl+keytool生成keystore/truststore文件,同時修改ssl-client.xml和ssl-server.xml文件[繁瑣]
常見問題以下(其中前面兩點最多):
1) 各目錄屬主組屬性修改.
對於hadoop,須要改成yarn:hadoop/mapred:hdoop/hdfs:hadoop,其餘組件如spark直接爲spark:spark便可.
2) 組件本地log屬主組修改以及權限修改.
主要對/var/log/cluster001, /var/run/cluste001以及/data/cluster001目錄下進行修改.
3) webHDFS enable=true時,報錯 configureation principal問題.
相關配置爲添加,追加相關配置到hdfs-site.xml文件中.
參考:
http://www.cloudera.com/documentation/enterprise/5-7-x/topics/cdh_sg_secure_webhdfs_config.html#topic_3_9
4) 設置安全的datanode
當設置了安全的datanode時,啓動datanode須要root權限,須要修改hadoop-env.sh文件.且須要安裝jsvc,同時從新下載編譯包commons-daemon-1.0.15.jar,並把$HADOOP_HOME/share/hadoop/hdfs/lib下替換掉.
不然報錯Cannot start secure DataNode without configuring either privileged resources
參考:
http://blog.csdn.net/lalaguozhe/article/details/11570009
http://blog.csdn.net/wulantian/article/details/42173095
5) dfs.datanode.data.dir.perm權限的設置
/tmp/dfs/data權限改爲755,不然報錯.directory is not readable.是由於hdfs-site.xml文件中dfs.datanode.data.dir.perm權限的設置.因爲datanode.dir沒有設置,因此存放在默認位置/tmp.
6) container-executor.cfg must be owned by root, but is owned by 500.
cmake src -DHADOOP_CONF_DIR=/etc/hadoop
下載源碼從新編譯
同時服務器得安裝g++/cmake
yum install gcc-c++
yum install cmake
參考:
http://blog.csdn.net/lipeng_bigdata/article/details/52687821
7) Hbase master進程啓動不了.
緣由:recently tried to set up Kerberos-secured Hadoop cluster and encountered the same problem. I found that the cause is my hbase user (the user used to launch Hbase service) has no necessary environment settings of Hadoop such as HADOOP_CONF_DIR. You can verify if your user account has those settings.
解決方法:
copy core-site.xml and hdfs-site.xml to hbase_dir/conf
參考:
http://stackoverflow.com/questions/21338874/hbase-keeps-doing-simple-authentication
雖然咱們的系統中有這兩個配置文件,可是加入了kerberos以後這兩個文件的更新沒有同步過來.
8) 沒有獲取票據
用戶訪問某個服務,得先申請票據,而後經過該票據再去訪問某一服務.不然,會報以下錯誤.
No valid credentials provided (Mechanism level: Failed to find any Kerberos tgt
kinit -k -t /etc/cluster001/SERVICE-HADOOP-83ec0e0240fc4ebe92a4d79a5ca138af/hdfs.keytab hdfs/node1@HADOOP.COM
參考:
http://www.cnblogs.com/morvenhuang/p/4607790.html
9) java.io.IOException: All specified directories are failed to load
緣由:格式化時致使datanode和namenode的clusterID不一致
解決辦法:
方法1.進入tmp/dfs,修改VERSION文件便可,將datanode裏version文件夾裏面的內容修改爲和namenode一致的.
方法2.直接刪除tmp/dfs,而後格式化hdfs便可(./hdfs namenode -format)從新在tmp目錄下生成一個dfs文件.
10) hadoop監控頁面顯示node unhealthy
緣由:目錄下文件損壞或者權限不知足要求
驗證: hdfs fsck /tmp/hadoop-hduser/nm-local-dir
解決辦法:
看log發現是屬主權限問題,而後重啓resourcemanager和nodemanager進程.
11) Reduce階段沒法獲取map階段產生的中間結果
緣由:不詳
解決辦法:重啓了相關進程後解決了.
12) Keystore報錯
緣由:配置了ssl/tls,可是相關組件沒有配置
解決辦法:相關配置註釋.這部分屬於Configuring Encryption.
13) Datanode能夠不使用root用戶啓動
緣由:採用secure datanode,因爲datanode 數據傳輸協議沒有采用Hadoop RPC,所以datanode須要認證本身
解決方案:
1.使用安全的端口,依賴jsvc,採用root用戶啓動進程綁定該安全端口. hdfs腳本中能夠看到
2.經過sasl認證本身.從版本2.6.0開始, SASL can be used to authenticate the data transfer protocol.
這樣就沒必要依賴jsvc,也不須要從新編譯依賴包生成新的jsvc.以前參考的資料過期了.
參考資料:
http://stackoverflow.com/questions/27401033/hdfs-datanode-not-starting-with-kerberos
14) nodemanager也能夠不使用root用戶啓動
現象:YarnRuntimeException: Failed to initialize container executor error=13,權限不夠. nodemanager一直無法啓動
臨時解決方案:container-executor爲setuid權限()6050),屬於hadoop組,一直沒有找到緣由和實際的解決方案,就用root用戶啓動了.
緣由:機器selinux沒有關閉,selinux開啓的時候,ssh免密碼登陸會不起做用,仍然須要手動輸入密碼,以前沒有生效沒有在乎
15) nodemanager啓動失敗
現象:ExitCodeException exitCode=24: Can't get configured value for yarn.nodemanager.linux-container-executor.group
定位問題方法:直接運行./container-executor 會報錯誤 configuration tokenization failed Can't get configured value for yarn.nodemanager.linux-container-executor.group.
緣由:是因爲container-executor.cfg 配置不對,其中屬性值不能爲空,我這邊是由於"banned.users="
16) namenode啓動正常,日誌信息中不少 AccessControlException: SIMPLE authentication is not enabled. Available:[TOKEN, KERBEROS]
現象:啓動namenode,namenode雖然起來了,可是namenode日誌信息中不少 AccessControlException: SIMPLE authentication is not enabled. Available:[TOKEN, KERBEROS]
緣由:不少依賴hdfs的服務,可是沒有開啓安全認證,而hdfs開啓了.把依賴hdfs的服務關閉,則日誌信息中再也不flush該信息
17) Hadoop 2.5.2 的 Secure Mode 下, 必須用 root 經過 jsvc 啓動 DataNod
運維不方便.同時得從新下載common-daemon的包,並替換jsvc
解決方案:Hadoop2.6解決了該問題,可是須要額外配置多個參數,同時得開啓https(即設置HTTPS_ONLY),能夠經過hadoop用戶啓動datanode了
參考:http://secfree.github.io/blog/2015/07/01/sasl-data-transfer-protocol.html
18) /home/hadoop/.keystore file not found
現象:因爲使用hadoop2.6的secure mode新特性,默認須要開啓https,因此須要證書問題,而以前沒有配置
緣由:沒有生成證書信息
解決方案:採用openssl+keytool生成keystore/truststore文件,同時修改ssl-client.xml和ssl-server.xml文件
19) 配置authorization中hadoop-policy文件修改讓其生效
操做: 更新namenode相關屬性, bin/hdfs dfsadmin -refreshServiceAcl
錯誤提示:
緣由:沒法更新或者hadoop-policy文件或security.refresh.policy.protocol.acl配置中沒有該用戶.
解決辦法:重啓namenode/datanode進程或者切換正確配置的用戶.
20) 用戶沒有對hdfs操做的權限
錯誤提示:
解決辦法: security.client.protocol.acl配置中加入該用戶
21) Namenode認證超時,啓動失敗
啓動hadoop某一角色失敗,從日誌中能夠看出是time out問題,說明是鏈接服務器失敗,這裏是鏈接kerberos server失敗.接下來往下繼續定位是服務沒有起來仍是客戶端端口號弄錯了.
22) kerberos客戶端鏈接不上kdc server
修改/etc/krb5.conf中的kdc和admin_server對應的主機,操做便可.有時還須要登陸kerberos server對應節點,節點重啓krb5kdc和kadmind進程,使其生效.
23) 沒有kdc操做權限
kerberos server能夠經過sbin/kadmin.local(local單詞可知表示經過本機器登陸)直接操做,如listprincs,而經過bin/kadmin至關於遠程登陸,都直接報錯,表示沒有操做權限.
此時若是遠程登陸也須要具備該權限,只須要在kerberos server節點增長kadm5.acl該文件(文件存放路徑在kdc.conf中指定),而後重啓krb5kdc和kadmind進程.
文件內容以下:
*/admin@HADOOP.COM *
24) Webhdfs配置認證後,須要輸入user.name(也取消webhdfs認證)
配置webhdfs的simple模式認證,訪問得加入user.name
http://10.1.24.228:50070?user.name=hadoop