页面树结构

2017-07-25 Apache Spark 2.2.0 官方文档中文版发布 : http://spark.apachecn.org/docs/cn/2.2.0/


MachineLearning 优酷地址 : http://i.youku.com/apachecn

转至元数据结尾
转至元数据起始

支持在 YARN (Hadoop NextGen) 上运行是在 Spark 0.6.0 版本中加入到 Spark 中的,并且在后续的版本中得到改进的。

Spark on YARN 运行

确保 HADOOP_CONF_DIR 或者 YARN_CONF_DIR 指向包含 Hadoop 集群的(客户端)配置文件的目录。这些配置被用于写入 HDFS 并连接到 YARN ResourceManager 。此目录中包含的配置将被分发到 YARN 集群,以便应用程序(application)使用的所有的所有容器(containers)都使用相同的配置。如果配置引用了 Java 系统属性或者未由 YARN 管理的环境变量,则还应在 Spark 应用程序的配置(驱动程序(driver),执行程序(executors),和在客户端模式下运行时的 AM )。

有两种部署模式可以用于在 YARN 上启动 Spark 应用程序。在集群模式下, Spark 驱动程序 (Spark driver) 运行在集群上由 YARN 管理的应用程序主进程 (master process) 内,并且客户端可以在初始化应用程序后离开。在客户端模式下,驱动程序在客户端进程中运行,并且应用程序主服务器仅用于从 YARN 请求资源。

Spark 独立模式 和 Mesos 模式不同的是,在这两种模式中,master 的地址在 --master 参数中指定,在 YARN 模式下, ResourceManager 的地址从 Hadoop 配置中选取。因此, --master 参数是 yarn

在集群模式下启动 Spark 应用程序 : 

$ ./bin/spark-submit --class path.to.your.Class --master yarn --deploy-mode cluster [options] <app jar> [app options]

例如 : 

$ ./bin/spark-submit --class org.apache.spark.examples.SparkPi \
    --master yarn \
    --deploy-mode cluster \
    --driver-memory 4g \
    --executor-memory 2g \
    --executor-cores 1 \
    --queue thequeue \
    lib/spark-examples*.jar \
    10

以上启动一个 YARN 客户端程序,启动默认的主应用程序(Application Master)。然后 SparkPi 将作为 Application Master 的子进程运行。客户端将定期轮询 Application Master 以获取状态的更新并在控制台中显示它们。一旦您的应用程序完成运行后,客户端将退出。请参阅下面的 "调试您的应用程序(Debugging your Application)" 部分,了解如何查看驱动程序(driver) 和 执行程序日志(executor logs)。

要在客户端模式下启动 Spark 应用程序,请执行相同的操作,但是将 client 替换 cluster 。下面展示了如何在客户端模式下运行 spark-shell

$ ./bin/spark-shell --master yarn --deploy-mode client

添加其他的 JARs

在集群模式下,驱动程序(driver)在与客户端不同的机器上运行,因此 SparkContext.addJar 将不会立即使用客户端本地的文件运行。要使客户端上的文件可用于 SparkContext.addJar ,请在启动命令中使用 --jars 选项来包含这些文件。

$ ./bin/spark-submit --class my.main.Class \
    --master yarn \
    --deploy-mode cluster \
    --jars my-other-jar.jar,my-other-other-jar.jar \
    my-main-jar.jar \
    app_arg1 app_arg2