3.数仓环境搭建

3.数仓环境搭建,第1张

3.数仓环境搭建 3.数仓环境搭建 3.1 Hive环境搭建 3.1.1 Hive引擎简介
--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-ee3ec56df48e
3.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.sh
3.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)]

欢迎分享,转载请注明来源:内存溢出

原文地址: https://www.outofmemory.cn/zaji/5699160.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-18

发表评论

登录后才能评论

评论列表(0条)

保存