Hive环境搭建

news2025/4/17 19:40:06

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执行。

3.1.2 Hive on Spark配置

1)兼容性说明

注意: 官网下载的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包。

2)在Hive所在节点部署Spark

如果之前已经部署了Spark,则该步骤可以跳过,但要检查SPARK_HOME的环境变量配置是否正确。

(1)Spark官网下载jar包地址:
http://spark.apache.org/downloads.html
(2)上传并解压解压spark-3.0.0-bin-hadoop3.2.tgz

[atguigu@hadoop102 software]$ tar -zxvf spark-3.0.0-bin-hadoop3.2.tgz -C /opt/module/
[atguigu@hadoop102 software]$ mv /opt/module/spark-3.0.0-bin-hadoop3.2 /opt/module/spark

(3)配置SPARK_HOME环境变量

[atguigu@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 使其生效

[atguigu@hadoop102 software]$ source /etc/profile.d/my_env.sh

3)在hive中创建spark配置文件

[atguigu@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创建如下路径,用于存储历史日志

[atguigu@hadoop102 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

[atguigu@hadoop102 software]$ tar -zxvf /opt/software/spark-3.0.0-bin-without-hadoop.tgz

(2)上传Spark纯净版jar包到HDFS

[atguigu@hadoop102 software]$ hadoop fs -mkdir /spark-jars
[atguigu@hadoop102 software]$ hadoop fs -put spark-3.0.0-bin-without-hadoop/jars/* /spark-jars

5)修改hive-site.xml文件

[atguigu@hadoop102 ~]$ vim /opt/module/hive/conf/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>

3.1.3 Hive on Spark测试

(1)启动hive客户端

[atguigu@hadoop102 hive]$ bin/hive

(2)创建一张测试表

hive (default)> create table student(id int, name string);

(3)通过insert测试效果

hive (default)> insert into table student values(1,'abc');

若结果如下,则说明配置成功
在这里插入图片描述

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)在hadoop102的/opt/module/hadoop-3.1.3/etc/hadoop/capacity-scheduler.xml文件中修改如下参数值

[atguigu@hadoop102 hadoop]$ vim capacity-scheduler.xml

<property>
    <name>yarn.scheduler.capacity.maximum-am-resource-percent</name>
    <value>0.8</value>
</property

(2)分发capacity-scheduler.xml配置文件

[atguigu@hadoop102 hadoop]$ xsync capacity-scheduler.xml

(3)关闭正在运行的任务,重新启动yarn集群

[atguigu@hadoop103 hadoop-3.1.3]$ sbin/stop-yarn.sh
[atguigu@hadoop103 hadoop-3.1.3]$ sbin/start-yarn.sh

3.3 数仓开发环境

数仓开发工具可选用DBeaver或者DataGrip。两者都需要用到JDBC协议连接到Hive,故需要启动HiveServer2。

1.启动HiveServer2
[

atguigu@hadoop102 hive]$ hiveserver2

2.配置DataGrip连接

1)创建连接
在这里插入图片描述
2)配置连接属性

所有属性配置,和Hive的beeline客户端配置一致即可。初次使用,配置过程会提示缺少JDBC驱动,按照提示下载即可。

在这里插入图片描述
3.测试使用

创建数据库gmall,并观察是否创建成功。

1)创建数据库
在这里插入图片描述
2)查看数据库
在这里插入图片描述
3)修改连接,指明连接数据库
在这里插入图片描述
4)选择当前数据库为gmall
在这里插入图片描述

3.4 数据准备

一般企业在搭建数仓时,业务系统中会存在一定的历史数据,此处为模拟真实场景,需准备若干历史数据。假定数仓上线的日期为2020-06-14,具体说明如下。

1.用户行为日志

用户行为日志,一般是没有历史数据的,故日志只需要准备2020-06-14一天的数据。具体操作如下:

1)启动日志采集通道,包括Flume、Kafak等

2)修改两个日志服务器(hadoop102、hadoop103)中的/opt/module/applog/application.yml配置文件,将mock.date参数改为2020-06-14。

3)执行日志生成脚本lg.sh。

4)观察HDFS是否出现相应文件。
在这里插入图片描述
2.业务数据

业务数据一般存在历史数据,此处需准备2020-06-10至2020-06-14的数据。具体操作如下。

1)修改hadoop102节点上的/opt/module/db_log/application.properties文件,将mock.date、mock.clear,mock.clear.user三个参数调整为如图所示的值。

在这里插入图片描述
2)执行模拟生成业务数据的命令,生成第一天2020-06-10的历史数据。

[atguigu@hadoop102 db_log]$ java -jar gmall2020-mock-db-2021-01-22.jar

3)修改/opt/module/db_log/application.properties文件,将mock.date、mock.clear,mock.clear.user三个参数调整为如图所示的值。
在这里插入图片描述
4)执行模拟生成业务数据的命令,生成第二天2020-06-11的历史数据。

[atguigu@hadoop102 db_log]$ java -jar gmall2020-mock-db-2021-01-22.jar

5)之后只修改/opt/module/db_log/application.properties文件中的mock.date参数,依次改为2020-06-12,2020-06-13,2020-06-14,并分别生成对应日期的数据。

6)执行mysql_to_hdfs_init.sh脚本,将模拟生成的业务数据同步到HDFS。

[atguigu@hadoop102 bin]$ mysql_to_hdfs_init.sh all 2020-06-14

7)观察HDFS上是否出现相应的数据

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/18771.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

人人开源后台项目maven构建(yyds)

人人开源后台项目maven构建(yyds) npm run serve 和 npm run dev 的区别在日常运行vue 项目中 在终端 运行命令有时用到 npm run serve 有时是 npm run dev。那么&#xff0c;什么时候用到 serve &#xff0c;什么时候用到 dev 呢&#xff1f; 他们的区别是什么&#xff1f;一…

【学习笔记】《Python深度学习》第四章:机器学习基础

文章目录1 机器学习的四个分支1.1 监督学习1.2 无监督学习1.3 自监督学习1.4 强化学习2 评估机器学习模型2.1 训练集、验证集和测试集2.2 注意事项3 数据预处理、特征工程和特征学习3.1 神经网络的数据预处理3.2 特征工程4 过拟合与欠拟合4.1 减小网络大小4.2 添加权重正则化4.…

postgresql安装配置和基本操作

1.安装 linux上安装 最好是centos7.6或者7.8&#xff0c; 参考官网 PGSQL的官方地址&#xff1a;PostgreSQL: The worlds most advanced open source database PGSQL的国内社区&#xff1a;PostgreSQL中文社区:: 世界上功能最强大的开源数据库... 点击download PostgreSQ…

【Struts2】二_Struts2参数映射、核心配置文件struts.xml中的标签与属性的使用

文章目录Struts2一、参数映射&#xff1a;▶传递基本数据类型&#xff1a;▶传递对象二、核心配置文件struts.xml&#xff1a;2.1、constant标签2.2、package标签2.3、action标签三、Action配置&#xff1a;3.1、Action简介&#xff1a;3.2、继承ActionSupport类&#xff1a;3.…

JAVA初阶——继承和多态

目录 一、继承 1、定义&#xff1a; 2、用法&#xff1a; 3、使用从父类继承的成员 &#xff08;1&#xff09;、子类使用从父类继承的成员变量 &#xff08;2&#xff09;、子类使用从父类继承的成员方法 4、super &#xff08;1&#xff09;、定义&#xff1a; 5、子…

ID3算法

目录 ID3算法 例子 ID算法总结 ID3算法 ID3算法是在每个结点处选取能获得最高信息增益的分支属性进行分裂 在每个决策结点处划分分支、选取分支属性的目的是将整个决策树的样本纯度提升 衡量样本集合纯度的指标则是熵&#xff1b; 举例来说&#xff0c;如果有一个大小为10的…

被裁后,狂刷607页JUC源码分析笔记,立马拿蚂蚁offer

前言 可能大家最近&#xff0c;在公众号&#xff0c;或者各大自媒体平台&#xff0c;都能够刷到&#xff0c;因为疫情美国经济面临结构性衰退&#xff0c;美联储疯狂印钞导致世界性经济波动&#xff0c;导致国际环境不是很好&#xff0c;也间接影响到了中国&#xff0c;中国也…

跟艾文学编程《Python基础》(2)Python 容器

作者&#xff1a; 艾文&#xff0c;计算机硕士学位&#xff0c;企业内训讲师和金牌面试官&#xff0c;公司资深算法专家&#xff0c;现就职BAT一线大厂。 邮箱&#xff1a; 1121025745qq.com 博客&#xff1a;https://wenjie.blog.csdn.net/ 内容&#xff1a;跟艾文学编程《Pyt…

JAVA微服务场景下分布式日志收集排查问题实战

问题产生的根由&#xff1f;不同服务的日志存在哪里&#xff1f;我们怎么去排查线上问题&#xff1f; 问题场景&#xff1a;我们部署的java服务可能有几十个&#xff0c;不同的项目里面他是看不到别的服务的日志&#xff0c;只有服务的返回msg消息&#xff0c;相比传统的单体服…

计算机体系结构:1.1.系统加速比计算例题

文章目录题目内容题目分析题目求解题目内容 假设在某程序的执行过程中&#xff0c;浮点操作时间占整个执行时间的10%&#xff0c;现希望对浮点 操作加速 。 &#xff08;1&#xff09;设对浮点操作的加速比为Sf&#xff0c;请推导出程序总的加速比S和Sf之间的关系表达式&#…

IoU的计算实现详解(基于Python)

文章目录1. 交并比&#xff08;IoU&#xff09;2.原理3.代码实现1. 交并比&#xff08;IoU&#xff09; 具体来说&#xff0c;它是两边界框相交部分面积与相并部分面积之比&#xff0c;如下所示&#xff1a; 也就是两个框的交集和两个框的并集之比。 2.原理 这里详细解释一…

如何安装与配置Node.js

Node.js发布于2009年5月&#xff0c;由Ryan Dahl开发&#xff0c;是一个基于Chrome V8引擎的JavaScript运行环境&#xff0c;使用了一个事件驱动、非阻塞式I/O模型&#xff0c; 让JavaScript 运行在服务端的开发平台&#xff0c;它让JavaScript成为与PHP、Python、Perl、Ruby等…

使用轻量应用服务器搭配宝塔面板搭建可道云kodbox私有云网盘的方法教程

你是否有过网盘下载速度只有十几KB&#xff0c;时不时出现网盘的文件被删除的问题&#xff0c;不如自己搭建一个云网盘吧&#xff0c;只需要一云服务器&#xff0c;即可搭建一个跟某度云一样的云盘。可以自由下载&#xff0c;不限制网速&#xff0c;随时都可上传下载。这篇文章…

nginx+redis+jvm三级缓存设计与落地实现

由于涉及到个人隐私,使用的是阿里云平台,所以下面的IP地址和密码我都做了修改。不是真实的地址。此模拟秒杀商品列表信息缓存案例实现的技术解决方案。 远程环境1版本操作系统ubuntu22.04openresty1.21.4.1jdkOracle JDK17IP192.168.1.1远程环境2版本redis7.0.5Springboot2.5…

149. SAP UI5 Table 控件数据进行 Excel 导出时如何进行格式控制

文章目录 字符串类型的显示控制数值类型(Number)的值显示控制日期和时间显示的格式控制布尔值的显示控制BigNumber 和百分比数值的显示总结本教程的前一步骤,我们成功的将 sap.m.Table 控件里显示的数据导出到了本地 Excel 文件中。 下图是使用 sap.m.Table 显示的表格页面:…

菜小白聊聊开源和开源协议

最近想入linux的深坑&#xff0c;于是开启了马哥sre课程的探险之旅。在了解到Linux是一款自由和开放源码的类UNIX操作系统的历史时&#xff0c;深深被开源精神所折服。也强烈感受到了开源精神的伟大。也正是因为有了开放源码的精神&#xff0c;才有了国产百花齐放的android系统…

【JUC源码专题】AQS 源码分析(JDK8)

文章目录同步队列同步队列结点 Node同步队列状态 state获取互斥锁acquire 方法tryAcquire 方法获取互斥锁addWaiter 方法enq() 入队acquireQueued()setHead 方法设置头节点shouldParkAfterFailedAcquire()parkAndCheckInterrupt()cancelAcquire 发生异常&#xff0c;取消线程获…

第七章第一节:顺序查找和折半查找

文章目录教程1. 查找的基本概念1.1 对查找表的常见操作1.2 查找算法的评价指标2. 顺序查找2.1 顺序查找的算法思想2.2. 顺序查找的实现2.3 查找效率分析2.4 顺序查找的优化&#xff08;对有序表&#xff09;2.5 用查找判定树分析ASL2.6 顺序查找的优化&#xff08;被查概率不相…

在centos中注册gitlab runner

注册runner 有几种不同的方式&#xff0c;这里介绍的是在centos7中使用 rpm包来安装 按照gitlab runner的官网链接里面的介绍&#xff1a; gitlab runner 链接 下载 官网描述&#xff1a; ## Replace ${arch} with any of the supported architectures, e.g. amd64, arm, ar…

python 空间滤波

均值滤波器 空域变换包含灰度变换和空间滤波 灰度变换是通过点对点的映射进行图像增强&#xff0c;是一种点运算 空间滤波是基于邻域的一种运算&#xff0c;即图像像素的灰度值不仅和当前点有关&#xff0c;还和这个点周围邻域像素点的灰度值有关。所以空间滤波其实是一种加…