01-09-hive-入门基本概念-hive-mysql安装

news2024/11/25 21:33:29

01-hive-入门基本概念:

什么是hive

hive是基于Hadoop的一个数据仓库工具,用来进行数据提取、转化、加载,这是一种可以存储、查询和分析存储在Hadoop中的大规模数据的机制。hive数据仓库工具能将结构化的数据文件映射为一张数据库表,并提供SQL查询功能,能将SQL语句转变成MapReduce任务来执行。Hive的优点是学习成本低,可以通过类似SQL语句实现快速MapReduce统计,使MapReduce变得更加简单,而不必开发专门的MapReduce应用程序。hive十分适合对数据仓库进行统计分析。

Hive 本质:将 HQL 转化成 MapReduce 程序

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kwdcS2Nc-1669555953624)(png/1627183345479.png)]

(1)Hive 处理的数据存储在 HDFS

(2)Hive 分析数据底层的实现是 MapReduce

(3)执行程序运行在 Yarn 上

优缺点:

优点

(1)操作接口采用类 SQL 语法,快速上手。

(2)避免了去写 MapReduce,减少开发人员的学习成本。

(3)Hive 的执行延迟比较高,因此 Hive 常用于数据分析,对实时性要求不高的场合。

(4)Hive 优势在于处理大数据,对于处理小数据没有优势,因为 Hive 的执行延迟比较高。

(5)Hive 支持用户自定义函数,用户可以根据自己的需求来实现自己的函数。

缺点

1、Hive的HQL 表达能力有限

(1)迭代式算法无法表达(b依赖a的输出,sql中的多层嵌套)

(2)数据挖掘方面不擅长,由于 MapReduce 数据处理流程的限制,效率更高的算法无法实现。

2Hive 的效率比较低

(1)Hive 自动生成的 MapReduce 作业,通常情况下不够智能化(hive能实现的hadoop一定可以,hadoop可以的hive不一样可以)

(2)Hive 调优比较困难,粒度较粗,需要从hadoop调优。

Hive 架构原理

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-psJ6yP1z-1669555953625)(png/1627183675928.png)]

1)用户接口:Client

CLI(command-line interface)、JDBC/ODBC(jdbc 访问 hive)、WEBUI(浏览器访问 hive)前端 –python 人工智能资料下载,可百度访问:尚硅谷官网

2)元数据:Metastore

元数据包括:表名、表所属的数据库(默认是 default)、表的拥有者、列/分区字段、表的类型(是否是外部表)、表的数据所在目录等; 默认存储在自带的 derby 数据库中,推荐使用 MySQL 存储 Metastore

3)Hadoop

使用 HDFS 进行存储,使用 MapReduce 进行计算。

4)驱动器:Driver

(1)解析器(SQL Parser):将 SQL 字符串转换成抽象语法树 AST,这一步一般都用第三方工具库完成,比如 antlr;对 AST 进行语法分析,比如表是否存在、字段是否存在、SQL

语义是否有误。

(2)编译器(Physical Plan):将 AST 编译生成逻辑执行计划。

(3)优化器(Query Optimizer):对逻辑执行计划进行优化。

(4)执行器(Execution):把逻辑执行计划转换成可以运行的物理计划。对于 Hive 来说,就是 MR/Spark。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kvpKWTQK-1669555953625)(png/1627183791353.png)]

Hive 通过给用户提供的一系列交互接口,接收到用户SQL,使用自己的 Driver, 结合元数据(MetaStore),将这些指令翻译成MapReduce,提交到 Hadoop 中执行,最后将结果输出到用户。

Hive和数据库比较

由于 Hive 采用了类似 SQL 的查询语言 HQL(Hive Query Language),可将 Hive 理解为数据库。从结构上看,Hive 和数据库除了拥有类似的查询语言,再无类似之处。

数据库可以用在 Online 的应用中,但是Hive 是为数据仓库而设计的,从应用角度理解 Hive 的特性。

