很多人都是“一看就會,一做就廢”眼睛:我會了,我們開始吧!手:你會了我還沒會呢!在之前的Hadoop是什麼中已經說過MapReduce採用了分而治之的思想,MapReduce主要分為兩部分,一部分是Map——分,一部分是Reduce——合,那麼MapReduce的程式設計該怎麼弄呢?下面5個步驟告訴你!
一、概念複習!
(1)客戶端(Client):編寫mapreduce程式,配置作業,提交作業,這就是程式設計師完成的工作
(2)JobTracker:JobTracker是一個後臺服務程序,啟動之後,會一直監聽並接收來自各個TaskTracker傳送的心跳資訊,包括資源使用情況和任務執行情況等資訊。
1。作業控制:在hadoop中每個應用程式被表示成一個作業,每個作業又被分成多個任務,2。JobTracker的作業控制模組則負責作業的分解和狀態監控。
狀態監控:主要包括TaskTracker狀態監控、作業狀態監控和任務狀態監控。主要作用:容錯和為任務排程提供決策依據。
3。JobTracker只有一個,他負責了任務的資訊採集整理,你就把它當做包工頭把,這個和採用Master/Slave結構中的Master保持一致
4。JobTracker 對應於 NameNode
5。一般情況應該把JobTracker部署在單獨的機器上
(3)TaskTracker:TaskTracker是JobTracker和Task之間的橋樑。TaskTracker與JobTracker和Task之間採用了RPC協議進行通訊。
1。從JobTracker接收並執行各種命令:執行任務、提交任務、殺死任務等
2。將本地節點上各個任務的狀態透過心跳週期性彙報給JobTracker,節點健康情況、資源使用情況,任務執行進度、任務執行狀態等,比如說map task我做完啦,你什麼時候讓reduce task過來拉資料啊
3。TaskTracker是執行在多個節點上的slaver服務。TaskTracker主動與JobTracker通訊,接收作業,並負責直接執行每一個任務。
4。TaskTracker都需要執行在HDFS的DataNode上
(4)HDFS:儲存作業的資料、配置資訊等等,最後的結果也是儲存在hdfs上面
1。NameNode: 管理檔案目錄結構,接受使用者的操作請求,管理資料節點(DataNode)
2。DataNode:是HDFS中真正儲存資料的
3。Block:是hdfs讀寫資料的基本單位,預設64MB大小,就是說如果你有130MB資料,那就要分成三個block,兩個存放64MB,最後一個存放2MB資料,雖然最後一個block塊是64MB,但實際上佔用空間為2MB
4。Sencondary NameNode:它的目的是幫助 NameNode 合併編輯日誌,減少 NameNode 啟動時間,在檔案系統中設定一個檢查點來幫助NameNode更好的工作。它不是要取代掉NameNode也不是NameNode的備份。
認真複習了嗎?複習好了嗎?接下來就開始動手操作吧!
二、
五步走!
整個MapReduce程式,所有資料以(key,value)形式流動
第一步:
input
正常情況下不需要寫程式碼
僅僅在MapReduce程式執行的時候指定一個路徑即可
第二步:
map(核心)
map(key,value,output,context)
key:每行資料的偏移量——基本沒用
value:每行資料的內容——真正需要處理的內容
第三步:
shuffle
不需要寫程式碼
第四步:
reduce(核心)
reduce(key,value,output,context)
key:業務需求中的key
value:要聚合的值
第五步:
output
正常情況下不需要寫程式碼
僅僅在MapReduce程式執行的時候指定一個路徑即可
比想象的要簡單許多吧,只要多動手練習一下,這些都不難,如果一次沒成功,那就再練習一次。
本期的內容就是這些了,要多加練習,一遍一遍的敲程式碼,然後執行。光靠眼睛會了還不行,手也得會!大資料開發之路,期待你的成長!
希望大家點個關注,及時收取最新文章推送,想了解更多敬請諮詢加米穀大資料。
有問題的歡迎在評論區留言,如有侵權請告知。