暑假周進度報告(三)-------版本太高後續問題處理,eclipse編譯運行MapReduce以及Hadoop學習

  問題一:Hadoop版本過高
java

卸載Hadoop3.2.0 我改安裝了Hadoop 2.7.7數據庫

若是沒有權限下載。能夠採用以下方式:分佈式

 

卸載完成之後返回原目錄便可oop

後面的jdk卸載也能夠採用這種方式。spa

 

按照教程從新安裝http://dblab.xmu.edu.cn/blog/install-hadoop/.net

因爲後期須要安裝HBASE 因此Hadoop安裝版本選擇問題參考以下:命令行

 

 

 而後設計

 

執行這一步時或者某些會出現各類警告,這個是因爲以前安裝的jdk版本太高形成的 卸載jdk 改安裝jdk1.8.03d

  問題二:jdk版本太高code

按照上述方式,卸載jdk

而後配置環境變量

而後可能會出現JAVA_HOME is not set and could not be found 相似於這種java_home找不到這種錯誤,或者找不到default-java等修改一下hadoop-env.sh文件改一下jdk路徑便可,參考:https://blog.csdn.net/dianzishijian/article/details/52094569

運行MapReduce 項目實例的時候 可能會出現 

Unable to load native-hadoop library for your platform

解決參考教程:https://blog.csdn.net/jack85986370/article/details/51902871

啓動Hadoop:./sbin/start-dfs.sh

關閉Hadoop:./sbin/stop-dfs.sh

運行 Hadoop 程序時,爲了防止覆蓋結果,程序指定的輸出目錄(如 output)不能存在,不然會提示錯誤,所以運行前須要先刪除輸出目錄。

./bin/hdfs dfs -rm -r output # 刪除 output 文件夾

或者添加以下代碼 在程序中(能在每次運行時自動刪除輸出目錄,避免繁瑣的命令行操做)

  1. Configuration conf = new Configuration();
  2. Job job = new Job(conf);
  3.  
  4. /* 刪除輸出目錄 */
  5. Path outputPath = new Path(args[1]);
  6. outputPath.getFileSystem(conf).delete(outputPath, true);

 

 

 

 

 

 

 

 

  1. // String[] otherArgs = new GenericOptionsParser(conf, args).getRemainingArgs();
  2. String[] otherArgs=new String[]{"input","output"}; /* 直接設置輸入參數 */

   分佈式文件系統HDFS:

1.爲了解決海量數據的分佈式存儲的問題

2.知足大規模數據的批量處理需求,不會去訪問一塊一起的數據

3.實時性不高

4.不支持多用戶寫入及任意修改文件,只容許追加數據,不容許修改

 

  HDFS相關概念

1.塊:HDFS的一個快要比普通的一個快大不少(支持面向大規模數據存儲,下降分佈式節點的尋址開銷)-------->支持大規模文件存儲,簡化系統設計,適合數據備份

2.名稱節點(主節點,記錄數據庫存儲位置信息,數據目錄),數據節點(存儲實際數據,每一個數據節點上的數據是被保存到數據節點本地的Linux文件系統中去)----->兩大組件

 

 注意,在FsImage文件中是沒有具體記錄塊在哪一個數據節點存儲的

 

 HDFS啓動:先從底層讀出FsImage,再讀出EditLog,而後它們在內存中進行合併操做,合併後獲得一個新的FsImage,刪掉舊的FsImage,再生成一個新的EditLog,系統開始運行

第二名稱節點:1.名稱節點的冷備份,2.對EditLog的處理(幫助解決EditLog不斷增大的問題)

相關文章
相關標籤/搜索