弹簧靴应用中的纱线配置

时间:2015-04-18 01:24:01

标签: java spring hadoop spring-boot yarn

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

这是我的配置

@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是LocalFileSystem而不是HDFS。

任何想法......

1 个答案:

答案 0 :(得分:0)

这里有几个可能的问题:

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

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

此外,这个core-site.xml应该在你的应用程序的类路径中,请注意hadoop jar也有一个默认/空的core-site.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();