zoukankan      html  css  js  c++  java
  • [Hive_1] Hive 基本概念

    Hive 系列01

    Hive 简介 & Hive 应用场景 & Hive 与 Hadoop 的关系 & Hive 与传统数据库对比


     

     

    1. Hive 简介

      [ 官方介绍 ]

      Apache Hive™ 数据仓库软件有助于使用 SQL 读取、编写和管理驻留在分布式存储中的大型数据集。

      可以将结构投影到已存储的数据中。提供了命令行工具和 JDBC 驱动程序以将用户连接到 Hive。

      [ 通俗理解 ]

      Hive 就是在 Hadoop 上架了一层 SQL 接口,可以将 SQL 翻译成 MapReduce 去 Hadoop 上执行,这样就使得

      数据开发和分析人员很方便的使用 SQL 来完成海量数据的统计和分析,而不必使用编程语言开 MapReduce 那么麻烦。

      [ 最终理解 ]

      Hive 是 OLAP(online analyze process,在线分析处理)。通常称为数据仓库,简称数仓。内置很多分析函数,可进行海量数据的在线分析处理。

      Hive 构建在 Hadoop 之上,使用 HDFS 作为进行存储,计算过程采用的是 Mapreduce 完成,本质上 Hive 是对 Hadoop 的  MapReduce 的封装,通过原始的  MapReduce 方式进行数据处理与分析,往往效率较低,而且具有相当的复杂度,学习曲线较长。

      Hive 常用传统的 SQL 方式作为操作手段,极大的降低了学习曲线,毕竟大部分人对 SQL 还是比较熟悉的。但在运行时,仍然要将 SQL 进行翻译成 MapReduce 程序进行。


     

    2. Hive 应用场景

      Hive 适用于离线数据的分析,操作的是通用格式的(如通用的日志文件)、被 Hadoop 管理的数据文件,它支持类 SQL,比编写 MapReduce 的 Java 代码来的更加方便,它的定位是数据仓库,存储和分析历史数据。


    3. Hive 与 Hadoop 的关系

      3.1 关系

    1. Hive构建在 Hadoop 之上

    2. HQL 中对查询语句的解释、优化、生成查询计划是由 Hive 完成的

    3. 所有的数据都是存储在 HDFS 中

    4. 查询计划被转化为 MapReduce 任务,在 Hadoop 中执行(有些查询没有 MR 任务,如:select * from table)

    5. Hadoop 和 Hive 都是用 UTF-8 编码的

      3.2 Hive 语句和 MR 执行过程对应

     

     


    4. Hive 与传统数据库对比

      4.1 对比1

    # 结构化查询语言
    SQL => struct query language
    
    # 类 SQL ,和 SQL 语句差别不大
    HQL => hive query language
    
    # 不仅仅是 SQL ,和 SQL 语句差距较大
    No SQL => not only SQL
    
    

      4.2 对比2

      1. 传统数据库 OLTP(online transaction process 在线事务处理)

    # 事务:
        ACID
        A:atomic            原子性
        C: consistent        一致性
        I:isolation           隔离性
        D: durability         持久性
    ​
    # RDBMS(关系型数据库管理系统)
        # 范式
            # 第一范式
            无重复的列,一列只能包含一个字段
            
            # 第二范式
            主键约束,一行只能被唯一标识
    ​
            # 第三范式
            非主键字段要严格依赖于主键字段


      2. Hive(OLAP:online analyze process 在线分析处理)

    Hive 数据仓库:反范式设计,允许甚至推荐冗余
    
    提供类似 SQL 的查询语言,我们称之为 HiveQL 或者 HQL
    
    熟悉的,快速的,可伸缩的,可扩展的

     
    且将新火试新茶,诗酒趁年华。
  • 相关阅读:
    sizeof和strlen的区别
    备注
    将一个正整数分解质因数
    malloc和new有什么区别
    用C来实现内存池
    句柄和指针的区别和联系是什么?
    c/c++ 宏中"#"和"##"的用法
    手机上网的原理
    数据类型转换(转自CSDN)
    vc debug和Release的切换
  • 原文地址:https://www.cnblogs.com/share23/p/9705156.html
Copyright © 2011-2022 走看看