1、任务提交实例
#!/bin/bash
echo "|--------------------------------------开始提交任务 NewKafka2Hbase---------------------------------------"
echo "|提交开始时间:"$(date "+%Y-%m-%d %H:%M:%S")/home/app/spark-2.1.1/bin/spark-submit \
--class com.dianyou.online.hbase.Kafka2Hbase \
--master yarn \
--deploy-mode client \
--num-executors 1 \
--executor-memory 2g \
--executor-cores 1 \
--driver-cores 1 \
--driver-memory 2g \
--name Kafka2Hbase \
--queue default \
--conf spark.default.parallelism=4 \
--conf spark.memory.storageFraction=0.4 \
--conf spark.streaming.unpersist=true \
--conf spark.streaming.backpressure.enabled=true \
--conf spark.streaming.kafka.maxRatePerPartition=1500 \
--conf spark.network.timeout=300 \
--conf spark.streaming.kafka.consumer.poll.ms=30000 \
--conf spark.driver.extraJavaOptions="-Dlog4j.configuration=file:log4j.properties" \
--conf spark.executor.extraJavaOptions="-XX:+UseParNewGC -XX:+UseConcMarkSweepGC -XX:+CMSParallelRemarkEnabled -XX:+ParallelRefProcEnabled -XX:+CMSClassUnloadingEnabled -XX:MaxTenuringThreshold=15 -XX:SurvivorRatio=5 -XX:MaxDirectMemorySize=1g -Dlog4j.configuration=file:log4j.properties" \
--conf spark.yarn.submit.waitAppCompletion=false \
--conf spark.yarn.maxAppAttempts=4 \
--conf spark.yarn.am.attemptFailuresValidityInterval=1h \
--conf spark.yarn.max.executor.failures=16 \
--conf spark.yarn.executor.failuresValidityInterval=1h \
--conf spark.task.maxFailures=8 \
--files /zywa/job/sparkstreaming/config/log4j.properties \
/zywa/job/sparkstreaming/jars/weixieganzhi.jar \
hdfs://mycluster/weixieganzhi
echo "|提交结束时间:"$(date "+%Y-%m-%d %H:%M:%S")
echo "|-------------------------开始提交任务NewKafka2Hbase-------------------------"
2、参数解说
spark-submit 详细参数说明
常用参数:--class,--master,--deploy-mode,--name,--jars,--driver-memory,--driver-cores,--executor-memory,--num-executors,--executor-core
参数名 参数说明 --master master 的地址,提交任务到哪里执行,例如 spark://host:port, yarn, local --deploy-mode 在本地 (client) 启动 driver 或在 cluster 上启动,默认是 client --class 应用程序的主类,仅针对 java 或 scala 应用 --name 应用程序的名称 --jars 用逗号分隔的本地 jar 包,设置后,这些 jar 将包含在 driver 和 executor 的 classpath 下 --packages 包含在driver 和executor 的 classpath 中的 jar 的 maven 坐标 --exclude-packages 为了避免冲突 而指定不包含的 package --repositories 远程 repository --conf PROP=VALUE 指定 spark 配置属性的值,
例如 -conf spark.executor.extraJavaOptions="-XX:MaxPermSize=256m"
--properties-file 加载的配置文件,默认为 conf/spark-defaults.conf --driver-memory Driver内存,默认 1G --driver-java-options 传给 driver 的额外的 Java 选项 --driver-library-path 传给 driver 的额外的库路径 --driver-class-path 传给 driver 的额外的类路径 --driver-cores Driver 的核数,默认是1。在 yarn 或者 standalone 下使用 --executor-memory 每个 executor 的内存,默认是1G --total-executor-cores 所有 executor 总共的核数。仅仅在 mesos 或者 standalone 下使用 --num-executors 启动的 executor 数量。默认为2。在 yarn 下使用 --executor-core 每个 executor 的核数。在yarn或者standalone下使用
Spark on YARN 之 client 与cluster 模式区别:
client Driver运行在Client端;Client请求container完成作业调度执行,client不能退出;日志在控制台输出,方便查看
cluster Driver运行在applicationMaster;Client一但提交作业就可以关掉,作业已经运行在yarn上;日志在客户端看不到,以为作业运行在yarn上,通过 yarn logs -applicationIdapplication_id 查看呢