首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用mesos dcos cli提交星火

使用mesos dcos cli提交星火
EN

Stack Overflow用户
提问于 2016-03-31 02:51:05
回答 2查看 1.1K关注 0票数 3

我正在尝试使用DCOS cli在mesos上启动一个火花流作业。我能开始工作了。我的程序期望将一个配置文件作为cli参数传递。如何使用dcos星火运行-提交args实现这一目标?

我试过了--文件http://server/path/to//file,希望它能下载文件,但这行不通。驱动程序启动,但由于缺少配置文件而失败。

我还试图将jar和config文件卷起来作为tar,并提交它。在Mesos日志中,我可以看到tar是被取下来的,并且是untar的。可以在工作目录中看到config和jar文件。但是ClassNotFoundException的工作失败了。我怀疑火花提交是如何开始的,有些地方不对劲。

代码语言:javascript
复制
dcos spark run --submit-args="--supervise --deploy-mode cluster --class package.name.classname http://file-server:8000/Streaming.tar.gz Streaming.conf"

对如何进行有任何提示吗?另外,我可以在哪个日志文件中看到DCOS使用的基础submit命令?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-04-04 15:14:06

下面是一个命令的示例,为了使其工作,您应该启动该命令:

dcos spark run --submit-args='--conf spark.mesos.uris=https://s3-us-west-2.amazonaws.com/andrey-so-36323287/pi.conf --class JavaSparkPiConf https://s3-us-west-2.amazonaws.com/andrey-so-36323287/sparkPi_without_config_file.jar /mnt/mesos/sandbox/pi.conf'

哪里

--conf spark.mesos.uris=...:由Mesos启动驱动程序或执行器时将下载到沙箱中的URI的逗号分隔列表。这适用于粗粒度和细粒度模式。 /mnt/mesos/sandbox/pi.conf主类作为第0参数接收到的下载文件的路径(请参阅下面的代码片段)。/mnt/mesos/sandbox/是容器内的一个标准路径,它被映射到协同响应的mesos任务沙箱。

代码语言:javascript
复制
public final class JavaSparkPiConf {

  public static void main(String[] args) throws Exception {
    SparkConf sparkConf = new SparkConf().setAppName("JavaSparkPi");
    JavaSparkContext jsc = new JavaSparkContext(sparkConf);

    Scanner scanner = new Scanner(new FileInputStream(args[0]));
    int slices;
    if (scanner.hasNextInt()) {
      slices = scanner.nextInt();
    } else {
      slices = 2;
    }
    int n = 100000 * slices;
    List<Integer> l = new ArrayList<>(n);
    for (int i = 0; i < n; i++) {
      l.add(i);
    }

    JavaRDD<Integer> dataSet = jsc.parallelize(l, slices);

    int count = dataSet.map(new Function<Integer, Integer>() {
      @Override
      public Integer call(Integer integer) {
        double x = Math.random() * 2 - 1;
        double y = Math.random() * 2 - 1;
        return (x * x + y * y < 1) ? 1 : 0;
      }
    }).reduce(new Function2<Integer, Integer, Integer>() {
      @Override
      public Integer call(Integer integer, Integer integer2) {
        return integer + integer2;
      }
    });

    System.out.println("Pi is roughly " + 4.0 * count / n);

    jsc.stop();
  }
}
票数 4
EN

Stack Overflow用户

发布于 2016-03-31 17:10:02

Streaming.conf只是一个字符串,它将传递给您的驱动程序。你的司机一定能看见它。最简单的方法是将其放置在一个可访问的位置,指定您希望它通过spark.mesos.uris 1下载到沙箱中。您可以交替编写应用程序,以支持从远程位置读取,并在CLI上传递该位置。

--files用于将文件放在执行器上,但是您试图将一个文件传递给驱动程序,这样就不能工作了。

1

迈克尔·古梅尔特

中间层

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36323287

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档