一:Hive基本概念
- 什么是Hive?
- Hive优缺点
⑴优点
⑵缺点
- Hive 架构原理
- Hive 和数据库比较
由于 Hive 采用了类似 SQL 的查询语言 HQL(Hive Query Language),因此很容易
将 Hive 理解为数据库。其实从结构上来看,Hive 和数据库除了拥有类似的查询语言,再无
类似之处。数据库可以用在 Online 的应用中,但是 Hive 是为数据仓库而设计的,类似mysql,
Oracle等常规数据库一般用于增删改查,但是Hive一般只用于查询。清楚这一点,有助于从应
用角度理解 Hive 的特性。
⑴查询语言
⑵数据存储位置
⑶数据更新
⑷ 索引
⑸执行
⑹执行延迟
⑺可扩展性
⑻数据规模
二:Hive 安装环境准备以及基本操作
- Hive各个版本下载地址 :Index of /dist/hive
- 使用hive的版本
- 将软件包上传到/opt/software目录下
- 解压软件到/opt/module目录下
- 将名称修改为hive
- 修改/etc/profile,添加环境变量
[kgf@hadoop20 module]$ sudo vim /etc/profile [sudo] password for kgf: [kgf@hadoop20 module]$ source /etc/profile [kgf@hadoop20 module]$
- 内容如下
export HIVE_HOME=/opt/module/hive export PATH=$PATH:$HIVE_HOME/bin
- 解决日志jar包冲突
mv $HIVE_HOME/lib/log4j-slf4j-impl-2.10.0.jar $HIVE_HOME/lib/log4j-slf4j-impl-2.10.0.bak
- hadoop集群配置,因为hive是依赖于hadoop的,所以hadoop的hdfs和yarn必须启动
⑴在hadoop20启动hdfs
[kgf@hadoop20 hadoop-3.1.3]$ sbin/start-dfs.sh Starting namenodes on [hadoop20] Starting datanodes Starting secondary namenodes [hadoop22] [kgf@hadoop20 hadoop-3.1.3]$ [kgf@hadoop20 hadoop-3.1.3]$ jps 2114 DataNode 1990 NameNode 2380 Jps 1663 QuorumPeerMain [kgf@hadoop20 hadoop-3.1.3]$
⑵到hadoop21上启动yarn
[kgf@hadoop21 hadoop-3.1.3]$ sbin/start-yarn.sh Starting resourcemanager Starting nodemanagers [kgf@hadoop21 hadoop-3.1.3]$ [kgf@hadoop21 hadoop-3.1.3]$ jps 2531 NodeManager 2396 ResourceManager 1677 QuorumPeerMain 2205 DataNode 2877 Jps [kgf@hadoop21 hadoop-3.1.3]$
- 初始化元数据库
[kgf@hadoop20 hive]$ ll total 52 drwxrwxr-x. 3 kgf kgf 157 Jun 19 10:58 bin drwxrwxr-x. 2 kgf kgf 4096 Jun 19 10:58 conf drwxrwxr-x. 4 kgf kgf 34 Jun 19 10:58 examples drwxrwxr-x. 7 kgf kgf 68 Jun 19 10:58 hcatalog drwxrwxr-x. 2 kgf kgf 44 Jun 19 10:58 jdbc drwxrwxr-x. 4 kgf kgf 12288 Jun 19 11:05 lib -rwxr-xr-x. 1 kgf kgf 20798 Aug 22 2019 LICENSE -rwxr-xr-x. 1 kgf kgf 230 Aug 22 2019 NOTICE -rwxr-xr-x. 1 kgf kgf 2469 Aug 22 2019 RELEASE_NOTES.txt drwxrwxr-x. 4 kgf kgf 35 Jun 19 10:58 scripts [kgf@hadoop20 hive]$ bin/schematool -dbType derby -initSchema Metastore connection URL: jdbc:derby:;databaseName=metastore_db;create=true Metastore Connection Driver : org.apache.derby.jdbc.EmbeddedDriver Metastore connection User: APP Starting metastore schema initialization to 3.1.0 Initialization script hive-schema-3.1.0.derby.sql
三、启动并使用 Hive
1)启动 Hive
[kgf@hadoop20 hive]$ bin/hive which: no hbase in (/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/opt/module/jdk1.8.0_191//bin:/opt/module/hadoop-3.1.3/bin:/opt/module/hadoop-3.1.3/sbin:/home/kgf/.local/bin:/home/kgf/bin:/opt/module/jdk1.8.0_191//bin:/opt/module/hadoop-3.1.3/bin:/opt/module/hadoop-3.1.3/sbin:/opt/module/hive/bin) Hive Session ID = a981ba6d-d1bb-4456-a7c9-321fe472b5e5 Logging initialized using configuration in jar:file:/opt/module/hive/lib/hive-common-3.1.2.jar!/hive-log4j2.properties Async: true Hive-on-MR is deprecated in Hive 2 and may not be available in the future versions. Consider using a different execution engine (i.e. spark, tez) or using Hive 1.X releases. Hive Session ID = 2bb7f30e-3ec1-49ff-918f-517a1573b3bf hive>
2)使用 Hive
hive> show databases; hive> show tables; hive> create table test(id int); hive> insert into test values(1); hive> select * from test;
3)在 CRT 窗口中开启另一个窗口开启 Hive,在/tmp/kgf目录下监控 hive.log 文件
[kgf@hadoop20 kgf]$ ll total 128 drwx------. 2 kgf kgf 6 Jun 19 11:16 2bb7f30e-3ec1-49ff-918f-517a1573b3bf -rw-rw-r--. 1 kgf kgf 0 Jun 19 11:16 2bb7f30e-3ec1-49ff-918f-517a1573b3bf2396236254565723705.pipeout -rw-rw-r--. 1 kgf kgf 0 Jun 19 11:16 2bb7f30e-3ec1-49ff-918f-517a1573b3bf4252289805659396197.pipeout drwx------. 2 kgf kgf 6 Jun 19 11:17 a981ba6d-d1bb-4456-a7c9-321fe472b5e5 -rw-rw-r--. 1 kgf kgf 0 Jun 19 11:15 a981ba6d-d1bb-4456-a7c9-321fe472b5e51730695550710527157.pipeout -rw-rw-r--. 1 kgf kgf 0 Jun 19 11:15 a981ba6d-d1bb-4456-a7c9-321fe472b5e53382205917689015301.pipeout -rw-rw-r--. 1 kgf kgf 73511 Jun 19 11:17 hive.log [kgf@hadoop20 kgf]$ pwd /tmp/kgf [kgf@hadoop20 kgf]$
4) 在hdfs中存储的位置(默认的位置)
Hive 默认使用的元数据库为 derby,开启 Hive 之后就会占用元数据库,且不与 其他客户端共享数据,所以我们需要将 Hive 的元数据地址改为 MySQL