Hive
1、什么是hive
hive是一个数据仓库工具,可以将结构化的数据转化成一张数据库表,并提供类sql查询的功能,具备数据存储于数据分析两个功能。
hive使用hadoop下的hdsf来存储数据
hive使用Hadoop下的mapreduce来分析数据
也就是说hive是基于Hadoop的
hive是类sql的 也就是说用户可以通过输入sql对hive进行操作,hive会将其转化成mapreduce进行数据分析 类sql却又不尽相同
hive的应用场景 ----> 离线数据分析
a、什么是hdfs
hdsf是Hadoop的核心组成部分,主要设计思想是分块,解决了负载均衡与网络瓶颈的问题。
hdfs的优点:
- 高容错性(硬件故障是常态):数据自动保存多个副本,副本丢失后,会自动恢复。
- 适合大数据集:GB、TB、甚至PB级数据、百万规模以上的文件数量,1000以上节点规模。
- 流式数据访问: 一次性写入,多次读取;保证数据一致性
- 构建成本低:可以构建在廉价机器上。
hdsf的缺点:
1. 不适合做低延迟数据访问
2. 不适合小文件存取
3. 不适合并发写入,文件随机修改
2、hive的工作原理
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-u7NG6Tot-1574775000862)(C:\Users\Alice\AppData\Roaming\Typora\typora-user-images\1574169332513.png)]
hive主要的工作流程就是:
1、提供了一个shell客户端给用户输入sql语句
2、hive通过sql语法解析器从元数据中查找
3、sql解析器成mr程序模板库中找到相应的mr
4、mr程序模板库提交到mr提交器
5、mr提交器提交给 yarn执行
hive的主要目的:
如何让用户输入的sql转化为mr程序用来做数据分析
3、为什么用hive
首先hive和mapreduce都可用来做离线数据分析
那么为什么不直接使用mapreduce,请看下文:
哪来的为什么,因为太难了,mapredduce不仅学起来难,再实现复杂逻辑开发的时候也难。
所以就用hive,因为hive类似sql,学起来比较人性化,用起来也比较人性化。
4、hive架构
a、架构图
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hezkFdvu-1574775000869)(C:\Users\Alice\AppData\Roaming\Typora\typora-user-images\1574171868612.png)]
b、组件
1、用户接口
2、元数据存储 (通常存储在关系数据库)
3、解释器、编译器、优化器、执行器
c、与hadoop的关系
hive来利用hdfs进行存储,利用mapreduce进行数据分析
5、hive与传统数据库的对比
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qX17OHYs-1574775000871)(C:\Users\Alice\AppData\Roaming\Typora\typora-user-images\1574247488483.png)]
hive面向分析,传统数据库面向数据
6、hive的安装
a、内嵌模式
1、解压hive包
2、配置环境变量
3、source 脚本使其生效
主要用作测试使用
b、本地模式
1、使用mysql !!!切忌一定要授权远程连接
2、配置源数据库
c、远程模式
配置服务端和客户端
服务端:
hiveserver2
客户端:
beelinne
!connect jdbc:hive2://你的ip:10000
用户名
密码
6、hive的映射
映射的实质就是在hive中建立一张表跟已经存在的结构化数据文件产生映射关系,映射成功后就可以通过sql来分析数据,避免了写mr的麻烦
创建表:
其实就是在对应的数据库目录下面创建一个子目录,目录名为表名。数据文件就存在这个目录下。
在hive中使用:
load data [local] inpath '文件路径' [overwrite] into table 表名