日本乱偷中文字幕,美女脱内衣18禁免费看,亚洲国产精品丝袜在线观看,18女人腿打开无遮挡,廖承宇chinese野战做受

【Hadoop】jobhistory 作業(yè)緩存源碼詳解

jobhistory 作業(yè)緩存

jobhistory 一般會(huì )保存一部分作業(yè)信息到內存中,查詢(xún)作業(yè)信息的時(shí)候一般會(huì )從內存查詢(xún),如果內存查詢(xún)不到就會(huì )從磁盤(pán)上掃描。

jobhistory 緩存一般分為兩層,第一層是guava緩存,默認情況下guava的緩存個(gè)數是5,可以通過(guò)配置項mapreduce.jobhistory.loadedjobs.cache.size控制。

當guava的一級緩存中不存在的時(shí)候,默認是需要重新加載的,jobhistory中定義了加載規則,定義代碼如下:

CacheLoader<JobId, Job> loader;
loader = new CacheLoader<JobId, Job>() {
  @Override
  public Job load(JobId key) throws Exception {
    return loadJob(key);
  }
};

其中loadJob實(shí)現如下,其中hsManager為加載具體實(shí)現,

private Job loadJob(JobId jobId) throws RuntimeException, IOException {
  if (LOG.isDebugEnabled()) {
    LOG.debug("Looking for Job " + jobId);
  }
  HistoryFileInfo fileInfo;

  fileInfo = hsManager.getFileInfo(jobId);

  if (fileInfo == null) {
    throw new HSFileRuntimeException("Unable to find job " + jobId);
  }

  fileInfo.waitUntilMoved();

  if (fileInfo.isDeleted()) {
    throw new HSFileRuntimeException("Cannot load deleted job " + jobId);
  } else {
    return fileInfo.loadJob();
  }
}

hsManager中定義了jobhistory的二級緩存:jobListCache,jobListCache的大小可以通過(guò)配置項mapreduce.jobhistory.joblist.cache.size控制。
默認可以保存20000個(gè)。當然緩存超時(shí)指定時(shí)間可會(huì )被清理,具體可以有配置項mapreduce.jobhistory.max-age-ms控制,默認為1周。

查找的順序為:

  • 優(yōu)先從內存查找(二級緩存),為jobListCache。
  • 如果緩存找不見(jiàn),優(yōu)先掃描剛完成的作業(yè)所在的目錄,會(huì )刷新jobListCache緩存,由配置項mapreduce.jobhistory.intermediate-done-dir控制。
  • 如果還是找不見(jiàn),從已經(jīng)完成的作業(yè)的目錄掃描,具體目錄由配置項mapreduce.jobhistory.done-dir控制。
public HistoryFileInfo getFileInfo(JobId jobId) throws IOException {
  // 優(yōu)先從內存查找(二級緩存)
  HistoryFileInfo fileInfo = jobListCache.get(jobId);
  if (fileInfo != null) {
    return fileInfo;
  }
  // 如果緩存找不見(jiàn),優(yōu)先掃描剛完成的作業(yè)所在的目錄,由配置項mapreduce.jobhistory.intermediate-done-dir控制
  scanIntermediateDirectory();
  fileInfo = jobListCache.get(jobId);
  if (fileInfo != null) {
    return fileInfo;
  }

  // 如果還是找不見(jiàn),從已經(jīng)完成的作業(yè)的目錄掃描,具體目錄由配置項mapreduce.jobhistory.done-dir控制
  fileInfo = scanOldDirsForJob(jobId);
  if (fileInfo != null) {
    return fileInfo;
  }
  return null;
}



標 題:《【Hadoop】jobhistory 作業(yè)緩存源碼詳解
作 者:zeekling
提 示:轉載請注明文章轉載自個(gè)人博客:浪浪山旁那個(gè)村

    評論
    0 評論
avatar

取消
日本乱偷中文字幕,美女脱内衣18禁免费看,亚洲国产精品丝袜在线观看,18女人腿打开无遮挡,廖承宇chinese野战做受