spark执行过程优化------将spark运行的jar包上传到HDFS上,避免在提交任务时因为spark程序包过大导致的占用运行时间和cpu资源
起因是在提交spark任务的时候,因为服务器处于离线状态,好多的依赖包无法通过网络进行下载,所以打成的spark程序包比较大,大概在200~300MB之间,每次通过spark-on-yarn提交任务时,总是有一段时间将本地的spark程序上传到hdfs,占用了太多的网络资源以及cpu。
所以,通过配置和来避免jar包的上传,从而减少启动时间。
1.配置
先将spark根目录下的jars文件夹下的所有的jar包上传到hdfs上
hdfs dfs -mkdir -p /spark-yarn/jars/
hdfs dfs -put /server/spark/jars/* /spark-yarn/jars/
修改 (注意:要修改所有节点的),增加此配置: hdfs://node22:9000/spark-yarn/jars/*.jar
2.配置
将spark根目录下jars里的所有jar包上传到HDFS
打包要注意所有的jar都在zip包的根目录中(如果提示没有zip命令,则需要先安装:yum install zip)
zip -q -r spark_jars.zip *
hdfs dfs -mkdir /spark-yarn/zip
hdfs dfs -put spark_jars.zip /spark-yarn/zip/
修改 (注意:要修改所有节点的),增加此配置: hdfs://node22:9000/spark-yarn/zip/spark_jars.zip
然后在提交任务时,执行如下命令:
spark-submit --class access.Data2Hbase \
--master yarn \
--deploy-mode cluster \
--name xxx \
hdfs://node22:9000/intelligover/intelligover-1. \
xxxx
(为了修改方便,不建议将自己的程序与spark自身的jar包放置在一起,避免在更新的时候误删)