• Hive架构


    Hive组织数据包含四种层次:DataBase --> Table --> Partition --> Bucket,对应在HDFS上都是文件夹形式

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

    1). 数据库内数据是动态变化的,数据仓库内数据是静态的,是用来存储数据的(一次写入多次读取)

    2). 数据库中的数据结构比较复杂,而数据仓库中数据结构简单      

    3). 数据库在操作数据时要求响应速度快,即实时的进行增删改查;而数据仓库响应时间比较长

    Hive架构

    1) 元数据:Metastore 

      包括:数据库、表、分区、桶、列等名称,表的类型(是否是外部表)、表数据所在的目录等。 

    2) 用户接口:Client 

      CLI(hive shell)、JDBC/ODBC(java访问hive)、WebUI(浏览器访问hive) 

    3) 底层操作:HDFS+MR 

      使用HDFS进行存储,使用MR进行计算 

    4) 驱动器:Driver

    • 编译器Compile:首先检查SQL中表和列是否存在,再利用第三方工具Antlr检查SQL语法是否正确,将正确的SQL解析成抽象语法树(AST),最后将AST编译成逻辑执行计划Logical Plan
    • 优化器Optimizor:将逻辑执行计划先进行优化,再转化成可以运行的物理执行计划Physical Plan,即MR任务执行,并对其进行优化
    • 执行器Executor:执行优化后的MR任务

    元数据与Hive的对应关系:

    • 【DBS】表对应【数据库】信息。
    • 【TBLS】表对应【数据表】信息。
    • 【COLUMNS_V2】表对应【字段】信息。
    • 【PARTITIONS】表对应【分区表】信息。
    • 【SDS】对应hdfs上【路径】信息:

    Hive中【数据库】对应以 .db 结尾的文件夹,【表】对应文件夹,【分区字段】对应着子文件夹,【表中数据】对应数据文件

    hive保存元数据的三种方式

    Hive将元数据存储在 RDBMS 中,有三种存储模式,其中1、2均属于本地存储,3属于远程存储。

    1、Single User Mode
    • 使用内置的derby数据库存储元数据信息,不可以并发调用hive。
    • 默认derby数据库问题:①换执行路径后,原来的表不存在了②只能单用户访问同一张表【单线程】。
    • 这是因为derby数据库特点:在那个目录下运行hive,就那个目录下产生一个derby文件和一个metastore_db目录。 

    2、Multi User Mode

      通过网络连接到mysql数据库,是最经常使用的组合模式
    3、Remote Server Mode
    • 在服务器端启动MetaStoreServer服务,客户端利用 Thrift 协议通过 MetaStoreServer 访问元数据库。
    • 客户端重要配置是hive.metastore.urls,用于通过thrift连接metastore,默认 metastore端口是9083。
    • 这种方式要单独启动metastore,命令为hive --service metastore
    • 通过CLI执行show tables,成功则表示remote server mode配置成功。 
  • 相关阅读:
    【BZOJ】1827: [Usaco2010 Mar]gather 奶牛大集会
    【BZOJ】1708: [Usaco2007 Oct]Money奶牛的硬币
    【BZOJ】1690: [Usaco2007 Dec]奶牛的旅行
    【BZOJ】1725: [Usaco2006 Nov]Corn Fields牧场的安排
    【BZOJ】1711: [Usaco2007 Open]Dining吃饭
    【BZOJ】1579: [Usaco2009 Feb]Revamping Trails 道路升级
    【BZOJ】1572: [Usaco2009 Open]工作安排Job
    【51NOD】1717 好数
    【POJ】3233 Matrix Power Series
    【BZOJ】1717: [Usaco2006 Dec]Milk Patterns 产奶的模式
  • 原文地址:https://www.cnblogs.com/skyl/p/4736088.html
Copyright © 2020-2023  润新知