hadoop学习;datajoin;chain签名;combine()
hadoop有種簡化機制來管理job和control的非線性作業之間的依賴。job對象時mapreduce的表現形式。job對象的實例化可通過傳遞一個jobconf對象到作業的構造函數中來實現。
x.addDeopendingJob(y)意味著x在y完畢之前不會啟動。
鑒于job對象存儲著配置和依賴信息。jobcontrol對象會負責監管作業的運行,通過addjob()。你能夠為jobcontrol加入作業,當全部作業和依賴關系加入完畢后。調用jobcontrol的run()方法,生成一個線程提交作業并監視其運行,有allFinised()。getFailedJobs()方法
hadoop引入chainMapper和chainReducer來簡化預處理和后處理
driver會先設置“全局”jobconf對象。包括作業名,輸入路徑和輸出路徑等,它一次性加入全部步驟,然后按順序運行
ChainMapper.addMapper()方法的簽名來具體了解怎樣一步步的鏈接作業
byvalue用于推斷是否是值傳遞。若為false則採用引用傳遞。初始mapper的輸出內容保存在內存中,假設后期不再調用傳入的值,能夠這樣,效率高,一般設為true
reduce函數接收輸入數據,并對其值進行交叉乘積,reduce生成這些值的全部合并結果。
交叉乘積得到的每一個合并結果被送入函數combine()(不是combiner)生成一個輸出記錄。對于隨意特定的合并,combine能夠選擇不輸出。交叉乘積的本質確保了combine看到的記錄都有同樣的連接鍵
在解釋怎樣使用DatajoingMapperBase和DataJoinReduceBase之前,你須要了解在代碼通篇所使用的一個抽象數據類TaggedMapOutput(用Text標簽封裝記錄的數據類型)
在數據流的描寫敘述中,mapper輸出的包帶有一個組鍵和一個被標簽記錄的值。datajoin軟件包指定組鍵為text類型。而值為TaggerMapOutput類型,它詳細實現了getTag()和setTag(Text Tag)方法
作為mapper的輸出,TaggerMapOutput必須是Writable類型,因此我們的子類必須實現readFile()和write()方法
DataJoinMapper運行全部的封裝。指定了三個能夠填充的抽象方法
generateInputTag在map任務開始前調用。來為這個map任務所處理的全部記錄指定一個全局標簽,
假設橫跨幾個文件,能夠用它們的前綴作為標簽
完畢map任務初始化后,為每一個記錄調用DataJoinMapperBase的map()方法。里面調用generateTaggedOutput()和generateGroupKey()方法
原則上。在同一文件里,不同的記錄能夠用不同的標簽,在標準情況下,我們希望一個標簽代表一個數據源,它早先由generateInputTag()計算好并存在this.InputTag中
總結
以上是生活随笔為你收集整理的hadoop学习;datajoin;chain签名;combine()的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【算法和数据结构】_13_小算法_双链表
- 下一篇: 设计模式:常见模式案例