MapReduce資料流(一)

2021-06-19 15:53:02 字數 1149 閱讀 7789

作業由那些基本元件組成,從高層來看,所有的元件在一起工作時如下圖所示:

圖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 資料流重...