Spark on Yarn With K8s

方案1:

  • 1.hadooptool131
    CDH部署hdfs 、yarn、 hbase的gateway⻆⾊(其实目的是为了客户端配置文件)

  • 2.keytab⽂件权限(每个节点)

[root@hadooptool131 ~]# chmod 777 /etc/kerberos/*.keytab
  • 3.Apache Spark配置CDH Hadoop目录
[root@hadooptool131 ~]# vi /opt/software/spark/spark-2.4.0-bin-hadoop2.6/conf/spark-env.sh
HADOOP_CONF_DIR=/etc/hadoop/conf
YARN_CONF_DIR=/etc/hadoop/conf
SPARK_HOME=/opt/software/spark/spark
SPARK_CONF_DIR=${SPARK_HOME}/conf
  • 4.hbase-site.xml做软连接到Hadoop配置目录
[root@hadooptool131 ~]# ln -s /etc/hbase/conf/hbase-site.xml /etc/hadoop/conf/hbase-site.xml
  • 5.配置hdfs⽬录的/user权限
[root@hadooptool131 ~]# kinit hdfs
Password for hdfs@HADOOP.COM:
[root@hadooptool131 ~]# hdfs dfs -chmod -R 777 /user
  • 6.cdh yarn的配置
min.user.id : 0
banned.users : yarn mapred bin
allowed.system.users : nobody impala hive llama hdfs hbase
  • 7.重启yarn服务,⽣效配置

  • 8.提交jar

spark提交到yarn平台,需要principal、keytab参数
[root@hadooptool131 ~]# klist
klist: No credentials cache found (filename: /tmp/krb5cc_0)
  • 自带Pi案例提交
${SPARK_HOME}/bin/spark-submit \
--master yarn \
--deploy-mode cluster \
--queue ruozedata \
--driver-memory 1G \
--num-executors 1 \
--executor-memory 1G \
--executor-cores 1 \
--principal hdfs@HADOOP.COM \
--keytab /etc/kerberos/hdfs.keytab \
--class org.apache.spark.examples.SparkPi \
/root/spark-2.4.2-bin-hadoop2.6/examples/jars/spark-examples_2.12-2.4.2.jar
  • 生产ETL标准提交参数
${SPARK_HOME}/spark-submit \
--master yarn \
--deploy-mode cluster \
--queue ruozedata \
--driver-memory 4G \
--num-executors 10 \
--executor-memory 6G \
--executor-cores 3 \
--principal hdfs@HADOOP.COM \    
--keytab /etc/kerberos/hdfs.keytab \  
--class com.ruozedata.homepage.CarrierAmount \
--conf "spark.yarn.archive=hdfs://ruozedata/spark/sparkjar20220324.zip" \
--conf "spark.yarn.am.memory=1024m" \
--conf "spark.yarn.am.memoryOverhead=1024m" \
--conf "spark.driver.memoryOverhead=1024m" \
--conf "spark.executor.memoryOverhead=1024m" \

--conf "spark.streaming.backpressure.enabled=true" \
--conf "spark.streaming.kafka.maxRatePerPartition=1250" \
--conf "spark.locality.wait=10s" \
--conf "spark.executor.heartbeatInterval=360000" \
--conf "spark.network.timeout=420000" \
--conf "spark.serializer=org.apache.spark.serializer.KryoSerializer"
--conf "spark.hadoop.fs.hdfs.impl.disable.cache=true" \

--conf "spark.yarn.am.extraJavaOptions=-XX:+UseG1GC -XX:MaxGCPauseMillis=300 -XX:InitiatingHeapOccupancyPercent=50 -XX:G1ReservePercent=20 -XX:+DisableExplicitGC -Dcdh.version=5.16.1" \
--conf "spark.driver.extraJavaOptions=-XX:+UseG1GC -XX:MaxGCPauseMillis=300 -XX:InitiatingHeapOccupancyPercent=50 -XX:G1ReservePercent=20 -XX:+DisableExplicitGC -Dcdh.version=5.16.1" \
--conf "spark.executor.extraJavaOptions=-XX:+UseG1GC -XX:MaxGCPauseMillis=300 -XX:InitiatingHeapOccupancyPercent=50 -XX:G1ReservePercent=20 -XX:+DisableExplicitGC -Dcdh.version=5.16.1" \

/opt/maintaim/core/ruozedata-1.0.jar

方案2:

Spark和Flink均为分布式计算引擎,在使用yarn作为资源调度器提交任务并且连接拥有Kerberos认证的Hbase时,同时面临着认证文件分发与获取的问题。两者的解决方案也是类似的,现在driver端加载认证文件,存储到分布式缓存,然后再Executor端获取文件目录进行认证.

Spark on Yarn
driver端

  sparkSession.sparkContext.addFile(keytabPath)
  sparkSession.sparkContext.addFile(krb5Path)

keytabPath为keytab文件的在driver的绝对目录  
krb5Path为krb5.conf文件在driver的绝对目录

executor端

val krb5Path=SparkFiles.get(krb5FileName) 
val keytabPath=SparkFiles.get(keytabFileName)

krb5FileName为krb5.conf文件名   
keytabFileName为keytab文件名
krb5Path和keytabPath则是executor端配置文件的目录

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Spark on YARNSpark on Kubernetes是两种不同的运行Apache Spark应用程序的方式,它们各自有不同的优势和适用场景。 Spark on YARN是将Spark集成到Apache Hadoop YARN(Yet Another Resource Negotiator)集群上。YARNHadoop 2.0中引入的资源管理组件,它可以作为通用的资源管理层,负责集群中的资源分配和任务调度。在YARN上运行Spark,可以利用YARN已经成熟的集群管理能力,如资源分配、任务调度、监控等。这种方式对于那些已经部署了Hadoop环境的用户来说是一个很好的选择,因为它允许用户在一个统一的生态系统中使用Spark进行数据处理和分析,同时利用Hadoop的存储能力。 Spark on Kubernetes(简称Spark on K8s)则是将Spark应用程序部署在Kubernetes容器编排平台上。Kubernetes是一个开源系统,用于自动化部署、扩展和管理容器化应用程序。在K8s上运行Spark可以实现更加灵活和自动化的部署,容器化带来的隔离性和轻量级特性使得资源利用率更高,也更易于管理和扩展。此外,Spark on K8s支持原生的Kubernetes服务发现、持久化存储和自动化滚动更新等特性。 选择Spark on YARN还是Spark on Kubernetes取决于多个因素,包括现有的技术栈、资源管理的需求、部署和运维的便利性等。例如: 1. 如果组织已经投资了Hadoop生态系统,并希望利用现有的YARN资源来运行Spark作业,那么Spark on YARN可能是更好的选择。 2. 如果组织希望利用容器化带来的灵活性和自动化优势,或者有多种不同的应用程序需要在一个统一的容器平台上管理,Spark on Kubernetes可能更适合。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值