什么是hive?


hive概念


    hive的产生背景
        mapreduce----统计分析   用于这个统计分析的数据  都是结构化的数据
        以后生产中 接触的数据大部分都是结构化数据
        如果数据量比较小的时候:
            最好的解决方案  mysql
                math,wangbaoqiang,85
                java程序  mysql数据库相比  mysql更方便--使用
                成本:
                    开发:java   20行代码  mysql--1行
                    人工:
                        java工程师   
                            java   c   c++  python
                        sql语句:
                            
        数据量大了:
            统计分析
            mapreduce做分布式计算
            针对这个结构化的数据的统计分析  sql
            mapreduce的统计分析针对结构化数据的  绝大部分的都可以使用sql语句做
            为什么使用hive?
                1)使用   sql使用上更方便
                2)成本
                    1)开发
                    统计平均成绩
                    MR:40行
                    sql:select course,avg(score)  from stu group by course;
                    2)用人:
                    MR工程师:
                        java
                        hadoop   MR编程
                    sql工程师:
                出现了一个基于MR编程的  实现sql实现的工具  hive        
    hive是什么?
        1.Hive 由 Facebook 实现并开源
            贡献Apache
            http://hive.apache.org/
        2.是基于 Hadoop 的一个数据仓库工具
            hive产生就是为了解决MR的结构数据分析问题
            数据仓库:海量的数据的存储
            数据仓库和数据库(关系型数据库)区别:
                1.概念:
                    数据库:数量小结构化数据存储  更倾向于精细化的数据管理  数据存储的时候分库分表存储
                        有事务的概念
                    数据仓库:数据量大的结构数据存储 倾向于数据的管理
                        没有事务的概念
                        
                2.使用:
                    数据库:mysql/oracle/sql server  标准sql
                    数据仓库:hive中-----hql  方言sql
                    
                3.应用场景:
                    数据库:OLTP  On-Line Transaction Processing联机事务处理
                        insert delete update
                    数据仓库:OLAP:On-Line Analysis Processing  联机分析事物处理
                        select
                        在hive中不支持update delete  但是支持insert
                4.数据量
                    数据库:集中式  数据量比较小
                    数据仓库:分布式  数据量大
                5.延时性
                    数据库:实时
                    数据仓库:离线的            
        3.可以将结构化的数据映射为一张数据库表
            math,zs,67
            一行数据---数据库的一条记录
            一列数据----数据库中的一个字段
        4.并提供 HQL(Hive SQL)查询功能
            方言sql
        5.底层数据是存储在 HDFS 上
            hive的最终的原始数据存储在hdfs
        6.Hive的本质是将 SQL 语句转换为 MapReduce 任务运行
            hive的底层会存储很多的map   reduce的模板 
            执行hql语句  底层将hql和模板进行匹配
            hive相当于一个hadoop的客户端
            hive的本质上就是一个hadoop的客户端工具
        7.使不熟悉 MapReduce 的用户很方便地利用 HQL 处理和计算 HDFS 上的结构化的数据
        8.适用于离线的批量数据计算
            底层hadoop
    hive的架构:
        1.用户接口层
            CLI:shell  命令行
            jdbc/odbc:java操作hive
            web UI:可视化界面的操作  不用  丑   比较麻烦
        2.thrift server层:跨语言服务
            java c   ruby
            对外提供hive支持跨语言连接的服务
        3.元数据层:
            hive的数据存储两大部分:
                1)原始数据  真实数据  存储在hdfs上的
                2)元数据  描述原始数据的数据
                    描述的是原始数据的存储规则的数据
                    hive中有一个表:
                    stu:course,name,score---student.txt
                    元数据:
                        1)表的描述信息
                            包括表和hdfs的数据对应关系,表的属性
                        2)表的字段信息
                            字段类型
                            字段顺序
                        3)数据库的描述信息
                    hive的元数据存储在关系型数据库中的
                        可以存储mysql中
        4)核心驱动层:
            hive本质将hql语句---MR程序
            驱动器Driver:
                驱动hql--MR---提交  的整个过程执行
            编译器:最初的实现
                内部存储了很多map   reduce的模板
                将hql语句编译为map  reduce任务
            优化器
                将编译器的编译结果做一个优化,最终出来就是最完美的执行方案
            执行器:
                将优化器的优化结果  进行提交给集群进行执行
            
    hive的特点:
        缺点:
            1)不支持update delete操作 支持insert操作  效率很低
            2)hive的延时性高
            3)hive不支持事务


 

你可能感兴趣的:(什么是hive?)