日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Hadoop_MapReduce的基本应用

發布時間:2023/11/27 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Hadoop_MapReduce的基本应用 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

實驗

目的

要求

目的:

  1. 了解MapReduce
  2. 掌握MapReduce編程模型
  3. 掌握MapReduce常見核心API編程
  4. MapReduce開發常用功能

?

?

  1. Java jdk 1.8;
  2. apache-maven-3.6.0;
  3. Myeclipse C10;
  4. Hadoop集群;

?

練習內容

任務一:MapReduce詞頻統計編程實例;

1、創建MapReduce項目;

2、修改pom.xml依賴文件

3、導入Hadoop配置文件

4、關鍵代碼說明

4.1、map函數的方法

4.2、reduce函數的方法

4.3、main函數的調用(創建job類)

4.4、main函數的調用(設置job的輸入輸出路徑并提交集群)

4.5、main函數的調用(定義輸入輸出路徑)

5、編寫并上傳hello.txt文件至Hadoop hdfs系統

6、將項目打包成jar包并上傳至Hadoop中;

7、運行jar包,并顯示運行結果;

8、Web端Hadoop平臺任務展示

?

任務二:MapReduce排序的代碼實現

1、關鍵代碼說明

1.1、map函數的方法;

?

1.2、reduce函數的方法;

?

1.3、main函數的調用(創建job類)

?

?

1.4、main函數的調用(設置job類的輸入輸出路徑)

?

?

1.5、main函數的調用(定義輸入輸出路徑)

?

2、將項目打包成jar包,并上傳至Hadoop集群中;

3、上傳測試文件;

4、執行程序并展示結果;

5、Web端驗證;

任務三:MapReduce二次排序的實現原理

1、關鍵代碼的實現;

1.1、map函數的方法;

?

1.2、Reduce函數的方法;

?

1.3、main函數的調用(創建job類)

?

1.4、main函數的調用(設置job類輸入輸出路徑)

?

1.5、main函數的調用(定義輸入輸出路徑)

?

1.6、main函數的調用(調用分組函數)

?

1.7、排序函數的實現;

2、將項目打包成jar包,并上傳至Hadoop集群中;

3、上傳測試文件;

4、執行程序并展示結果;

?

出現的問題與解決方案

排錯一

錯誤:關于MapReduce,Map能完全執行,Reduce執行到一半卡住不執行

排錯思路:

卡住了幾個小時,死活停滯不前,發現后根據提示開始排錯,進入50030,進入作業發現

這說明作業在map之完后的shuffle階段中,reduce無法從map處拷貝數據,是因為客戶端與數據節點通訊失敗造成的。客戶端程序應該能夠和所有的節點通訊才能保證數據的傳輸正常,然后開始各種檢查:所有節點hosts中寫的完全相通,不是節點名稱不同或者節點沒有完全加上造成的,排除;找到slaves發現寫的也完全相同,不是節點缺失有誤,最后查看了防火墻的狀態,發現其中一個節點的防火墻沒有關閉,找到原因,service iptables stop,然后重新提交作業,成功運行

?

排錯二:

錯誤:Map或Reduce任務中的某些代碼拋出異常,此時Hadoop強行停止java虛擬機,并向JobTracker匯報,JobTracker將任務標記為失敗顯示給用戶,同時寫入日志目錄

排錯思路:

設置重試次數以及等待一定次數后對異常記錄跳過檢測:

conf.setInt("Mapred.Map.max.attempts",2); //設置嘗試次數,超過則失敗

conf.setInt("Mapred.skip.attempts.to.start.skipping",1); ? //開始“跳過”模式,讀取失敗超過則開啟“skip mode”

conf.setInt("Mapred.skip.Map.max.skip.reords",1); ? ? //設置最大跳過記錄數;

解決:不是所有的異常都會導致任務失敗,也有可能因為網絡或者硬件或其他原因導致運行過慢,此時Haodop會自動在另外一個節點上啟動同一個任務作為任務執行的一個備份。

?

排錯三:

錯誤:JAVA虛擬機重用。

原因:Hadoop為每個任務啟動一個新的虛擬機,若java虛擬機開啟過多(任務被劃分得過于細粒度),資源損耗會過大。

解決:“Java虛擬機重用模式”,類似線程池與連接池的原理。將細粒度的任務變成串行執行。多個java虛擬機被同時啟動,執行完一個任務后,并不直接關閉,而是被加載新的任務重新執行。同時執行的java虛擬機數目可設定,默認1,(不適合重用);默認-1,所有任務都用同一個java虛擬機。

總結

以上是生活随笔為你收集整理的Hadoop_MapReduce的基本应用的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

歡迎分享!

轉載請說明來源于"生活随笔",并保留原作者的名字。

本文地址:Hadoop_MapReduce的基本应用