• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
  • Distcp工具深入分析(2)

    發表于:2014-06-25來源:淘測試作者:凡提點擊數: 標簽:軟件測試
    隨后,DistCp會以268435456字節(256MB)為切分單位計算map數,這個數值可以通過-sizelimit參數進行人為修改。DistCp構造了自己的InputSplit,將_distcp_src_files文件以剛

      隨后,DistCp會以268435456字節(256MB)為切分單位計算map數,這個數值可以通過-sizelimit參數進行人為修改。DistCp構造了自己的InputSplit,將_distcp_src_files文件以剛才所說的值為單位進行切分,如果設定了-m參數,則會按照該參數設定的map數為基準進行切分。這里需要注意切分的map數不會恰好等于-m參數設定的值,由于不能整除的原因,總會或多或少的偏離一點設定值。

      map數的確定算法如下:

    private static void setMapCount(long totalBytes, JobConf job)

    throws IOException {

    int numMaps =

    (int)(totalBytes / job.getLong(BYTES_PER_MAP_LABEL, BYTES_PER_MAP));

    numMaps = Math.min(numMaps,

    job.getInt(MAX_MAPS_LABEL, MAX_MAPS_PER_NODE *

    new JobClient(job).getClusterStatus().getTaskTrackers()));

    job.setNumMapTasks(Math.max(numMaps, 1));

    }

      這里可以看到,DistCp其實還判斷了集群實際tasktracker數量,防止map數設置的太多,導致很多map需要等待一輪輪的調度。

      切分代碼如下:

    SequenceFile.Reader sl = null;

    try {

    sl = new SequenceFile.Reader(fs, src, job);

    for

    原文轉自:http://www.taobaotest.com/blogs/2516

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>