当前位置: 首页>>代码示例>>Java>>正文


Java MiniDFSCluster.getNameEditsDirs方法代码示例

本文整理汇总了Java中org.apache.hadoop.hdfs.MiniDFSCluster.getNameEditsDirs方法的典型用法代码示例。如果您正苦于以下问题:Java MiniDFSCluster.getNameEditsDirs方法的具体用法?Java MiniDFSCluster.getNameEditsDirs怎么用?Java MiniDFSCluster.getNameEditsDirs使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在org.apache.hadoop.hdfs.MiniDFSCluster的用法示例。


在下文中一共展示了MiniDFSCluster.getNameEditsDirs方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。

示例1: doTestCrashRecoveryEmptyLog

import org.apache.hadoop.hdfs.MiniDFSCluster; //导入方法依赖的package包/类
/**
 * Test that the NN handles the corruption properly
 * after it crashes just after creating an edit log
 * (ie before writing START_LOG_SEGMENT). In the case
 * that all logs have this problem, it should mark them
 * as corrupt instead of trying to finalize them.
 * 
 * @param inBothDirs if true, there will be a truncated log in
 * both of the edits directories. If false, the truncated log
 * will only be in one of the directories. In both cases, the
 * NN should fail to start up, because it's aware that txid 3
 * was reached, but unable to find a non-corrupt log starting there.
 * @param updateTransactionIdFile if true update the seen_txid file.
 * If false, it will not be updated. This will simulate a case where
 * the NN crashed between creating the new segment and updating the
 * seen_txid file.
 * @param shouldSucceed true if the test is expected to succeed.
 */
private void doTestCrashRecoveryEmptyLog(boolean inBothDirs, 
    boolean updateTransactionIdFile, boolean shouldSucceed)
    throws Exception {
  // start a cluster 
  Configuration conf = new HdfsConfiguration();
  MiniDFSCluster cluster = null;
  cluster = new MiniDFSCluster.Builder(conf)
    .numDataNodes(NUM_DATA_NODES).build();
  cluster.shutdown();
  
  Collection<URI> editsDirs = cluster.getNameEditsDirs(0);
  for (URI uri : editsDirs) {
    File dir = new File(uri.getPath());
    File currentDir = new File(dir, "current");
    // We should start with only the finalized edits_1-2
    GenericTestUtils.assertGlobEquals(currentDir, "edits_.*",
        NNStorage.getFinalizedEditsFileName(1, 2));
    // Make a truncated edits_3_inprogress
    File log = new File(currentDir,
        NNStorage.getInProgressEditsFileName(3));

    EditLogFileOutputStream stream = new EditLogFileOutputStream(conf, log, 1024);
    try {
      stream.create(NameNodeLayoutVersion.CURRENT_LAYOUT_VERSION);
      if (!inBothDirs) {
        break;
      }
      
      NNStorage storage = new NNStorage(conf, 
          Collections.<URI>emptyList(),
          Lists.newArrayList(uri));
      
      if (updateTransactionIdFile) {
        storage.writeTransactionIdFileToStorage(3);
      }
      storage.close();
    } finally {
      stream.close();
    }
  }
  
  try {
    cluster = new MiniDFSCluster.Builder(conf)
      .numDataNodes(NUM_DATA_NODES).format(false).build();
    if (!shouldSucceed) {
      fail("Should not have succeeded in startin cluster");
    }
  } catch (IOException ioe) {
    if (shouldSucceed) {
      LOG.info("Should have succeeded in starting cluster, but failed", ioe);
      throw ioe;
    } else {
      GenericTestUtils.assertExceptionContains(
        "Gap in transactions. Expected to be able to read up until " +
        "at least txid 3 but unable to find any edit logs containing " +
        "txid 3", ioe);
    }
  } finally {
    cluster.shutdown();
  }
}
 
开发者ID:naver,项目名称:hadoop,代码行数:80,代码来源:TestEditLog.java


注:本文中的org.apache.hadoop.hdfs.MiniDFSCluster.getNameEditsDirs方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。