开发者社区> 问答> 正文

Hadoop中metaFolder的源代码和过程分析以及实现了什么功能?

Hadoop中metaFolder的源代码和过程分析以及实现了什么功能?

展开
收起
游客yzrzs5mf6j7yy 2021-12-06 06:27:31 285 0
1 条回答
写回答
取消 提交回答
  • 
    metafolder是DISTCP工具准备元数据的地方,在createMetaFolderPath()中会结合一个随机数生成一个工作目录,在这个目录中迟点会通过getFileListingPath()生成fileList.seq文件,然后往这个文件中写入数据,这是一个SequenceFile文件,即Key/Value结构的序列化文件,这个文件里将存放所有需要拷贝的源目录/文件信息列表。其中Key是源文件的Text格式的相对路径,即relPath;而Value则记录源文件的FileStatus格式的org.apache.hadoop.fs.FileStatus信息,这里FileStatus是hadoop已经封装好了的描述HDFS文件信息的类,但是DISTCP为了更好的处理数据,重新继承并封装了CopyListingFileStatus类,其描述如下图1,不过我们其实可以认为这里的Value就是FileStatus即可。metafolder目录中的fileList.seq最终会作为参数传递给MR任务中的Mapper。
    
    
    
    
    
    
    
    
     
    private Path createMetaFolderPath() throws Exception    {
    
        Configuration    configuration = getConf();
    
        Path    stagingDir = JobSubmissionFiles.getStagingDir(
    
                new    Cluster(configuration), configuration);
    
        Path    metaFolderPath = new Path(stagingDir,   PREFIX + String.valueOf(rand.nextInt()));
    
        if    (LOG.isDebugEnabled())
    
          LOG.debug("Meta    folder location: " + metaFolderPath);
    
           configuration.set(DistCpConstants.CONF_LABEL_META_FOLDER,    metaFolderPath.toString());
    
        return    metaFolderPath;
    
    }
    
    2021-12-06 06:27:51
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
《构建Hadoop生态批流一体的实时数仓》 立即下载
零基础实现hadoop 迁移 MaxCompute 之 数据 立即下载
CIO 指南:如何在SAP软件架构中使用Hadoop 立即下载