1 查询语言 (hql类似sql,查询语言类似相同)

由于 SQL 被广泛的应用在数据仓库中,因此,专门针对 Hive 的特性设计了类 SQL 的查询语言 HQL。熟悉 SQL 开发的开发者可以很方便的使用 Hive 进行开发。

2 数据更新

Hive 是针对数据仓库应用设计的,而数据仓库的内容是读多写少的。因此,Hive 中不建议对数据的改写,所有的数据都是在加载的时候确定好的。而数据库中的数据通常是需

要经常进行修改的,因此可以使用 INSERT INTO … VALUES 添加数据,使用 UPDATE … SET 修 改数据。

3 执行延迟(全数据扫描,mapreduce运行)

Hive 在查询数据的时候,由于没有索引,需要扫描整个表,因此延迟较高。另外一个导致 Hive 执行延迟高的因素是 MapReduce 框架。由于 MapReduce 本身具有较高的延迟,因此在利用 MapReduce 执行 Hive 查询时,也会有较高的延迟。相对的,数据库的执行延迟较低。 当然,这个低是有条件的,即数据规模较小,当数据规模大到超过数据库的处理能力的时候,Hive 的并行计算显然能体现出优势。

4 数据规模 (hive数据量很大,数据库小规模)

由于 Hive 建立在集群上并可以利用 MapReduce 进行并行计算,因此可以支持很大规模的数据;对应的,数据库可以支持的数据规模较小。

Hive安装

1)Hive官网地址

http://hive.apache.org/

2)文档查看地址

https://cwiki.apache.org/confluence/display/Hive/GettingStarted

3)下载地址

http://archive.apache.org/dist/hive/

4)github地址

https://github.com/apache/hive

mysql-5.7.28-1.el7.x86_64.rpm-bundle.tar等下载地址。

https://downloads.mysql.com/archives/community/

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-CDxl1Bd8-1669555953626)(png/1627185422961.png)]

Hive 安装部署

1 安装 Hive

1apache-hive-3.1.2-bin.tar.gz 上传到 linux

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-01KWCPZm-1669555953627)(png/1627186054358.png)]

2)解压 apache-hive-3.1.2-bin.tar.gz 到/opt/module/目录下面

[root@hadoop102 software]# tar -zxvf apache-hive-3.1.2-bin.tar.gz -C /opt/module/

3)修改 apache-hive-3.1.2-bin.tar.gz 的名称为 hive

[root@hadoop102 module]# mv apache-hive-3.1.2-bin/ hive

4)修改/etc/profile.d/my_env.sh,添加环境变量

[root@hadoop102 module]#vim /etc/profile.d/my_env.sh 

5)添加内容

#HIVE_HOME
export HIVE_HOME=/opt/module/hive
export PATH=$PATH:$HIVE_HOME/bin

6)解决日志 Jar包冲突

[root@hadoop102 lib]# mv log4j-slf4j-impl-2.10.0.jar log4j-slf4j-impl-2.10.0.jar.bak
[root@hadoop102 lib]# pwd
/opt/module/hive/lib

7)初始化元数据库

[root@hadoop102 hive]# bin/schematool -dbType derby -initSchema

hive依赖hadoop以及yarn,先启动hadoop和yarn

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-XPU5Fmae-1669555953628)(png/1627188495629.png)]

http://192.168.1.103:8088/,http://192.168.1.102:9870/,http://192.168.1.102:19888/jobhistory,

启动hive

[root@hadoop102 hive]# bin/hive

默认hive日志位置/tmp/用户名/

[root@hadoop102 root]# pwd
/tmp/root
[root@hadoop102 root]# ll
总用量 12
-rw-r--r-- 1 root root 8378 7月  25 12:58 hive.log

使用基本测试:

hive> show databases;

hive> show tables;

hive> create table test(id int);

