--Hive引擎包括:默认MR、tez、spark --Hive on Spark:Hive既作为存储元数据又负责SQL的解析优化,语法是HQL语法,执行引擎变成了Spark,Spark负责采用RDD执行。 --Spark on Hive : Hive只作为存储元数据,Spark负责SQL解析优化,语法是Spark SQL语法,Spark负责采用RDD执行。
备注:本项目采用hive on spark,因为hive可以兼容的其他软件更多,如Azkaban。
3.1.2 Hive on Spark 配置兼容性说明:
官网下载的Hive3.1.2和Spark3.0.0默认是不兼容的。因为Hive3.1.2支持的Spark版本是2.4.5,所以需要我们重新编译Hive3.1.2版本。
编译步骤:官网下载Hive3.1.2源码,修改pom文件中引用的Spark版本为3.0.0,如果编译通过,直接打包获取jar包。如果报错,就根据提示,修改相关方法,直到不报错,打包获取jar包。
1)在Hive所在节点部署Spark
如果之前已经部署了Spark,则该步骤可以跳过,但要检查SPARK_HOME的环境变量配置是否正确。
Spark官网下载jar包地址:
http://spark.apache.org/downloads.html
(2)上传并解压解压spark-3.0.0-bin-hadoop3.2.tgz
[atqwz@hadoop111 software]$ tar -zxvf spark-3.0.0-bin-hadoop3.2.tgz -C /opt/module/
[atqwz@hadoop111 software]$ mv /opt/module/spark-3.0.0-bin-hadoop3.2 /opt/module/spark
(3)配置SPARK_HOME环境变量
[atqwz@hadoop111 software]$ sudo vim /etc/profile.d/my_env.sh
添加如下内容
# SPARK_HOME export SPARK_HOME=/opt/module/spark export PATH=$PATH:$SPARK_HOME/bin
source 使其生效
[atqwz@hadoop111 software]$ source /etc/profile.d/my_env.sh
3)在hive中创建spark配置文件
[atqwz@hadoop111 software]$ vim /opt/module/hive/conf/spark-defaults.conf
添加如下内容(在执行任务时,会根据如下参数执行)
spark.master yarn spark.eventLog.enabled true spark.eventLog.dir hdfs://hadoop111:8020/spark-history spark.executor.memory 1g spark.driver.memory 1g
在HDFS创建如下路径,用于存储历史日志
[atqwz@hadoop111 software]$ hadoop fs -mkdir /spark-history
4)向HDFS上传Spark纯净版jar包
说明1:由于Spark3.0.0非纯净版默认支持的是hive2.3.7版本,直接使用会和安装的Hive3.1.2出现兼容性问题。所以采用Spark纯净版jar包,不包含hadoop和hive相关依赖,避免冲突。
说明2:Hive任务最终由Spark来执行,Spark任务资源分配由Yarn来调度,该任务有可能被分配到集群的任何一个节点。所以需要将Spark的依赖上传到HDFS集群路径,这样集群中任何一个节点都能获取到。
(1)上传并解压spark-3.0.0-bin-without-hadoop.tgz
[atqwz@hadoop111 software]$ tar -zxvf /opt/software/spark-3.0.0-bin-without-hadoop.tgz
(2)上传Spark纯净版jar包到HDFS
[atqwz@hadoop111 software]$ hadoop fs -mkdir /spark-jars
[atqwz@hadoop111 software]$ hadoop fs -put spark-3.0.0-bin-without-hadoop/jars/* /spark-jars
5)修改hive-site**.xml****文件**
[atqwz@hadoop111 ~]$ vim /opt/module/hive/conf/hive-site.xml
添加如下内容
spark.yarn.jars hdfs://hadoop111:8020/spark-jars/* hive.execution.engine spark hive.spark.client.connect.timeout 10000ms
注意:hive.spark.client.connect.timeout的默认值是1000ms,如果执行hive的insert语句时,抛如下异常,可以调大该参数到10000ms
FAILED: SemanticException Failed to get a spark session: org.apache.hadoop.hive.ql.metadata.HiveException: Failed to create Spark client for Spark session d9e0224c-3d14-4bf4-95bc-ee3ec56df48e3.1.3 Hive on Spark****测试
(1)启动hive客户端
[atqwz@hadoop111 hive]$ bin/hive
(2)创建一张测试表
hive (default)> create table student(id int, name string);
(3)通过insert测试效果
hive (default)> insert into table student values(1,'abc');
若结果如下,则说明配置成功
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Hvb34Sjr-1641522474136)(file:///C:Users秦文正AppDataLocalTempksohtmlwps86BB.tmp.jpg)]
3.2 Yarn配置 3.2.1 增加ApplicationMaster资源比例容量调度器对每个资源队列中同时运行的Application Master占用的资源进行了限制,该限制通过yarn.scheduler.capacity.maximum-am-resource-percent参数实现,其默认值是0.1,表示每个资源队列上Application Master最多可使用的资源为该队列总资源的10%,目的是防止大部分资源都被Application Master占用,而导致Map/Reduce Task无法执行。
生产环境该参数可使用默认值。但学习环境,集群资源总数很少,如果只分配10%的资源给Application Master,则可能出现,同一时刻只能运行一个Job的情况,因为一个Application Master使用的资源就可能已经达到10%的上限了。故此处可将该值适当调大。
(1)在hadoop111的/opt/module/hadoop-3.1.3/etc/hadoop/capacity-scheduler.xml文件中修改如下参数值
[atqwz@hadoop111 hadoop]$ vim capacity-scheduler.xml
yarn.scheduler.capacity.maximum-am-resource-percent 0.8 (2)分发capacity-scheduler.xml配置文件
[atguigu@hadoop111 hadoop]$ xsync capacity-scheduler.xml(3)关闭正在运行的任务,重新启动yarn集群
[atqwz@hadoop103 hadoop-3.1.3]$ sbin/stop-yarn.sh [atqwz@hadoop103 hadoop-3.1.3]$ sbin/start-yarn.sh3.3 数仓开发环境 1.启动HiveServer[atqwz@hadoop111 hive]$ hiveserver2
2.配置DataGrip连接1)创建连接
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-090KIMke-1641522474138)(file:///C:Users秦文正AppDataLocalTempksohtmlwps684E.tmp.jpg)]
2)配置连接属性
所有属性配置,和Hive的beeline客户端配置一致即可。初次使用,配置过程会提示缺少JDBC驱动,按照提示下载即可。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-aQOECLi7-1641522474139)(file:///C:Users秦文正AppDataLocalTempksohtmlwps684F.tmp.jpg)]
**3.**测试使用创建数据库gmall,并观察是否创建成功。
1)创建数据库
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9jXBDh5S-1641522474140)(file:///C:Users秦文正AppDataLocalTempksohtmlwps6850.tmp.jpg)]
2)查看数据库
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0doLzyhV-1641522474141)(file:///C:Users秦文正AppDataLocalTempksohtmlwps6851.tmp.jpg)]
3)修改连接,指明连接数据库
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-U8O5lzYI-1641522474142)(file:///C:Users秦文正AppDataLocalTempksohtmlwps6852.tmp.jpg)]
4)选择当前数据库为gmall
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GrNyMSKP-1641522474142)(file:///C:Users秦文正AppDataLocalTempksohtmlwps6853.tmp.jpg)]
522474140)]
2)查看数据库
[外链图片转存中…(img-0doLzyhV-1641522474141)]
3)修改连接,指明连接数据库
[外链图片转存中…(img-U8O5lzYI-1641522474142)]
4)选择当前数据库为gmall
[外链图片转存中…(img-GrNyMSKP-1641522474142)]
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)