关于hiveonSpark的错误问题

关于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问题

猜你喜欢

转载自blog.csdn.net/qq_42265608/article/details/132675390