为什么我的yarn应用程序没有从windows传输到hortoworks沙盒?

7bsow1i6  于 2021-05-29  发布在  Hadoop
关注(0)|答案(0)|浏览(178)

我在Windows7机器上安装了virtalbox 5.2.12 for windows,并在其中安装了hortonworks hdp 2.6.4 sandbox for virtualbox。
然后我尝试了我的第一个Yarn应用程序,我从“简单Yarn应用程序”下载。
这只是一个java文件application.java和一个application.yml资源文件,为了方便起见,我在下面提供了这两个文件。
我第一次尝试运行它(在构建之后)是手动(使用scp)将jar文件复制到沙盒中并在那里运行它。
为此,我修改了application.yml

hadoop:
    fsUri: hdfs://172.17.0.2:8020
    resourceManagerHost: localhost
    resource-manager-port: 8032

注意,我已经将“resource manager port:8032”添加到application.yml中,以匹配沙盒中的yarn-site.xml中的值。我还将各种别名添加到我的windows主机文件中。
在使用maven构建jar(gs-yarn-basic-single-0.1.0.jar)之后(请参阅附带的pom.xml文件),我在沙盒shell中使用以下命令运行它:
java-jar目标/gs-yarn-basic-single-0.1.0.jar
而且运行良好。
现在,我想从windows命令窗口运行jar,希望文件能被传输到沙盒中。
这有可能吗?
假设是这样,我接着说:
我首先在windows命令窗口中运行以下命令,并验证是否建立了某些连接:

telnet localhost 8020    
telnet localhost 8032

我尝试了各种application.yml,但是在构建和运行jar命令之后
java-jar目标/gs-yarn-basic-single-0.1.0.jar
在项目目录中,它们都失败了。
我尝试了application.yml和以下hadoop部分的变体,但都失败了:
1) 与在沙盒shell中运行时相同

hadoop:
    fsUri: hdfs://172.17.0.2:8020
    resourceManagerHost: localhost
    resource-manager-port: 8032

失败原因:

[2018-05-27 19:04:29.189] boot - 31852  INFO [main] --- AbstractResourceLocalizer: About to distribute localized files
[2018-05-27 19:04:56.330] boot - 31852  INFO [main] --- Client: Retrying connect to server: 172.17.0.2/172.17.0.2:8020.

2) 使用从git获得的原始配置

hadoop:
    fsUri: hdfs://localhost:8020
    resourceManagerHost: localhost

失败原因:

[2018-05-27 19:13:11.979] boot - 29072  INFO [main] --- AbstractResourceLocalizer: About to distribute localized files
[2018-05-27 19:13:35.451] boot - 29072  INFO [Thread-7] --- DFSClient: Exception in createBlockOutputStream
java.net.ConnectException: Connection timed out: no further information
        at sun.nio.ch.SocketChannelImpl.checkConnect(Native Method)

3) 添加了沙盒中定义的资源管理器端口

hadoop:
        fsUri: hdfs://localhost:8020
        resourceManagerHost: localhost
        resource-manager-port: 8032

失败,错误与(2)中相同
如何将这些文件从windows命令窗口分发/本地化到在virtualbox中运行的沙盒?
我错过了什么?
源文件如下:
应用程序.java:

package hello;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileStatus;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Profile;
import org.springframework.data.hadoop.fs.FsShell;
import org.springframework.yarn.annotation.OnContainerStart;
import org.springframework.yarn.annotation.YarnComponent;

@ComponentScan
@EnableAutoConfiguration
public class Application {

    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }

    @YarnComponent
    @Profile("container")
    public static class HelloPojo {

        private static final Log log = LogFactory.getLog(HelloPojo.class);

        @Autowired
        private Configuration configuration;

        @OnContainerStart
        public void onStart() throws Exception {
            log.info("Hello from HelloPojo");
            log.info("About to list from hdfs root content");

            FsShell shell = new FsShell(configuration);
            for (FileStatus s : shell.ls(false, "/")) {
                log.info(s);
            }
            shell.close();
        }

    }

}

应用程序.yml:

spring:
    hadoop:
        fsUri: hdfs://localhost:8020
        resourceManagerHost: localhost
        resource-manager-port: 8032
    yarn:
        appName: gs-yarn-basic-single
        applicationDir: /app/gs-yarn-basic-single/
        client:
            startup:
                action: submit
            localizer:
                patterns:
                  - "*.jar"
            files:
              - "file:target/gs-yarn-basic-single-0.1.0.jar"
            launchcontext:
                archiveFile: gs-yarn-basic-single-0.1.0.jar
        appmaster:
            localizer:
                patterns:
                  - "*.jar"
            containerCount: 1
            launchcontext:
                archiveFile: gs-yarn-basic-single-0.1.0.jar
                arguments:
                    --spring.profiles.active: container

2018年5月29日新增信息:
如果我在没有启动沙盒的情况下启动virtualbox,那么telnet命令(在我的windows7命令窗口中)到localhost检查端口8020或8032失败。启动沙箱后,他们成功了。这告诉我至少这两个端口的端口转发(从virualbox到sandbox)工作正常。
myyml中使用的地址172.17.0.2基于ifconfig命令在沙盒shell中运行时的输出。此地址与eth0关联。

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题