来源:科多大数据
配置与YARN进行关联
第一个,基于standalone 集群模式提交
这里使用的client模式,还可以使用另外一种模式cluster
./bin/spark-submit \
--class spark_streaming.SparkStreaming_first \
--master spark://master:7077 \
--deploy-mode client \
--supervise \
--executor-memory 1G \
--total-executor-cores 1 \
/home/hadoop/spark.jar
第二个,基于YARN 集群模式提交
这里使用的client模式,还可以使用另外一种模式cluster
./bin/spark-submit \
--class spark_streaming.SparkStreaming_first \
--master yarn \
--deploy-mode client \
--executor-memory 1G \
--num-executors1 \
/home/hadoop/spark.jar
spark-submit 是最常用来提交任意 Spark 任务的客户端工具,客户实现自己的业务打包成 jar 包并通过该工具提交任务在集群中运行。 spark-submit 需要指定为 master 参数为 yarn-client 或 yarn-cluster 模式,若不指定该参数为单机版模式。根据实际业务需求和集群资源情况指定单个执行器所占 CPU、单个执行器所占内存和执行器个数。直接输入 spark-submit 可以看到其所有参数:
常用启动参数:
--master yarn-client (启动并以集群模式提交任务,不设置为 local 模式非集群) --driver-memory 10G (Driver 内存,每个任务都会启动一个 driver)
--executor-memory 85G (每个 executor 的内存)
--executor-cores 26 (每个 executor 的 Vcore)
--num-executors 16 (集群内启动多少 executor)
启动参数配置原则:
driver-memory 这个不需要太大一般 4-10g 足够
executor-memory 尽可能利用集群空闲资源(可以理解为 yarn 上物理内存减去其他组件需要使用以外的剩余内存尽量分配进来。)
executor-cores 依据每个 task 所需的内存来调整 core 数量不同任务所需要内存不同,假设 executor-memory 为 80G,每个 task 内存需要 4G 则 executor-cores 可以设置为 20;注意:Spark 任务中每一个 container 处理一个 task,每一个 container 含有至少一个 core 以及一部分内存,因此由上例可以得出每一个 container 含有 1 个 core 和 85/26 G 的内存; container 总数在 26*16 个也就是说在这个启动参数中 spark 的任务能同时并发 26*16 个 task。
num-executors 可以动态调整一般为计算节点的整数倍
作者:卿卿老祖
链接:https://www.jianshu.com/p/db81130035e2