Hadoop分塊和分片
阿新 • • 發佈:2019-01-09
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)為一個分片
當某個分塊分成均等的若干分片時,會有最後一個分片大小小於定義的分片大小,則該分片獨立成為一個分片。