1. 程式人生 > >MapReduce的工作流

MapReduce的工作流

如何將資料處理問題轉化為MapReduce模型

資料處理問題更復雜,通常是因為有更多的MapReduce作業,而不是更復雜的map函式和reduce函式,換而言之,通常是增加更多的作業,而不是增加作業的複雜度。對於更復雜的問題,可考慮比MapReduce更高階的語言,例如Pig、hive、Spark等,有了他們之後,就不用處理到MapReduce作業的轉換,而是集中精力分析正在執行的任務。

一個作業可以包含多個(簡單的)MapReduce步驟,這樣整個作業由多個可分解可維護的mapper和reducer組成。具體看書的第四部分,即介紹一些在Hadoop上構建的專案部分。

mapper和reducer可以進一步分解,mapper 一般執行輸入格式解析、投影(選擇相關的欄位)和過濾(去掉無關記錄),還可以將這些功能分割到不同的mapper中,然後使用Hadoop自帶的ChainMapper類庫將它們連線成一個mapper,結合使用ChainReducer,可以在一個MapReduce作業中執行一系列的mapper,再執行一個reducer和另一個mapper鏈。

關於JobControl

當MapReduce工作流的作業不止一個時,如何管理這些作業按順序執行,主要考慮是否有一個線性的作業鏈或一個更復雜的作業有向無環圖(DAG)。