前置
1、先说一下spark-submit 提交命令 ,应该采用 如下路径的spark-submit,因为这样才会读取spark-default.conf
>> /opt/cloudera/parcels/CDH/lib/spark/spark-submit
2、如果无法找到正确的路径,采用配置方式
如:
spark-submit --class org.apache.spark.examples.SparkPi --master yarn --properties-file spark-defaults.conf --deploy-mode cluster /opt/cloudera/parcels/CDH/lib/spark/examples/jars/spark-examples_2.11-2.4.0-cdh6.3.2.ja
2、添加一两个包的简单方法
spark 经常需要添加一两个jar包。一般采用如下方式,
1)、上传jar 到hdfs 路径。
如:hdfs:///spark-jars/spark.test.jar
2)、修改配置
>>vi /opt/cloudera/parcels/CDH/lib/spark/conf/spark-defaults.conf
>> 修改配置
spark.yarn.jars=local:/opt/cloudera/parcels/CDH-6.3.2-1.cdh6.3.2.p0.1605554/lib/spark/jars/*,local:/opt/cloudera/parcels/CDH-6.3.2-1.cdh6.3.2.p0.1605554/lib/spark/hive/*,hdfs:///spark-jars/spark.test.jar
即可
每次提交任务时spark 会去 hdfs上下载文件,
优点:不影响现有业务,jar包由客户端决定。扩容无影响
3、修改内部jar或者去除内部jar ,不影响现有系统方法
如果需要修改spark 内部的jar ,比如升级某个jar的版本。
1) 合并所有需要的jar,包括
/opt/work/CDH/lib/spark/hive/*
/opt/work/CDH/lib/spark/jars/*
业务需要的jar
升级后的jar
将上面的所有jar 包打成一个zip 包,注意zip包不要有层级。
2)将包上传到hdfs
如:hdfs:///spark-jars/spark.zip
3)修改spark-defaults.conf
删除 系统本身的jar
spark.yarn.jars=local:/opt/cloudera/parcels/CDH-6.3.2-1.cdh6.3.2.p0.1605554/lib/spark/jars/*,local:/opt/cloudera/parcels/CDH-6.3.2-1.cdh6.3.2.p0.1605554/lib/spark/hive/*,hdfs:///spark-jars/spark.test.jar
添加
spark.yarn.archive=hdfs:///spark-jars/spark.zip
spark.yarn.dist.innerarchives = hdfs:///spark-jars/spark.zip
优点:不影响现有业务,jar包由客户端决定。扩容无影响