hive> insert into test values(1);

hive> select * from test;

http://192.168.1.102:9870/explorer.html#/user/hive/warehouse/test

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-39ErlR6e-1669555953629)(png/1627190294060.png)]

3)在 CRT 窗口中开启另一个窗口开启 Hive,在/tmp/atguigu 目录下监控 hive.log 文件

Caused by: ERROR XSDB6: Another instance of Derby may have already booted 
the database /opt/module/hive/metastore_db.
 at 

原因在于 Hive 默认使用的元数据库为 derby,开启 Hive 之后就会占用元数据库,且不与其他客户端共享数据,所以我们需要将 Hive 的元数据地址改为 MySQL。

MySQL 安装

1)检查当前系统是否安装过MySQL

[root@hadoop102 hive]#rpm -qa|grep mariadb
[root@hadoop102 hive]#rpm -e --nodeps mariadb-libs

2)解压

[root@hadoop102 software]# tar -xvf mysql-5.7.28-1.el7.x86_64.rpm-bundle.tar -C /opt/module/mysql/

3)在安装目录下执行 rpm 安装

[root@hadoop102 mysql]# pwd
/opt/module/mysql
[root@hadoop102 mysql]#
rpm -ivh mysql-community-common-5.7.28-1.el7.x86_64.rpm
rpm -ivh mysql-community-libs-5.7.28-1.el7.x86_64.rpm
rpm -ivh --nodeps mysql-community-libs-compat-5.7.28-1.el7.x86_64.rpm
rpm -ivh --nodeps mysql-community-client-5.7.28-1.el7.x86_64.rpm
rpm -ivh mysql-community-server-5.7.28-1.el7.x86_64.rpm

注意:按照顺序依次执行

如果 Linux 是最小化安装的,在安装 mysql-community-server-5.7.28-1.el7.x86_64.rpm 时

可能会出现如下错误

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-OwT6qXtE-1669555953630)(png/1627193729758.png)]

通过 yum 安装缺少的依赖,然后重新安装 mysql-community-server-5.7.28-1.el7.x86_64 即可

[root@hadoop102 mysql] yum install -y libaio

5)删除/etc/my.cnf 文件中 datadir 指向的目录下的所有内容,如果有内容的情况下:

mysql配置信息查看

[root@hadoop102 mysql]# cat /etc/my.cnf

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Ruep1uwO-1669555953631)(png/1627193860600.png)]

删除/var/lib/mysql 目录下的所有内容:

[root@hadoop102 mysql]# cd /var/lib/mysql

[root @hadoop102 mysql]# sudo rm -rf ./* //注意执行命令的位置

6)初始化数据库

[root @hadoop102 opt]$ mysqld --initialize --user=mysql

7)查看临时生成的 root 用户的密码

[root @hadoop102 opt]$ cat /var/log/mysqld.log

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fwa5gp7j-1669555953631)(png/1627194235351.png)]

8)启动 MySQL 服务

[root @hadoop102 opt]$ systemctl start mysqld

9)登录 MySQL 数据库

[root @hadoop102 opt]$

Enter password: 输入临时生成的密码

yum install libncurses*

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-arDwDtb9-1669555953632)(png/1627194722252.png)]

10)必须先修改 root 用户的密码,否则执行其他的操作会报错

mysql> set password = password(“000000”);
Query OK, 0 rows affected, 1 warning (0.00 sec)

mysql> quit;

11)修改 mysql 库下的 user 表中的 root 用户允许任意 ip 连接

mysql> update mysql.user set host=‘%’ where user=‘root’;

mysql> flush privileges;

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5WoOLNwj-1669555953632)(png/1627195045471.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dRDqtkjw-1669555953633)(png/1627195139971.png)]

Hive 元数据配置到 MySQL

1 拷贝驱动

将 MySQL 的 JDBC 驱动拷贝到 Hive 的 lib 目录下 (mysql-connector-java-5.1.27.tar.gz解压)

