第1章 对运行在YARN上的Spark进行性能调优
1.1 运行环境Jar包管理及数据本地性原理调优实践
1.1.1运行环境Jar包管理及和数据本地性原理
在YARN上运行Spark需要在Spark-env.sh或环境变量中配置HADOOP_CONF_DIR或YARN_CONF_DIR目录指向Hadoop的配置文件。
Spark-default.conf中配置Spark.YARN.jars指向hdfs上的Spark需要的jar包。如果不配置该参数,每次启动Spark程序将会将Driver端的SPARK_HOME打包上传分发到各个节点。配置如下例所示:
1. spark.yarn.jarshdfs://clustername/spark/spark210/jars/*
对于分布式系统来说,由于数据可能也是分布式的,所以数据处理往往也是分布式的。要想保证性能,尽量保证数据本地性是很重要的。
分布式计算系统的精粹在于移动计算而非移动数据,但是在实际的计算过程中,总存在着移动数据的情况,除非是在集群的所有节点上都保存数据的副本。移动数据,将数据从一个节点移动到另一个节点进行计算,不但消耗了网络IO,也消耗了磁盘IO,降低了整个计算的效率。为了提高数据的本地性,除了优化算法(也就是修改Spark内存,难度有点高),就是合理设置数据的副本。设置数据的副本,这需要通过配置参数并长期观察运行状态才能获取的一个经验值。
Spark中的数据本地性有以下几种: