【云小课】EI第26课 MRS基础入门之Hive组件介绍

举报
Hi,EI 发表于 2021/06/23 21:05:23 2021/06/23
【摘要】 Hive是建立在Hadoop上的数据仓库框架,提供大数据平台批处理计算能力,能够对结构化/半结构化数据进行批量分析汇总完成数据计算。提供类似SQL的Hive Query Language语言操作结构化数据,其基本原理是将HQL语言自动转换成MapReduce任务,从而完成对Hadoop集群中存储的海量数据进行查询和分析。

Hive是建立在Hadoop上的数据仓库框架,提供大数据平台批处理计算能力,能够对结构化/半结构化数据进行批量分析汇总完成数据计算。提供类似SQLHive Query Language语言操作结构化数据,其基本原理是将HQL语言自动转换成MapReduce任务,从而完成对Hadoop集群中存储的海量数据进行查询和分析。

Hive主要特点如下:

  • 海量结构化数据分析汇总。
  • 将复杂的MapReduce编写任务简化为SQL语句。
  • 灵活的数据存储格式,支持JSON,CSV,TEXTFILE,RCFILE,SEQUENCEFILE,ORC(Optimized Row Columnar)这几种存储格式。

image008.jpg

Hive结构

Hive提供服务的原理是将HQL编译解析成相应的MapReduce或者HDFS任务,如下为Hive的结构概图。


image010.png


名称

说明

HiveServer

一个集群内可部署多个HiveServer,负荷分担。对外提供Hive数据库服务,将用户提交的HQL语句进行编译,解析成对应的Yarn任务或者HDFS操作,从而完成数据的提取、转换、分析。

MetaStore

  • 一个集群内可部署多个MetaStore,负荷分担。提供Hive的元数据服务,负责Hive表的结构和属性信息读、写、维护和修改。
  • 提供Thrift接口,供HiveServerSparkWebHCatMetaStore客户端来访问,操作元数据。

WebHCat

一个集群内可部署多个WebHCat,负荷分担。提供Rest接口,通过Rest执行Hive命令,提交MapReduce任务。

Hive客户端

包括人机交互命令行Beeline、提供给JDBC应用的JDBC驱动、提供给Python应用的Python驱动、提供给MapreduceHCatalog相关JAR包。

ZooKeeper集群

ZooKeeper作为临时节点记录各HiveServer实例的IP地址列表,客户端驱动连接Zookeeper获取该列表,并根据路由机制选取对应的HiveServer实例。

HDFS/HBase集群

Hive表数据存储在HDFS集群中。

MapReduce/Yarn集群

提供分布式计算服务:Hive的大部分数据操作依赖MapReduceHiveServer的主要功能是将HQL语句转换成MapReduce任务,从而完成对海量数据的处理。

 

HCatalog建立在Hive Metastore之上,具有HiveDDL能力。从另外一种意义上说,HCatalog还是Hadoop的表和存储管理层,它使用户能够通过使用不同的数据处理工具(比如MapReduce),更轻松地在网格上读写HDFS上的数据,HCatalog还能为这些数据处理工具提供读写接口,并使用Hive的命令行接口发布数据定义和元数据探索命令。此外,经过封装这些命令,WebHcat Server还对外提供了RESTful接口。



image012.png



Hive原理

Hive作为一个基于HDFSMapReduce架构的数据仓库,其主要能力是通过对HQLHive Query Language)编译和解析,生成并执行相应的MapReduce任务或者HDFS操作。


image014.png


  • Metastore:对表,列和Partition等的元数据进行读写及更新操作,其下层为关系型数据库。
  • Driver:管理HiveQL执行的生命周期并贯穿Hive任务整个执行期间。
  • Compiler:编译HiveQL并将其转化为一系列相互依赖的Map/Reduce任务。
  • Optimizer:优化器,分为逻辑优化器和物理优化器,分别对HiveQL生成的执行计划和MapReduce任务进行优化。
  • Executor:按照任务的依赖关系分别执行Map/Reduce任务。
  • ThriftServer:提供thrift接口,作为JDBC的服务端,并将Hive和其他应用程序集成起来。
  • Clients:包含WebUIJDBC接口,为用户访问提供接口。

Hive操作示例

在华为云MRS集群中,您可以通过连接HBase客户端实现创建表,往表中插入数据,修改表,读取表数据,删除表中数据以及删除表的功能。

MRS集群的创建可参考创建集群

  1. 安装集群客户端后,登录客户端。
    cd /opt/client/
    source bigdata_env
    kinit hiveuser   #集群未开启Kerberos认证忽略
  2. 执行命令进入Hive Beeline命令行。
    beeline
    
    ...
    Beeline version 3.1.0-hw-ei-311001-SNAPSHOT by Apache Hive
    0: jdbc:hive2://XXX:21066/> 
  3. 创建一个表“mytable”。
    create table mytable(id int,name string,company string) row format delimited fields terminated by ',' stored as textfile;

    执行命令,查看表是否创建成功。

    show tables;
    
    ...
    +--------------------------------------+
    |               tab_name               |
    +--------------------------------------+
    | mytable                              |
    +--------------------------------------+
    
    

  4. 将本地源数据文件导入表中。

    例如本地已提前准备好源数据文件“/tmp/data.txt”,文件内容如下:

    1,yang,AAA 
    2,liu,BBB 
    3,cheng,CCC

    在beeline命令行中执行命令加载数据至Hive表中。

    load data local inpath '/tmp/data.txt' into table mytable;

    数据导入后,查询Hive表内容数据。

    select * from mytable;
    
    ...
    +-------------+---------------+------------------+
    | mytable.id  | mytable.name  | mytable.company  |
    +-------------+---------------+------------------+
    | 1           | yang          | AAA              |
    | 2           | liu           | BBB              |
    | 3           | cheng         | CCC              |
    +-------------+---------------+------------------+
    
  5. 删除表。
    drop table mytable;

image020.png好了,本期云小课就介绍到这里,快去体验MapReduce(MRS)更多功能吧!猛戳这里

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。