[root@hadoop102 hive]# cp /opt/software/mysql-connector-java-5.1.27-bin.jar ./lib/

cd hive/conf

$HIVE_HOME/conf目录下新建 hive-site.xml 文件

[root@hadoop102 conf]# vim hive-site.xml

添加如下内容

<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
	 <!-- jdbc 连接的 URL -->
	 <property>
		<name>javax.jdo.option.ConnectionURL</name>
		<value>jdbc:mysql://hadoop102:3306/metastore?useSSL=false</value>
	</property>
	 <!-- jdbc 连接的 Driver-->
	 <property>
		<name>javax.jdo.option.ConnectionDriverName</name>
		<value>com.mysql.jdbc.Driver</value>
	</property>
	<!-- jdbc 连接的 username-->
	 <property>
		<name>javax.jdo.option.ConnectionUserName</name>
		<value>root</value>
	 </property>
	 <!-- jdbc 连接的 password -->
	 <property>
		<name>javax.jdo.option.ConnectionPassword</name>
		<value>000000</value>//和自己mysql密码一致
	</property>
	 <!-- Hive 元数据存储版本的验证 -->
	 <property>
		<name>hive.metastore.schema.verification</name>
		<value>false</value>
	</property>
	 <!--元数据存储授权-->
	 <property>
		<name>hive.metastore.event.db.notification.api.auth</name>
		<value>false</value>
	 </property>
	 <!-- Hive 默认在 HDFS 的工作目录 -->
	 <property>
		<name>hive.metastore.warehouse.dir</name>
		<value>/user/hive/warehouse</value>
	 </property>
</configuration>

2)登陆 MySQL

[root@hadoop102 mysql]$ mysql -uroot -p

3)新建 Hive 元数据库

mysql> create database metastore;

mysql> quit;

4) 初始化 Hive 元数据库

[root@hadoop102 hive]$ bin/schematool -initSchema -dbType mysql -verbose

再次启动 Hive

1)启动 Hive

[root@hadoop102 hive]$ bin/hive

2)使用 Hive (create及创建元数据映射,映射和hdfs两者都有即可)

hive> show databases;

hive> show tables;

hive> create table test (id int);

hive> insert into test values(1);

hive> select * from test;

[root@hadoop102 hive]# touch id.txt
[root@hadoop102 hive]# vim id.txt
[root@hadoop102 hive]# hadoop fs -put id.txt /user/hive/warehouse/test

hive是按照hdfs存储路径以及表名去查找数据

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GQITMlhA-1669555953633)(png/1627198138664.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-KOCz45Nt-1669555953634)(png/1627198216968.png)]

3)在另一窗口中开启另一个窗口开启Hive;

hive> show databases;

hive> show tables;

hive> select * from test;

学习路径:https://space.bilibili.com/302417610/,如有侵权,请联系q进行删除:3623472230

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

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

相关文章

算法竞赛入门【码蹄集进阶塔335题】(MT2271-2275)

