注意:官网下载的Hive3.1.2和Spark3.0.0默认是不兼容的。因为Hive3.1.2支持的Spark版本是2.4.5,所以需要我们重新编译Hive3.1.2版本。
[zhang@hadoop102 ~]$ cd /opt/module/hive/lib/
[zhang@hadoop102 lib]$ ls -al | grep spark
现在就可以正式部署Hive on Spark的环境了。
上传压缩包到/opt/software/spark
[zhang@hadoop102 software]$ mkdir spark
[zhang@hadoop102 spark]$ tar -zxvf spark-3.0.0-bin-hadoop3.2.tgz -C /opt/module/
[zhang@hadoop102 module]$ mv spark-3.0.0-bin-hadoop3.2/ spark
配置SPARK_HOME环境变量
[zhang@hadoop102 software]$ sudo vim /etc/profile.d/my_env.sh
添加如下内容
# SPARK_HOME
export SPARK_HOME=/opt/module/spark
export PATH=$PATH:$SPARK_HOME/bin
source 使其生效
[zhang@hadoop102 software]$ source /etc/profile.d/my_env.sh
[zhang@hadoop102 software]$ 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
在HDFS创建如下路径,用于存储历史日志
[zhang@hadoop102 software]$ hadoop fs -mkdir /spark-history
由于Spark3.0.0非纯净版默认支持的是hive2.3.7版本,直接使用会和安装的Hive3.1.2出现兼容性问题。所以采用Spark纯净版jar包,不包含hadoop和hive相关依赖,避免冲突。
[zhang@hadoop102 module]$ hadoop fs -mkdir /spark-jars
[zhang@hadoop102 module]$ cd /opt/software/spark/
[zhang@hadoop102 spark]$ ll
[zhang@hadoop102 spark]$ tar -zxvf spark-3.0.0-bin-without-hadoop.tgz
[zhang@hadoop102 spark]$ cd spark-3.0.0-bin-without-hadoop/
[zhang@hadoop102 spark-3.0.0-bin-without-hadoop]$ ll
[zhang@hadoop102 spark-3.0.0-bin-without-hadoop]$ cd jars/
[zhang@hadoop102 jars]$ hadoop fs -put ./* /spark-jars
[zhang@hadoop102 ~]$ vim /opt/module/hive/conf/hive-site.xml
添加如下内容
spark.yarn.jars
hdfs://hadoop102:8020/spark-jars/*
hive.execution.engine
spark
启动hive客户端
[zhang@hadoop102 ~]$ hive
创建一张测试表
hive (default)> create table student(id int, name string);
通过insert测试效果
hive (default)> insert into table student values(1,'abc');
在执行Hive on Spark应用的时候,尤其是第一次执行任务的时候,会初始化一个spark会话,这个会话只有第一次执行任务的时候需要被启动,启动之后只要不退出hive的客户端,这个会话就不会被关闭,资源就不会释放。退出客户端时,才会释放资源。(所以第一次执行比较慢)
若结果如下,则说明配置成功
查一下这个数据
hive (default)> select * from student;
在web端看一下,http://hadoop103:8088
退出hive