pik*_*ile 5 java hadoop-yarn apache-spark
我有一个MapReduce任务,我想从我的Java代码在Spark YARN集群上运行。我也想在我的Java代码中检索reduce结果(字符串和数字对,元组)。就像是:
// I know, it's wrong setMaster("YARN"), but just to describe what I want.
// I want to execute job ob the cluster.
SparkConf sparkConf = new SparkConf().setAppName("Test").setMaster("YARN");
JavaSparkContext sc = new JavaSparkContext(sparkConf);
JavaRDD<Integer> input = sc.parallelize(list);
// map
JavaPairRDD<String, Integer> results = input.mapToPair(new MapToPairExample());
// reduce
String max = results.max(new MyResultsComparator())._1();
Run Code Online (Sandbox Code Playgroud)
如果我将master设置为local,local []或spark:// master:7707,它将起作用。
所以问题是:我可以以某种方式对纱线簇进行同样的处理吗?
通常,当将master作为yarn和deploy 模式作为cluster传递时,spark-submit 命令的工作方式如下(来源:Spark 的 Github 代码库):
在此流程中,步骤 1-5 发生在客户端/网关机器上。从第 6 步开始,一切都在 Yarn 集群上执行。
现在,为了回答您的问题,我从未尝试从代码中以纱线集群模式执行 spark ,但是根据上述流程,您的代码段只能在节点管理器机器中的应用程序主容器中运行如果您希望它以纱线集群模式运行,则纱线集群。而且,只有当您从命令行指定spark-submit --master yarn --deploy-mode cluster 时,您的代码才能到达那里。所以在代码中指定它并:
欢迎对此进行任何更正!
您需要使用 Spark-Submit 来完成此操作。Spark 提交会为您处理许多事情,从将依赖项传送到集群以及设置正确的类路径等。当您在本地模式下将其作为主 Java 程序运行时,您的 IDE 会处理类路径(因为驱动程序/执行程序在同一 jvm 中运行)。
"yarn-client"如果您希望驱动程序在您的计算机上运行,您也可以使用模式。
用于纱线簇模式.setMaster("yarn-cluster")
| 归档时间: |
|
| 查看次数: |
5193 次 |
| 最近记录: |