算法竞赛入门【码蹄集进阶塔335题】(MT2271-2275&#xff09; 文章目录算法竞赛入门【码蹄集进阶塔335题】(MT2271-2275&#xff09;前言为什么突然想学算法了&#xff1f;为什么选择码蹄集作为刷题软件&#xff1f;目录1. MT2271 完全立方数32. MT2272 质数率3. MT2273 元素共…

如何修复 Windows 11/10上的 0x8007023e Windows 更新错误

修复 0x8007023e 错误 运行 Windows Update 疑难解答重置 Windows Update 组件使用 DISM 工具修复 Windows Update 客户端从 Microsoft update Catalog 网站下载并安装更新运行 Microsoft 支持和恢复助手系统更新根据 Windows 质量更新服务节奏发布到 Windows 设备。如果当您尝…

zookeeper学习(一)zk特性与节点数据类型详解(2022)

Zookeeper是一个开源的分布式协调框架&#xff0c;主要用来解决分布式集群中应用系统的一致性问题。从设计模式角度来理解其实zk是一个基于观察者模式设计的分布式服务管理框架。 CAP理论&#xff1a; cap理论指出对于一个分布式计算系统来说&#xff0c;不可能同时满足以下三…

COMSOL泰森多边形Voronoi图多孔骨架优化模型受力分析

Voronoi模型 在comsol内建立泰森多边形骨架支撑网格&#xff0c;模型采用一般的多边形泰森多边形孔隙以及样条曲边泰森多边形孔隙做对比研究&#xff0c;分析模型在承受压力荷载下的应力分布。通过comsol的固体力学计算可看出拟圆形Voronoi孔隙支撑结构的应力分布更为合理&…

【LIMU-Bert论文阅读】

LIMU-BERT: Unleashing the Potential of Unlabeled Data for IMU Sensing Applications 题目重点&#xff1a; 充分利用无标签数据适用于IMU传感器应用&#xff08;并没有指出specfic task&#xff09; 文章核心&#xff1a; 如何根据IMU数据的特征设计出LIMU-Bert&#xff0c…

基于模糊逼近系统不确项的滑模自适应控制

目录 前言 1.系统描述 2.控制器设计 3.模糊推理估计不确定f 3.1构造模糊系统 3.2模糊推理过程 3.3 自适应律设计 4.仿真分析 4.1仿真模型 4.2仿真结果 5.总结 前言 在一般的建模仿真中&#xff0c;我们假设模型都是可以用数学模型描述出来的是确定的&#xff0c;称…

1. 一些截图方法的比较;2. 将截图直接转换为PDF并拼接,与插入Word后再转换为PDF的对比

1. 一些截图方法的比较 1.1. 有时候当某个软件没有导出功能&#xff0c;或者导出功能受限&#xff0c;比如 tableau public&#xff0c;但又需要获取展示出的可视化信息时&#xff0c;就需要用到截图。如果这些截图还要用在正式文档中&#xff0c;就需要是高清的&#xff0c;至…

Python预测卡塔尔世界杯身价最高的英格兰要夺冠?!

文章目录&#x1f3f3;️‍&#x1f308; 1. 数据&#x1f3f3;️‍&#x1f308; 2. 绘图2.1 绘制表头2.2 绘制排名、球队以及国旗2.3 绘制身价柱状图2.4 绘制FIFA排名散点图2.5 设置背景2.6 设置标题&#x1f3f3;️‍&#x1f308; 3. 更多可视化项目源码数据&#xff1a;大…

关于 find 命令的15个超级有用的例子

find 命令用于在 Linux 命令行中搜索文件和目录。 find 是功能最强大、使用最频繁的命令之一&#xff0c;同时也是选项最多的命令之一&#xff0c;它有50多个选项&#xff0c;很容易让人弄混了&#xff0c;特别是当它与 exec 或 xargs 命令一起使用的时候。 作为系统管理员或…

AI创作教程之 如何在本地 PC 上运行稳定的 Diffusion 2.0 (无代码指南)

AI 的热门图像生成器 Stable Diffusion日前发布了全新的 2.0版本。新版本比以前的版本带来了许多进步和改进。OpenCLIP 中新的深度检测和更好的文本到图像模型是我最兴奋的功能。 查看本文以查看 SD 2.0 中新增功能的完整列表。 在本文中,我将向您展示如何在本地 PC 上试用新…

PHP基于thinkphp的在线教学网站#毕业设计

在线教学系统采用B/S模式&#xff0c;促进了在线教学系统的安全、快捷、高效的发展。传统的管理模式还处于手工处理阶段&#xff0c;管理效率极低&#xff0c;随着用户的不断增多&#xff0c;传统基于手工管理模式已经无法满足当前用户需求&#xff0c;随着信息化时代的到来&am…

DataFrame API入门操作及代码展示

文章目录DataFrame风格编程DSL风格编程代码示例相关API相关代码示例SQL风格编程代码示例相关API相关代码Fucntions包基于SparkSQL的WordCount代码编写DataFrame风格编程 DataFrame支持两种风格进行编程 DSL风格SQL风格 DSL称之为领域特定语言&#xff0c;其实就是指DataFrame特…

Config配置文件读写

配置文件本质上是包含成功操作程序所需信息的文件&#xff0c;这些信息以特定方式构成。它们不是在程序中进行硬编码&#xff0c;而是用户可配置的&#xff0c;通常存储在纯文本文件中。 写配置文件 使用函数WritePrivateProfileStringW写配置文件 BOOL WritePrivateProfile…

filter: grayscale(1); | 网页变灰

效果 MDN: https://developer.mozilla.org/zh-CN/docs/Web/CSS/filter-function/grayscalegrayscale(amount)对图片进行灰度转换转换值的大小&#xff0c;可以是 或 . 当值为 100% 时&#xff0c;灰度最大。0% 时与原图没有区别。0% 到 100% 之间的值会使灰度线性变化。amount …

JVM学习笔记(2)—— 运行时数据区概述及线程

在上一篇中我们讲了JVM的类加载子系统&#xff0c;现在我们就来到了运行时数据区。而不同版本的JVM对于内存的划分方式和管理机制存在着部分差异&#xff08;最典型的就是方法区实现的差异&#xff09;&#xff0c;本文针对经典的Hotspot jvm进行讨论&#xff0c;对运行时数据区…

Mongoose应用和文件上传

一、Express框架访问MongoDB数据库 1、目的&#xff1a; ​ &#xff08;1&#xff09;mongoose模块的使用 ​ &#xff08;2&#xff09;学会代码的封装&#xff1a;dao层、service层、接口层 ​ &#xff08;3&#xff09;MVC设计思想&#xff1a;M(Model)、V(View)、C(C…

WEB前端期末大作业——关于酒店主题网站设计——高级酒店公寓网页(4页)

&#x1f468;‍&#x1f393;学生HTML静态网页基础水平制作&#x1f469;‍&#x1f393;&#xff0c;页面排版干净简洁。使用HTMLCSS页面布局设计,web大学生网页设计作业源码&#xff0c;这是一个不错的旅游网页制作&#xff0c;画面精明&#xff0c;排版整洁&#xff0c;内容…

如何使用gitee码云?创建库,克隆远程仓库,上传代码,小绿格等问题

目录 前提软件&#xff1a;先安装Git&#xff0c;再安装TortoiseGit&#xff08;可以在网上找找~默认下一步安装即可&#xff09; 一、访问网站Gitee - 基于 Git 的代码托管和研发协作平台 二、创建库 二、克隆远程仓库到本地电脑 - 仓库与本地链接 三、上传文件到gitee库里…

【Linux基础知识点】内核、系统调用、Shell、指令集、微架构、硬件架构、用户态、内核态、进程、用户线程、内核线程

参考 Linux内核版本和发行版本Linux架构用户态和内核态的简单理解「建议收藏」CPU、操作系统内核、ARM内核与架构的理解【科普】一文看懂指令集是什么一文搞懂X86架构和ARM架构的区别线程和进程的区别是什么&#xff1f;如何理解内核线程、内核进程&#xff1f; 讲解 知识点详…

Linux 业务突然宕机、系统卡死、磁盘空间爆满,该怎么查?

场景 在服务器运维过程中&#xff0c;我们偶尔会发现业务突然宕机&#xff0c;进去服务器发现异常卡顿查看服务器磁盘空间发现磁盘满载。 如何找到占用空间大的目录或文件&#xff1f; 1、比较笨的方法&#xff1a; 在根目录下&#xff0c;du -hs命令&#xff0c;列出各目录…