Hadoop程式設計模型元件 InputFormat

2021-06-15 00:34:00 字數 1154 閱讀 1556

hadoop中的inputformat介面:

inputformat介面主要的任務是對輸入的原始資料進行切分並轉換成格式的資料,它主要完成兩個功能:

1.通過getsplite()方法對原始資料進行切分,得到若干個inputsplite,這裡的切分是指邏輯上的切分,即確定每個splite的起始位址和長度而並沒有在物理上進行劃分;

2.通過getrecordreader ()方法將每乙個inputsplite解析為格式的資料並返回乙個recordreader物件,map()根據該物件逐一的讀取記錄進行處理;

fileinputformat類

在繼承了inputformat介面的若干個類中,最常用的是fileinputformat類,它主要實現了乙個統一的檔案切塊方法,getsplite()方法,該方法主要完成兩個功能:

1.計算每個splite塊的大小splitesize,在老版的hadoopapi中,這個數值與三個引數有關:minsize:由配置檔案所設定的最小塊,預設為1;goalsize:用檔案總大小除以使用者設定的map數得到的值;blocksize:檔案的物理儲存塊大小,預設為64mb;這樣splitesize的計算公式為:

splitesize=max};

在新版的api中,用maxsize這一引數取代了goalsize引數,maxsize與minsize一樣,也由配置檔案確定,這樣分塊的大小就與map數無關。

2.確定host,在確定了splitesize的大小之後,需要確定每個splite的元資料,格式是,其中host最難確定,它與檔案本地化息息相關,hadoop把檔案本地化的程度分成三個層次:本節點,本機架,其他機架。它採用乙個很簡單的啟發式演算法在確定host,hadoop先依據資料量的多少對所有的機架(rack)進行排序,然後對每個機架上的節點依據同樣的規則進行排序,最後選擇排名前n的節點作為host,n是每個檔案的副本數。

textinputformat與sequenceinputformat

這兩個類都繼承自fileinputstream,他們在fileinputstream實現了getsplite方法的基礎上,又各自實現了自己的getrecordreader方法。其中textinputformat所實現的規則是:對乙個inputsplite資料,以每一行做乙個劃分點,以該行的內容作為value,而以該行的起始位址相對於整個檔案首位址的偏移量作為key,這樣得到的結果就是形式資料。

Hadoop程式設計模型之InputFormat

inputformat介面主要用於描述輸入資料的格式,它有兩個方法 inputsplit getsplits jobconf job,int numsplits recordreaderv getrecordreader inputsplit split,jobconf job,reporter r...

Storm核心元件 程式設計模型

storm簡介 storm是用來做實時計算的框架,所以介紹storm之前需要知道什麼是流式計算。流式計算 資料實時產生 資料實時傳輸 資料實時計算 實時展示 代表技術 flume實時獲取資料 kafka metaq實時資料儲存 storm jstorm實時資料計算 redis實時結果快取 持久化儲存...

Hadoop重點元件

hdfs的全稱是hadoop distributed file system易於擴充套件的分布式檔案儲存系統,執行在大量普通廉價機器上,提供容錯機制,為大量使用者提供效能不錯的檔案訪問服務 它的設計目標是 自動快速檢測應對硬體錯誤 流式訪問資料 移動計算比移動資料本身更划算 簡單一致性模型 異構平台...