Hadoop使用常見問題以及解決方法

1:Shuffle Error: Exceeded MAX_FAILED_UNIQUE_FETCHES; bailing-out Answer: 
程序裏面須要打開多個文件,進行分析,系統通常默認數量是1024,(用ulimit -a能夠看到)對於正常使用是夠了,可是對於程序來說,就太少了。 修改辦法: 修改2個文件。 
        /etc/security/limits.conf vi /etc/security/limits.conf 加上: 
* soft nofile 102400 * hard nofile 409600  
        $cd /etc/pam.d/     $sudo vi login 
        添加        session    required     /lib/security/pam_limits.so  


2:Too many fetch-failures Answer:  java

出現這個問題主要是結點間的連通不夠全面。 1) 檢查 、/etc/hosts    要求本機ip 對應 服務器名 
   要求要包含全部的服務器ip + 服務器名 2) 檢查 .ssh/authorized_keys 
   要求包含全部服務器(包括其自身)的public key  


3:處理速度特別的慢 出現map很快 可是reduce很慢 並且反覆出現 reduce=0%  Answer: 結合第二點,而後  node

修改 conf/hadoop-env.sh 中的export HADOOP_HEAPSIZE=4000   


4:可以啓動datanode,但沒法訪問,也沒法結束的錯誤  服務器

在從新格式化一個新的分佈式文件時,須要將你NameNode上所配置的dfs.name.dir這一namenode用來存放NameNode 持久存儲名字空間及事務日誌的本地文件系統路徑刪除,同時將各DataNode上的dfs.data.dir的路徑 DataNode 存放塊數據的本地文件系統路徑的目錄也刪除。如本此配置就是在
NameNode上刪除
/home/hadoop/NameData,在DataNode上刪除/home/hadoop/DataNode1和/home/hadoop/DataNode2。這是由於Hadoop在格式化一個新的分佈式文件系統時,每一個存儲的名字空間都對應了創建時間的那個版本(能夠查看/home/hadoop /NameData/current目錄下的VERSION文件,上面記錄了版本信息),在從新格式化新的分佈式系統文件時,最好先刪除NameData 目錄。必須刪除各DataNode的dfs.data.dir。這樣纔可使namedode和datanode記錄的信息版本對應。 

注意:刪除是個很危險的動做,不能確認的狀況下不能刪除!!作好刪除的文件等統統備份!!   session

5java.io.IOException:  ssh

Could not obtain block: blk_194219614024901469_1100 file=/user/hive/warehouse/src_20090724_log/src_20090724_log 出現這種狀況大可能是結點斷了,沒有鏈接上。   jvm

6:java.lang.OutOfMemoryError: Java heap space 
出現這種異常,明顯是jvm內存不夠得緣由,要修改全部的datanode的jvm內存大小。 Java -Xms1024m -Xmx4096m 

通常jvm的最大內存使用應該爲總內存大小的一半,咱們使用的8G內存,因此設置爲4096m,這一值可能依舊不是最優的值。  分佈式

7: Namenode in safe mode  解決方法  oop

bin/hadoop dfsadmin -safemode leave  


8:java.net.NoRouteToHostException: No route to host j解決方法:  fetch

sudo /etc/init.d/iptables stop  


9:更改namenode後,在hive中運行select 依舊指向以前的namenode地址 這是由於:When youcreate a table, hive actually stores the location of the table (e.g.  ui

hdfs://ip:port/user/root/...) in the SDS and DBS tables in the metastore . So when I bring up a new cluster the master has a new IP, but hive's metastore is still pointing to the locations within the old  cluster. I could modify the metastore to update with the new IP everytime I bring up a cluster. But the easier and simpler solution was to just use an elastic IP for the master  因此要將metastore中的以前出現的namenode地址所有更換爲現有的namenode地址
相關文章
相關標籤/搜索