1. 程式人生 > >Hadoop分塊和分片

Hadoop分塊和分片

       HDFS的namenode只儲存整個檔案系統的元資料映象,這個映象由配置dfs.name.dir指定,datanode則存有檔案的metainfo和具體的分塊,儲存路徑由dfs.data.dir指定。

二、分片:

       hadoop的作業在提交過程中,需要把具體的輸入進行分片。具體的分片細節由InputSplitFormat指定。分片的規則為  FileInputFormat.class中的getSplits()方法指定:

       long splitSize = computeSplitSize(goalSize, minSize, blockSize);

      computeSplitSize:

             Math.max(minSize, Math.min(goalSize, blockSize));

       其中goalSize為“InputFile大小”/“我們在配置檔案中定義的mapred.map.tasks”值,minsize為mapred.min.split.size,blockSize為64,所以,這個算式為取分片大小不大於block,並且不小於在mapred.min.split.size配置中定義的最小Size。預設情況下,以HDFS的一個塊的大小(預設為64M)為一個分片

        當某個分塊分成均等的若干分片時,會有最後一個分片大小小於定義的分片大小,則該分片獨立成為一個分片。