Hive简介

Apache Hive简介

什么是分布式SQL?

通过分布式的方式,执行SQL语句,获取分析结果。

Hive的优势

通过java或者python直接操作MapReduce,也可以做分析,但是开发难度稍大。

通过SQL做分析,相对简单易上手。

Apache Hive 就是让我们写类SQL语法,然后Hive底层会将其解析成MR来执行。

总结

以后只要写HiveSQL语法就可以了,Hive会将其自动转成MR任务,交由Yarn来调度执行。

Hive是依赖Hadoop的,想使用Hive,必须先搭建和启动Hadoop集群。


自主设计一款Hive引擎-架构图

自主设计一款Hive引擎,至少要有:

元数据管理器:维护和管理元数据的,且要能存储元数据。

SQL解析器:解析SQL语法的,就将其转成MR任务。

分析结果图,如下:

Hive简介_第1张图片


Apache Hive架构图

Hive的本质

Hive简介_第2张图片

Hive的架构图

Hive简介_第3张图片

Hive的三种部署方式

Hive简介_第4张图片

内嵌模式

1.不需要手动开启和配置metastore服务

2.客户端不能共享metastore服务和元数据库

3.可以使用Hive内置的数据库Derby存储元数据

Hive简介_第5张图片

本地模式

1.不需要手动开启和配置medastore服务。

2.可以共享元数据库,元数据库可以使用外置的数据库。

例如:使用MySQL来存储Hive的元数据。

3.不能共享metestore服务。

Hive简介_第6张图片

远程模式

1.必须手动启动metastore服务。

2.元数据可以存储在第三方数据库中,例如:MySQL中。

3.多客户端可以共享metastore服务和元数据库。

4.Hive的第一代客户端底层是shell实现的,只需要启动metastore服务即可。

5.Hive的第二代客户端底层是java实现的,必须手动启动HiveServer2服务才能正常使用。

Hive第一代客户端 =>metastore服务=>MySQL(元数据库)

Hive第二代客户端=>HiverServer2服务=>metastore服务=>MySQL(元数据库)

Hive简介_第7张图片


Hive的部署及体验(第一代客户端)

Hive的部署

1.Hive是一款单机工具,只需要部署到一台服务器上即可。它底层会将HQL解析成MR任务,分布式执行。

启动Hive服务

1.启动Hadoop集群,只在node1机器执行即可。

[root@node1 ~]# start-all.sh

Hive简介_第8张图片

2. 启动历史服务, 只在node1机器执行即可.

[root@node1 ~]# mr-jobhistory-daemon.sh start historyserver

3. 分别在node1, node2, node3三台机器中, 执行jps命令, 查看启动的Hadoop集群节点.
[root@node1 ~]# jps

[root@node2 ~]# jps

[root@node3 ~]# jps

4. 启动hive的metastore(元数据管理服务), 因为目前没有配置path环境变量, 需要到hive目录下执行.

[root@node1 ~]# cd /export/server/hive/bin
[root@node1 bin]# ll
总用量 48
-rwxr-xr-x 1 root root   881 8月  23 2019 beeline          -- Hive的第2代客户端
drwxr-xr-x 3 root root  4096 10月 24 2021 ext      
-rwxr-xr-x 1 root root 10158 8月  23 2019 hive             -- Hive的第1代客户端
-rwxr-xr-x 1 root root  1900 8月  23 2019 hive-config.sh
-rwxr-xr-x 1 root root   885 8月  23 2019 hiveserver2
-rwxr-xr-x 1 root root   880 8月  23 2019 hplsql
-rwxr-xr-x 1 root root  3064 8月  23 2019 init-hive-dfs.sh
-rwxr-xr-x 1 root root   832 8月  23 2019 metatool
-rw------- 1 root root  3015 1月   7 18:49 nohup.out
-rwxr-xr-x 1 root root   884 8月  23 2019 schematool

4.1 前台方式, 启动metastore服务

[root@node1 bin]# ./hive --service metastore    -- 启动之后,当前窗口就被占用了.

4.2 后方方式, 启动metastore服务, 不占用当前窗口

[root@node1 bin]# nohup ./hive --service metastore &    --需要敲两下回车


[root@node1 bin]# jps -m    -- 查看本机和Java相关的进程(详细信息)

Hive体验(第1代客户端)

1. 切换到hive的bin目录下

[root@node1 ~]# cd /export/server/hive/bin

[root@node1 bin]# ./hive        -- 之后就可以写HiveSQL代码了.

Hive简介_第9张图片

Hive的体验(第2代客户端)

Hive的第2代客户端底层是Java语言写的, 所以必须先启动 hiveserver2服务.

1. 切换到hive的bin目录下

[root@node1 ~]# cd /export/server/hive/bin

2.启动hiveserver2

启动hiveserver2服务(需要2~3分钟), 确保你已经成功启动Hadoop集群和metastore服务.
[root@node1 bin]# nohup ./hive --service hiveserver2 &

3. 查看进程是否启动.

[root@node1 bin]# jps -m

4. 查看hiveserver2服务是否初始化完毕.

[root@node1 bin]# lsof -i:10000

5.切换到hive的bin目录下

[root@node1 ~]# cd /export/server/hive/bin

Hive简介_第10张图片

6. 启动第2代客户端

[root@node1 ~]# ./beeline        -- 敲回车
beeline> !connect jdbc:hive2://node1:10000    -- 敲回车
Connecting to jdbc:hive2://node1:10000
Enter username for jdbc:hive2://node1:10000: root    -- 输入账号(可以任意写), 敲回车
Enter password for jdbc:hive2://node1:10000:         -- 不用输入, 直接敲回车.
Connected to: Apache Hive (version 3.1.2)
Driver: Hive JDBC (version 3.1.2)
Transaction isolation: TRANSACTION_REPEATABLE_READ
0: jdbc:hive2://node1:10000> -- 可以在这里直接写HiveSQL语句了.

Hive简介_第11张图片

你可能感兴趣的:(hive,hadoop,数据仓库)