关于Spark的配置
1.spark
1. spark-env.sh.template
mv命令改名
mv /opt/module/spark/conf/spark-env.sh.template /opt/module/spark/conf/spark-env.sh
添加内容
// 有了SPARK_DIST_CLASSPATH配置信息以后,
//Spark就可以把数据存储到Hadoop分布式文件系统HDFS中,
//也可以从HDFS中读取数据。如果没有配置上面信息,Spark就只能读写本地数据,
//无法读写HDFS数据。
export SPARK_DIST_CLASSPATH=$(hadoop classpath)
2.环境变量HOME
sudo vim /etc/profile.d/my_env.sh
# SPARK_HOME
export SPARK_HOME=/opt/module/spark
export PATH=$PATH:$SPARK_HOME/bin
// 退出使用,让配置生效
source /etc/profile.d/my_env.sh
2.hive中创建spark配置文件
1. 在conf中创建spark-defaults.conf
vim /opt/module/hive/conf/spark-defaults.conf
添加
spark.master yarn
spark.eventLog.enabled true
spark.eventLog.dir hdfs://hadoop102:8020/spark-history
spark.executor.memory 1g
spark.driver.memory 1g
2.修改hive-site.xml
<!--Spark依赖位置(注意:端口号8020必须和namenode的端口号一致)-->
<property>
<name>spark.yarn.jars</name>
<value>hdfs://hadoop102:8020/spark-jars/*</value>
</property>
<!--Hive执行引擎-->
<property>
<name>hive.execution.engine</name>
<value>spark</value>
</property>
// 调大超时时间,防止等待时间过长导致连接spark失败.
<property>
<name>hive.spark.client.connect.timeout</name>
<value>10000</value>
</property>
<property>
<name>hive.spark.client.server.connect.timeout</name>
<value>9000000</value>
</property>
3.调大Hive堆内存 hive-env.sh.template
mv hive-env.sh.template hive-env.sh
// 改成1个G,如果有条件,还可以调大
export HADOOP_HEAPSIZE=1024
## 3.HDFS
1.向HDF上传Spark纯净版JAR包,避免依赖冲突
其他节点没有Spark,所以执行时也需要Spark依赖
hadoop fs -mkdir /spark-jars
hadoop fs -put /opt/module/spark/jars/* /spark-jars
2.capacity-scheduler.xml修改资源最大占比,提高资源利用率
<property>
<name>yarn.scheduler.capacity.maximum-am-resource-percent</name>
<value>0.8</value>
</property>
4.注意
和spark连接的spark一定要处于active状态,否则会出现无法创建spark问题