弹簧引导应用程序中的纱线配置



我正在尝试使用 spring boot 编写一个 yarn 应用程序。只是为了明确一点,我没有使用弹簧纱线功能。相反,我正在使用普通的弹簧靴子来使用纱线。出于某种原因,当我在 Spring 引导应用程序中加载 new YarnConfiguration() 对象时,它只加载核心站点.xml和 yarn-site.xml而不是 mapred、hdfs 和所有默认的 xml 等效项。如果我不使用 spring 启动,则加载所有 xml 文件。不加载 xml 文件的问题是应用程序无法连接到资源管理器。我假设这是由 spring boot 引起的类路径中的一些变化引起的,但我不确定如何解决它们。

这是我的配置

@Configuration
@EnableConfigurationProperties
@EnableAutoConfiguration
@ComponentScan
public class Application implements CommandLineRunner {
    @Bean
    public org.apache.hadoop.conf.Configuration conf() throws IOException {
      YarnConfiguration conf = new YarnConfiguration();
      log.info("conf " + conf.toString());
      log.info("fs " + FileSystem.get(conf));
      return new YarnConfiguration();
    }

日志输出显示配置中仅加载了 2 个 xml 文件,因此,下一行加载的 fs 是本地文件系统而不是 HDFS。

任何想法...

这里有几个可能的问题:

关于本地文件系统而不是 hdfs:YarnConfiguration 应该加载 core-site.xml,你的 core-site .xml 应该有这样的东西:

  <property>
    <name>fs.defaultFS</name>
    <value>hdfs://NAMENODE:8020</value>
  </property>

此外,这个核心站点.xml应该在你的应用程序的类路径中,请注意Hadoopjars也有一个默认/空的核心站点.xml,所以你必须确保你的有优先级。

关于 Yarn 和 mapreduce:Yarn 是一个通用的资源管理和调度框架,mapReduce 只是可以在 yarn 上运行的应用程序类型之一。这就是为什么 YarnConfiguration 不会加载 mapreduce-*.xml,但是当你尝试提交 mapreduce 作业时,这些文件将由 mapreduce 代码加载:

Configuration configuration = new YarnConfiguration()    
Job job = Job.newInstance(configuration)
job.getConfiguration(); // this configuration should have mapred-*.xml files loaded
job.submit();

相关内容

  • 没有找到相关文章

最新更新