本篇内容介绍了“如何在Kubernetes环境中配置Spark Executor”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!
让客户满意是我们工作的目标,不断超越客户的期望值来自于我们对这个行业的热爱。我们立志把好的技术通过有效、简单的方式提供给客户,将通过不懈努力成为客户在信息化领域值得信任、有价值的长期合作伙伴,公司提供的服务项目有:域名申请、网站空间、营销软件、网站建设、岫岩网站维护、网站推广。
Spark在执行任务时,需要访问到Executor的许多端口,而这些端口是随机的,又是通过主机名称访问。所以Kubernetes环境与大数据环境之间难以直接访问。可通过以下配置实现大数据集群访问到Kubernetes环境中运行的Spark Executor
1、Spark Executor在执行时,有许多随机端口,在K8S环境中运行时需要固定其端口,端口的范围为K8S集群NodePort分配的端口范围:30000-32767
#driver监听的接口。这用于和executors以及独立的master通信(默认随机)spark_driver_port: 30920#driver的文件服务器监听的端口(默认随机)spark_fileserver_port: 30921#driver的HTTP广播服务器监听的端口(默认随机)spark_broadcast_port: 30922#driver的HTTP类服务器监听的端口(默认随机)spark_replClassServer_port: 30923#块管理器监听的端口。这些同时存在于driver和executors(默认随机)spark_blockManager_port: 30924#executor监听的端口。用于与driver通信(默认随机)spark_executor_port: 30925
2、为Spark Executor创建一个StatefulSet,可以得到一个DNS域名:$(podname).(headless server name).namespace.svc.cluster.local
apiVersion: apps/v1kind: StatefulSetmetadata:name: my-executor-statefulsetnamespace: [namespace]labels: app: my-executor-statefulsetspec:serviceName: my-executorreplicas: 1selector:matchLabels:app: my-executor-podversion: [version]template:metadata:labels:app: my-executor-podversion: [version]spec:containers: - name: my-executor-pod image: 192.168.0.12:9090/eyes/my-executor-[namespace]:[version]-[ru] imagePullPolicy: Always ports: - containerPort: 5011hostAliases: - hostnames: - hadoop-master01ip: 192.168.0.10 - hostnames: - hadoop-slave02ip: 192.168.0.11
3、为Spark Executor创建一个NodePort类型的Service,需要配置刚刚第一步配置好的固定端口
apiVersion: v1kind: Servicemetadata:name: my-executor-svcnamespace: [namespace]labels: app: my-executor-podspec:ports: - port: 5011 name: tcp-port protocol: TCP - port: 4040 name: spark-http-port protocol: TCP nodePort: 30028 - port: 30920 name: spark-driver-port protocol: TCP nodePort: 30920 - port: 30921 name: spark-fileserver-port protocol: TCP nodePort: 30921 - port: 30922 name: spark-broadcast-port protocol: TCP nodePort: 30922 - port: 30923 name: spark-eplclassserver-port protocol: TCP nodePort: 30923 - port: 30924 name: spark-blockmanager-port protocol: TCP nodePort: 30924 - port: 30925 name: spark-executor-port protocol: TCP nodePort: 30925selector: app: my-executor-podtype: NodePort
4、在大数据环境的机器中全部配置hosts为StatefulSet的DNS域名:$(podname).(headless server name).namespace.svc.cluster.local,IP地址设置为K8S中的任意IP即可
192.168.0.12 my-executor-statefulset-0.my-executor.test2.svc.cluster.local
“如何在Kubernetes环境中配置Spark Executor”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注创新互联网站,小编将为大家输出更多高质量的实用文章!