Hive简介&环境搭建
官网地址:https://hive.apache.org/
源码地址:https://github.com/apache/hive
Apache社区统一下载地址:https://archive.apache.org/dist/
1、Hive简介
Hive是使用SQL方法进行大数据量的统计分析【适合离线场景/批处理场景】
- Hive是构建在Hadoop之上的数据仓库。Hive的数据存储在HDFS之上,Hive写的sql,然后,默认是以MR作业的方式运行在YARN之上。
- 现在的Hive支持:MR、Tez、Spark三种执行引擎。【CDP默认的Hive就是支持Tez引擎】
- set hive.execution.engin = mr / Tez / Spark ; 【通过这样的设置,可以切换每种引擎】
执行流程:SQL => Hive => 翻译成MR作业 => 提交到YARN上去执行
区别:
1)Hive on Spark:SQL基于HIVE,翻译成SPARK作业 【在Hive框架中】
2) Spark SQL:直接在Spark框架中写的sql作业 【在Spark框架中】
2、Hive架构解析
- 客户端:Command-line shell【客户端命令行】、JDBC、webUI
- Thrift:一种协议。JDBC客户端想要接入Hive的时候,其实是接入HiveServer2服务,而该服务底层就是使用Thrift协议。【Spark中使用的就是ThriftServer,底层也是Thrift协议。】
- Metastore(元数据):描述数据的数据【Hive中最核心的部分】
- Hive的数据存放在分布式文件系统上;元数据存放在Mysql中
- 因为元数据存在mysql中,如果接入的spark/Impala,都可以读到mysql中的元数据,转换比较平滑。
- derby(一个内置的数据库):默认存放MYSQL中,只能单窗口使用。
- Driver:一个SQL经过Driver,解析成一个作业(可以是Spark作业,也可以Impala作业,可插拔的驱动)
3、Hive和RDBMS区别
Hive | RDBMS |
---|---|
面向SQL | 面向SQL |
统计分析,延时性比较高 | “实时”:快速响应,延时性很短 |
支持事务(一般Hive不用) | 支持事务 |
load加载批量数据进Hive,也支持insert、update等 | insert、update等 |
MR/Spark/Tez分布式 | 分布式 |
节点数可以很多 | 节点数偏少 |
廉价的机器 | 专用的机器 |
P+ | 。。。。。。 |
4、Hive环境搭建
4.1.上传jar包并解压
[root@maggie ~]$ chown -R xiaofeng:xiaofeng /home/xiaofeng/software/
//切换成xiaofeng用户
[hadoop@maggie software]$ tar -xzvf /apache-hive-3.1.2-bin.tar.gz -C ../app/
......(解压过程省略)
[xiaofeng@maggie101 app]$ ln -s apache-hive-3.1.2-bin hive 【设置软连接】
4.2.配置环境变量
[xiaofeng@maggie101 ~]$ vi .bashrc
export HIVE_HOME=/home/xiaofeng/app/hive
export PATH=$HIVE_HOME/bin:$PATH
[xiaofeng@maggie101 ~]$ sources .bashrc 【使环境变量生效】
- 文件夹简介
[xiaofeng@maggie101 hive]$ ll 【再创建一个logs日志文件夹】
total 76
drwxrwxr-x 3 xiaofeng xiaofeng 4096 Nov 24 22:07 bin 【脚本相关】
drwxrwxr-x 2 xiaofeng xiaofeng 4096 Nov 24 22:07 binary-package-licenses
drwxrwxr-x 2 xiaofeng xiaofeng 4096 Nov 24 22:07 conf 【配置文件相关,尤其是hive-site.xml需要修改相关配置】
drwxrwxr-x 4 xiaofeng xiaofeng 4096 Nov 24 22:07 examples
drwxrwxr-x 7 xiaofeng xiaofeng 4096 Nov 24 22:07 hcatalog
drwxrwxr-x 2 xiaofeng xiaofeng 4096 Nov 24 22:07 jdbc
drwxrwxr-x 4 xiaofeng xiaofeng 16384 Nov 24 22:07 lib
-rw-r--r-- 1 xiaofeng xiaofeng 20798 Aug 23 2019 LICENSE
-rw-r--r-- 1 xiaofeng xiaofeng 230 Aug 23 2019 NOTICE
-rw-r--r-- 1 xiaofeng xiaofeng 2469 Aug 23 2019 RELEASE_NOTES.txt
drwxrwxr-x 4 xiaofeng xiaofeng 4096 Nov 24 22:07 scripts
4.3.上传mysql驱动放到$HIVE_HOME/lib下
4.4.编辑hive-site.xml文件
- Hive中关于参数的设置【优先级从低到高】
- hive-site.xml 全局的配置
- hive --hiveconf hive.cli.print.current.db = false; 【登录hive的同时设置配置】
- set key = value 【优先级稍高,但是仅仅是当前窗口生效,窗口关闭后失效】
hive (default)> set hive.cli.print.current.db; 【相当于get】
-------------- hive.cli.print.current.db=true
hive (default)> set hive.cli.print.current.db = false; 【真正的set】