1. 程式人生 > >Hadoop環境搭建問題彙總

Hadoop環境搭建問題彙總

一、啟動HDFS時dataNode一直沒有啟動

我們執行hdfs啟動命令後,再輸入 jps 命令檢視啟動程序,發現沒有DataNode程序

hadoop namenode -format

sbin/start-dfs.sh

原因

當我們使用 hadoop namenode -format 格式化namenode時,會在namenode資料資料夾(這個資料夾為自己配置檔案中dfs.name.dir的路徑我的是 /usr/local/hadoop/tmp 下面的name和data資料夾)中儲存一個current/VERSION檔案,記錄clusterID,datanode中儲存的current/VERSION檔案中的clustreID的值是上一次格式化儲存的clusterID,這樣,datanode和namenode之間的ID不一致。

namenode和datanode路徑配置 vim etc/hadoop/hdfs-site.xml

解決方法

  • 第一種:如果dfs資料夾中沒有重要的資料,那麼刪除dfs資料夾,再重新執行下列指令: (刪除所有節點下的dfs資料夾,dfs目錄在${HADOOP_HOME}/tmp/)

  • 第二種:如果dfs檔案中有重要的資料,那麼在dfs/name目錄下找到一個current/VERSION檔案,記錄clusterID並複製。然後dfs/data目錄下找到一個current/VERSION檔案,將其中clustreID的值替換成剛剛複製的clusterID的值即可;

再次啟動後輸入 jps 即可檢視啟動情況


二、Hadoop 50070埠無法開啟

問題一:配置的時候遇到 JAVA_HOME not set

解決辦法:必須在hadoop-env.sh檔案中設定JAVA的絕對路徑


問題二:能正常啟動叢集,能看8088埠,但是無法檢視50070,但是Namenode和datanode已經能JPS檢視

解決辦法:首先排除了防火牆的問題,後來看需要格式化,可能我重新修改hadoop-env之後我沒有namenode-format了


問題三:namenode format後,能啟動了,但是dfsadmin -report發現datanode沒有啟動

解決辦法,還好,以前有過這個經驗,修改tmp下面的各個slave的VERSION中的clusterID即可,和namenode匹配。詳細見


三、org.apache.hadoop.ipc.RpcException: RPC response exceeds maximum data length 錯誤

 Exception in thread "main" java.io.IOException: Failed on local exception: org.apache.hadoop.ipc.RpcException: RPC response exceeds maximum data length; Host Details : local host is: "mzmuer/172.19.82.225"; destination host is: "localhost":9870;
    at org.apache.hadoop.net.NetUtils.wrapException(NetUtils.java:808)
    at org.apache.hadoop.ipc.Client.getRpcResponse(Client.java:1495)
    at org.apache.hadoop.ipc.Client.call(Client.java:1437)
    at org.apache.hadoop.ipc.Client.call(Client.java:1347)
    at org.apache.hadoop.ipc.ProtobufRpcEngine$Invoker.invoke(ProtobufRpcEngine.java:228)
    at org.apache.hadoop.ipc.ProtobufRpcEngine$Invoker.invoke(ProtobufRpcEngine.java:116)
    at com.sun.proxy.$Proxy11.getBlockLocations(Unknown Source)
    at org.apache.hadoop.hdfs.protocolPB.ClientNamenodeProtocolTranslatorPB.getBlockLocations(ClientNamenodeProtocolTranslatorPB.java:305)

解決方法: 
1.通過 jps 檢視namenode和datanode是否啟動。未啟動需要呼叫start-dfs啟動。 
2.檢視core-site.xml配置檔案中的fs.default.name屬性。是否是請求的連結。請求到了錯誤的連結也可能是該錯誤.