hive基础学习

## hive产生

1、如果用mapreducer处理格式化数据是比较麻烦的开发周期比较长,成本比较高,而对于格式化数据来说还是sql跟擅长,而且成本比较低,于是方言版sql ,hql出来了

2、hive是基于hadoop的  数据存储在hdfs 的  并且对客户端提供hql支持 将hql语句转换为mapreduce任务的

hive 依赖于hadoop的分布式数据仓库

## hive特点

1. hive是由facebook实现并开源的

2. hive是基于hadoop的一个数据仓库工具

                    基于hadoop:

                        hive中的表中的数据  存储在hdfs上的 存储完全依赖于hdfs

                        hive最终计算使用的默认mapreduce

                        资源调度 yarn

                数据仓库工具:data warehouse  dw

                        存储数据的  更加像一个数据的管理工具

                        用户存储各种用于分析的数据 存储的数据量比较庞大的

                        结构复杂的

                        大数据集的管理工具

                **数据库 和数据仓库的区别:**

                        **数据库中一般存储某一个分析结果  结果**

                        **数据仓库: 面向主题的  过程**

                                数据分析过程 各个层级的数据

                                原始 日志

                                        flow.log

                                抽层 :

                                        etl

                                        原始数据加工

                                        细化 将需要分析的字段  抽出来 存储在一个个表中

                                分析基于仓库中的数据

                        使用场景上:

                                OLTP  On line Transaction Processing  联机事务处理

                                        增 删 改

                                OLAP  On line analysis Processing  联机分析处理

                                        查询

                                **数据库  更加倾向于 OLTP**

                                **数据仓库:

                                        更加倾向于  olap  查询**

                                        hive 不支持 数据delete update 支持insert  但是insert的效率极低

                        模式上:

                                **数据库  mysql --写模式

                                        数据写入的时候 校验**

                                        hbase nosql 无严格模式

                                **数据仓库  hive---读模式

                                        数据读取的时候  校验的**

                        事务支持:

                                数据仓库  不擅长事务的 hive不支持事务

                                数据库  mysql 支持事务的

3. 可以将结构化数据映射为一张数据库表

                          结果化的一条数据---------》表中的一行数据

                          结果化的一个字段----------》表中的一个列

4. 提供hql(hiven sql)查询功能

                          对客户端提供hql查询功能

5. 地层数据存储在HDFS上

6. hive本质是将sql语句转换为MapReducer任务运行

                            hql--------------》mapreducer

7. 使不熟悉Mapreducer的用户很方便的利用hql处理和计算hdfs上的结构话数据节省开发成本

8. 适用于离线的批量数据计算

## hive架构

1、用户接口层,客户端使用

CLI命令行

hive>hive的命令操作以界面

jdbc/odbc

java程序操作hive jdbc

web ui一般不用界面太丑,操作繁琐

2、thrift server 跨语言服务层

hive hql

java |c| python

    进其他语言转化为hive能识别的语言

3、元数据存储层 meta store

        元数据:描述数据(hive表数据)的数据 描述hive真实存储数据的数据

                            hive中表的相关信息(除了表数据以外的信息)

                        表和hdfs数据的路径对应关系

                        表中的字段类型

                        表中字段的顺序

                        表的创建时间。。。

                        这些信息就叫做hive的元数据信息

          hive的元数据信息  存储的时候 采用格式化存储

                        存储在关系型数据库

                        默认的元数据存储数据库 derby

                        derby存储的时候有缺陷的  一般生产上换成mysql

        hive表数据存储在hdfs上

                          hive 表数据存储hdfs 元数据 存储关系型数据库的

  4、核心驱动层Driver

  将hql转换成mapreducer执行的

  1、解释器 解释器的作用是将 HiveSQL 语句转换为抽象语法树(AST)

                        解释hql语句中的核心的关键词

                        select group by  order by  limit

                  2、编译器:编译器将语法树编译为逻辑执行计划 一个hql语句会转化为多个mapreducer任务多个job

                    3、 优化器:优化器是对逻辑执行计划进行优化

                    4、执行器:执行器是调用底层的运行框架执行 优化器优化完成的结果

你可能感兴趣的:(hive基础学习)