本篇内容介绍了“怎么指定Spark2中Driver和Executor使用指定范围内端口”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!
1.文档编写目的
在CDH集群中提交Spark作业,大家也都知道Spark的Driver和Executor之间通讯端口是随机的,Spark会随选择1024和65535(含)之间的端口,因此在集群之间不建议启用防火墙。本篇文章Fayson主要介绍如何指定Spark2作业中Driver和Executor使用指定范围内的端口进行通讯。
内容概述
1.配置Spark Driver和Executor端口范围
2.验证端口分配
测试环境
1.CM和CDH版本为5.15
2.Spark版本为2.2.0
2.配置Spark Driver和Executor端口范围
1.登录到CM管理界面,进入Spark服务的配置界面
2.在Gateway分类中配置也搜索“spark-defaults.conf”,添加如下配置:
spark.driver.port=10000
spark.blockManager.port=20000
spark.port.maxRetries=999
(可左右滑动)
3.保存配置,并重新部署Spark2的客户端配置
3.验证端口分配
1.向集群提交一个Spark2的作业
spark2-submit --class org.apache.spark.examples.SparkPi\
--master yarn --num-executors 4 --driver-memory 1g\
--driver-cores 1 --executor-memory 1g --executor-cores 1\
/opt/cloudera/parcels/SPARK2/lib/spark2/examples/jars/spark-examples_2.11-2.2.0.cloudera2.jar 10000
(可左右滑动)
2.查看Spark作业的运行界面查看Driver和Executor使用的端口号
4.总结
本篇文章Fayson主要是以Spark2为例说明限制Driver和Executor使用指定范围内的端口号。细心的朋友可以看到Driver启动的时候会监听两个端口示例中是10001和20000。关于这两个端口的解释如下:
1.spark.driver.port的10001端口是用来监听来自executor的请求,在executor起来的时候需要与drive通信并获取具体的任务信息,是driver使用的管理调度用端口。
2.spark.blockManager.port(20000)端口是driver和executor直接数据传输端口(比如cached data frame, broadcast vars)。
3.在Spark运行中,blockManager将不会和YARN交互,而driver是会和YARN中运行的Application Master进程交互。
4.Spark2中指定Executor的端口号是通过spark.blockManager.port指定与Spark1的(spark.executor.port)指定参数不同。
“怎么指定Spark2中Driver和Executor使用指定范围内端口”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注亿速云网站,小编将为大家输出更多高质量的实用文章!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。