spark on yarn

启动

确保HADOOP_CONF_DIR 或YARN_CONF_DIR 指向相应的目录。
有两种启动方式:cluster mode 和 client mode。
cluster mode:

./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

client mode :

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

从广义上讲,,yarn-cluster适用于生产环境;而yarn-client适用于交互和调试,也就是希望快速地看到application的输出。 在我们介绍yarn-cluster和yarn-client的深层次的区别之前,我们先明白一个概念:Application Master。在YARN中,每个Application实例都有一个Application Master进程,它是Application启动的第一个容器。它负责和ResourceManager打交道,并请求资源。获取资源之后告诉NodeManager为其启动container。
从深层次的含义讲,,yarn-cluster和yarn-client模式的区别其实就是Application Master进程的区别,yarn-cluster模式下,driver运行在AM(Application Master)中,它负责向YARN申请资源,并监督作业的运行状况。当用户提交了作业之后,就可以关掉Client,作业会继续在YARN上运行。然而yarn-cluster模式不适合运行交互类型的作业。而yarn-client模式下,Application Master仅仅向YARN请求executor,client会和请求的container通信来调度他们工作,也就是说Client不能离开。

Adding Other 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

调式程序

在yarn里,spark程序都运行在containers里。yarn有两种模式来处理container的log,如果 log aggregation被打开了的话(yarn.log-aggregation-enable配置),那么它的日志会被拷贝到hdfs且本地日志会被删除,我们能够用以下命令来查看日志。

yarn logs -applicationId <app ID>

hdfs的日志目录通过yarn.nodemanager.remote-app-log-dir 和yarn.nodemanager.remote-app-log-dir-suffix来配置。当然也可以在sparkui上看到,不过必须配置 yarn-site.xml中的yarn.log.server.url属性。如果 log aggregation没有被打开,那么日志可以在YARN_APP_LOGS_DIR中可以看到,它通常指向/tmp/logs 或$HADOOP_HOME/logs/userlogs

Spark属性

spark on yarn_第1张图片
spark on yarn_第2张图片
spark on yarn_第3张图片
spark on yarn_第4张图片
spark on yarn_第5张图片
spark on yarn_第6张图片

Kerberos 认证

你可能感兴趣的:(spark on yarn)