在
作業由那些基本元件組成,從高層來看,所有的元件在一起工作時如下圖所示:
圖4.4高層mapreduce工作流水線
近距離觀察
圖4.5細節化的hadoop mapreduce資料流
圖4.5展示了流線水中的更多機制。雖然只有2個節點,但相同的流水線可以複製到跨越大量節點的系統上。下去的幾個段落會詳細講述mapreduce程式的各個階段。
輸入檔案:檔案是mapreduce任務的資料的初始儲存地。正常情況下,輸入檔案一般是存在hdfs裡。這些檔案的格式可以是任意的;我們可以使用基於行的日誌檔案,也可以使用二進位制格式,多行輸入記錄或其它一些格式。這些檔案會很大—數十g或更大。
輸入格式:inputformat類定義了如何分割和讀取輸入檔案,它提供有下面的幾個功能:
hadoop自帶了好幾個輸入格式。其中有乙個抽象類叫fileinputformat,所有操作檔案的inputformat類都是從它那裡繼承功能和屬性。當開啟hadoop作業時,fileinputformat會得到乙個路徑引數,這個路徑內包含了所需要處理的檔案,fileinputformat會讀取這個資料夾內的所有檔案(譯註:預設不包括子資料夾內的),然後它會把這些檔案拆分成乙個或多個的inputsplit。你可以通過jobconf物件的setinputformat()方法來設定應用到你的作業輸入檔案上的輸入格式。下表給出了一些標準的輸入格式:
輸入格式 描述
鍵 值textinputformat
預設格式,讀取檔案的行
行的位元組偏移量
行的內容
keyvalueinputformat
把行解析為鍵值對
第乙個tab字元前的所有字元
行剩下的內容
sequencefileinputformat
hadoop定義的高效能二進位制格式
使用者自定義
使用者自定義
表4.1mapreduce提供的輸入格式
MapReduce資料流(二)
輸入塊 inputsplit 乙個輸入塊描述了構成mapreduce程式中單個map任務的乙個單元。把乙個mapreduce程式應用到乙個資料集上,即是指乙個作業,會由幾個 也可能幾百個 任務組成。map任務可能會讀取整個檔案,但一般是讀取檔案的一部分。預設情況下,fileinputformat及其...
TCP互動資料流 成塊資料流
tcp資料流分類 基於tcp的各類解決方案,可以根據資料吞吐量來大致分成兩大類 1 互動資料型別,例如telnet,ssh,這種型別的協議在大多數情況下只是做小流量的資料交換,比如說按一下鍵盤,回顯一些文字等等。2 資料成塊型別,例如ftp,這種型別的協議要求tcp能盡量的運載資料,把資料的吞吐量做...
資料流重定向 一
為什麼要使用命令輸出重定向?螢幕輸出的資訊很重要,而且我們需要將它存下來的時候 後台執行中的程式,不希望它干擾螢幕正常的輸出結果時 一些系統的例行命令的執行結果,希望它可以存下來 一些執行命令的可能已知錯誤資訊時,想以 2 dev null 將它丟掉時 錯誤資訊與正確資訊需要分別輸出時 1 資料流重...