HDFS讀和寫

來源:互聯網
上載者:User

hadoop處理的輸入資料通常很大,以GB或TB計。hadoop將大檔案分割為多個塊(分區、Input split),分別存在多個機器上。這樣,當需要分析此大檔案時,MapReduce程式在多台機器上平行處理。

分區不能太大,如果所有資料在一個分區內,那就無法平行處理;

分區不能太小,啟動和停止每個分區也需要消耗時間。

HDFS使用FSDataInputStream讀取檔案,提供了隨機讀功能。


Mapper


Reducer


Partitioner

對於指定的Key和Value,選擇對應的Reducer。

並不是整個MapReduce程式只有一個Reducer。

Combiner

在Mapper本地進行一次reduce操作


InputFormat

分割和讀取檔案的方式

HDFS提供的常用的:

TextInputFormat:

KeyValueTextInputFormat:

SequenceFileInputFormat:

NLineInputFormat:

也可以實現自己的InputFormat,只需實現兩個方法:

getSplits:分割成多個輸入分區,每個map任務分配一個分區。

getRecordReader:順序讀取指定分區中的所有記錄,解析出Key和Value。

通常繼承自FileInputFormat,已經實現了getSPlits,只需自己實現RecordReader即可。


OutputFormat

當MapReduce處理檔案結束後,需要每個reducer把自己的輸出寫入到各自的檔案裡。

輸出檔案放在一個公用目錄中,命名為part-nnnnn,nnnnn為reducer的分區ID。

相對應的,由RecordWriter對輸出進行格式化。

HDFS提供的常用的:

TextOutputFormat:

SequenceFileOutputFormat:可以再由SequenceFileInputFormat再進行讀取,這樣可以串聯起來,作為中間結果。

NullOutputFormat:







聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.