Hive入门级教学

任务1 了解Hive基础

1.1.1认识Hive

    1.Hive产生的背景
     Hadoop中的MapRedrce计算模型能将计算任务切分成多个小单元,然后分布到各个节点上去执行,从而降低计算成本并提高打展性。但是使用MapReduce进行数据处理的门槛比较高,传统的数据库开发、管理和运维的人员必须掌握Java面向MapReduce API编程并具备定的编程基础后, 才能使用MapReduce处理数据。
    然而,Hadoop 分布式系统  (Hadoop Distributed File System, HDFS) 中最关键的一点就是,数据存储在HDFS上是没有Schema (模式)概念的。这里的Schema相当于表里面的列、字段、字段名称、字段与字段之间的分隔符等,也可称为Schema信息。 在HDFS上的数据文件通常是纯文本文件。
     那么能否让用户将数据文件从一个现有的数据架构转移到Hadoop上来呢?假设该数据架构是基于传统关系型数据库和SQL查询的。其实对于大量的SQL用户来说,这个问题很难解决。针对这个挑战,Hive 在Facebook诞生了。
    2.什么是Hive
     Hive 是一个开源的数据仓库工具,用于在 Hadoop 分布式文件系统上进行 数据分析和查询。它提供了一种类似于 SQL 的查询语言,允许用户使用熟悉的 SQL 语法来处理和分析存储在 Hadoop 中的大规模数据。
    Hive 将用户的查询转换为一系列的 MapReduce 任务,并在 Hadoop 集群上执行这些任务,以实现对数据的处理和分析。它还提供了数据存储、数据管理、数据提取、转换和加载(ETL)等功能。    
    3.Hive在Hadoop生态系统的位置
     Hive可以将存储在HDFS中的结构化数据文件映射成类似关系型数据库表,并接收类SQL语句,将其转化为MapReduce程序去执行。所以Hive必须依赖Hadoop而存在,它在Hadoop生态系统中的位置如下所示:
    4.Hive与传统关系数据库区别
  •     数据存储方式不同
             传统关系型数据库通常以行和列的形式存储数据,并将数据存储在本地磁盘上的表中。而 Hive 则是基于 Hadoop 的分布式文件系统(HDFS),数据以文件的形式存储在多个节点上。
  •     数据处理方式不同
             传统关系型数据库通常使用单机的计算资源来处理查询,而 Hive 则将查询转换为 MapReduce 任务,利用 Hadoop 集群的分布式计算能力来处理大规模数据。
  •     适用场景不同
             传统关系型数据库更适合需要实时响应、交易处理和复杂关联查询的场景。而 Hive 则更适合处理海量数据、数据仓库和批处理分析的场景。
  •     性能存在差异
              在处理大规模数据时,Hive 可能需要较长的时间来执行查询,因为它涉及到分布式计算和数据传输。而传统关系型数据库在小规模数据和简单查询上可能具有更好的性能。
                            表1-1  Hive与RDBMS对比
    
5. Hive 的特点与优势
Hive提供了一种比MapReduce更简单、更优的数据开发方式,使得越来越多的人开始使用Hadoop,甚至有很多Hadoop用户首选使用的大数据工具便是Hive。Hive具有以下特点。
    ➢(HQL与SQL有着相似的语法,大大提高了开发效率。
    ➢Hive 支持运行在不同的计算框架上,包括YAPN、Tez、Spark、Flink等。
    ➢Hive 支持HDFS与HBase上的ad-hoc。
    ➢Hive支持用户自定义的函数、脚本等 。
   ➢Hive支持Java数据库连接(ava Database onnecivit,,JDBC) 与开放数据库连接(Open Database Cnnectivity, ODBC) 驱动,建立了自身与ETL、BI工具的通道
     在生产环境中,Hive 具有以下优势。
     ➢可扩展,Hive可以自由扩展集群的规模,一般情况下无须重启服务。
    ➢向延展Hive 支持用户自定义函数,用户可根据自己的需求来编写自定义函数。
    ➢可容错:Hive良好的容错性使得节点出现问题时SQL仍可完成执行。
    
        总之,当我们使用Hive 时,操作接口采用类SQL语法,提高了快速开发的能力,避免了编写复杂的MapReduce任务,诚少了开发人员的学习成本,而且扩展很方便。 

1.1.2Hive架构设计

      1.Hive架构图
     Hive架构包含3个部分。
    (1) Hive 客户端 (Hive Clients)。Hive 为不同类型应用程序提供不同的驱动,使应用程序可通过Java、Python 等语言连接Hive并进行与RDBMS类似的SQL查询操作。对于Java应用程序,Hive 提供了JDBC驱动;对于其他应用程序,Hive 提供了ODBC驱动
    (2) Hive 服务端(Hive Services)。 客户端必须通过服务端与Hive交互,服务端主要包括CLI、Hive Server、Hive Web Interface、Driver、 Metastore 等组件。
    (3) Hive 存储与计算(Hive Storage and Computing)。Hive 主要通过元数据存储数据库和Hadoop集群进行数据的存储与计算。Hive 的元数据使用RDBMS存储,Hive 的数据存储在HDFS中,大部分数据查询由MapReduce完成。
    Hive具体架构如下所示。

1.1.3 Hive工作流程

     HQL通过CLI、JDBC客户端、HWI接口提交,通过Compiler编译并运用Metastore中的数据进行类型检测和语法分析,进而得到执行计划,产生以有向无环图(DirectedAcyclic Graph, DAG) 描述的一系列MapReduce作业; DAG描述了作业之间的依赖关系,执行引擎按照作业的依赖关系将作业提交至Hadoop执行。
     Hive 的具体工作流程如图下所示。
                        Hive                                                        Hadoop
                                                        图1     Hive工作流程
     
    Hive工作流程中各步骤的 详细描述如表所示。

1.1.4 Hive适用场景

       1.适用场景
        ➢    Hive 适用于非结构化数据的离线分析统计场合。
        ➢    Hive 的执行延迟比较高,因此适用于对实时性要求不高的场合。
        ➢    Hive 的优势在于处理大数据,因此适用于大数据(而非小数据)处理的场合。
          2.场景技术特点
        ➢    为超大数据集设计了计算与扩展功能。
        ➢    支持 SQL like查询语言。
        ➢    支持多表的 join操作。
        ➢    支持非结构化数据的查询与计算。
        ➢    提供数据存取的编程接口,支持JDBC、ODBC。
  • 18
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值