本篇博主將介紹你們中學習前面的hadoop文章中可能出現的問題。java
首先,可能涉及的命令:node
#命令:startx啓動linux圖形界面 #設置時間(或者也可以使用ntp作linux時間同步) sudo date -s "2018-11-06 21:00:00" #安裝tree命令(可用於查看進程、目錄等) yum install -y tree #遞歸查看根目錄 ll -R /
1、運行mr程序出錯linux
#錯誤效果 connecting to resoucemanager retrying .... retrying ..... #緣由是沒有啓動yarn或者啓動失敗
2、初始化工做目錄結構apache
hdfs namenode -format 只是初始化了namenode的工做目錄,而datanode的工做目錄是在第一次將datanode啓動後本身初始化的。若是將datanode的原來的工做目錄刪除掉,再次啓動會獲得一個全新的datanode。windows
3、datanode不被namenode識別的問題api
namenode在format初始化的時候會造成兩個標識:blockPoolId、clusterId;這兩個標識會在datanode初始化成功加入集羣后記錄到namenode的工做空間,標識該namenode所屬的hdfs集羣的惟一標識。若是namenode從新format後,這兩個值會生成新的值,原來的namenode就沒法被識別,此時須要刪除原來的namenode的工做目錄,從新啓動。安全
4、datanode下線後多久看到效果
datanode沒有作相似於以前文章中提到的利用zookeeper作成服務動態感知的方式,不是一下線就會被namenode認定爲下線的,有一個超時時間。服務器
5、關於副本數量的問題oop
副本數由客戶端的參數dfs.replication決定(優先級: 代碼conf.set() > 自定義配置文件 > jar包中的hdfs-default.xml),服務器上配置的那個值 只對命令行客戶端生效。學習
6、HADOOP_HOME or hadoop.home.dir are not set問題
[main] DEBUG org.apache.hadoop.util.Shell - Failed to detect a valid hadoop home directory java.io.IOException: HADOOP_HOME or hadoop.home.dir are not set
1.在windows中設置環境變量HADOOP_HOME和hadoop.home.dir
2.若是還不行就在代碼中初始化hdfs客戶端以前設置系統環境變量:
· windows中:System.setProperty("hadoop.home.dir", "E:\\\\hadoop-2.9.1");
linux中:System.setProperty("hadoop.home.dir", "/usr/local/hadoop-2.9.1");
7、windows鏈接上hdfs服務器後,安全模式關閉後,java程序可讀取可是不能寫操做,
這是由於默認是用當前用戶名去通訊的;解決方案:(1)可關閉權限校驗或去改當前用戶名(2)System.setProperty("HADOOP_USER_NAME","xxx");
8、windos中命令運行hdfs api是報錯
檢查本身是否已經將hadoop在本機上編譯生成的文件放入相應的hadoop目錄。
最後寄語,以上是博主本次文章的所有內容,若是你們以爲博主的文章還不錯,請點贊;若是您對博主其它服務器大數據技術或者博主本人感興趣,請關注博主博客,而且歡迎隨時跟博主溝通交流。