前提条件
1、安装好Hive,参考:Hive安装部署-CSDN博客
2、下载好Spark安装包,链接:https://pan.baidu.com/s/1plIBKPUAv79WJxBSbdPODw?pwd=6666
3、将Spark安装包通过xftp上传到/opt/software
安装部署Spark
1、解压spark-3.3.1-bin-without-hadoop.tgz
进入安装包所在目录
cd /opt/software
解压缩
tar -zxvf spark-3.3.1-bin-without-hadoop.tgz -C /opt/moudle
进入解压后的目录,修改文件名
cd /opt/moudle
mv spark-3.3.1-bin-without-hadoop/ spark
2、修改spark-env.sh配置文件
进入配置目录
cd /opt/moudle/spark/conf/
编辑文件
vim spark-env.sh.template
末尾增加如下内容
export SPARK_DIST_CLASSPATH=$(hadoop classpath)
将配置文件.template(不访问)去掉
mv spark-env.sh.template spark-env.sh
3、配置SPARK_HOME环境变量
vim /etc/profile.d/my_env.sh
添加如下内容
# SPARK_HOME
export SPARK_HOME=/opt/moudle/spark
export PATH=$PATH:$SPARK_HOME/bin
source 使其生效
source /etc/profile.d/my_env.sh
4、在hive中创建spark配置文件
vim /opt/moudle/hive/conf/spark-defaults.conf
添加如下内容(在执行任务时,会根据如下参数执行)。
spark.master yarn
spark.eventLog.enabled true
spark.eventLog.dir hdfs://mycluster/spark-history
spark.executor.memory 1g
spark.driver.memory 1g
在HDFS创建如下路径,用于存储历史日志
hadoop fs -mkdir /spark-history
5、向HDFS上传Spark纯净版jar包
说明1:采用Spark纯净版jar包,不包含hadoop和hive相关依赖,能避免依赖冲突。
说明2:Hive任务最终由Spark来执行,Spark任务资源分配由Yarn来调度,该任务有可能被分配到集群的任何一个节点。所以需要将Spark的依赖上传到HDFS集群路径,这样集群中任何一个节点都能获取到。
hadoop fs -mkdir /spark-jars
hadoop fs -put /opt/moudle/spark/jars/* /spark-jars
6、修改hive-site.xml文件
vim /opt/moudle/hive/conf/hive-site.xml
添加如下内容
<!--Spark依赖位置(注意:端口号8020必须和namenode的端口号一致)-->
<property>
<name>spark.yarn.jars</name>
<value>hdfs://mycluster/spark-jars/*</value>
</property>
<!--Hive执行引擎-->
<property>
<name>hive.execution.engine</name>
<value>spark</value>
</property>
Hive on Spark测试
启动hive客户端
hive
创建一张测试表
create table student(id int, name string);
通过insert测试效果
insert into table student values(1,'abc');
若结果如下,则说明配置成功。