大数据筑基期Ⅱ

Hive


 

👉为什么学习Hive

Hadoop中的MapReduce有缺点:

Mapper端的输出,是把键相同的合并起来。(sql语句中groupby的效果)

Reduce端针对一个键相同的多个值,进行处理。(sql语句中的聚合函数,如sum、order by)

需要设计MapReduce的代码

Hive

可以通过类似SQL的语句  HiveQL  操作存储在HDFS中的数据

可以通过 HiveQL 自动编译成 MapReduce 代码执行Job

 

👉Hive的三种模式

可以作为metastore的数据库有:access,virtutal fox,sqlserver,mysql,sqlite,postgresql,oracl

Local(本地模式):此模式连接到一个 in-memory 的数据库 Derby,一般用于 UnitTest。

单用户模式:通过网络连接到一个数据库中,是最常使用到的模式

多用户模式:远程服务器模式,用于非 Java 客户端访问元数据库(metastore),在服务器端启动 metaStoreServer,客户端利用 thrift 协议通过 metaStoreServer 访问元数据库。

 

👉Hive的架构图

数据库、表、记录(记录即数据)。

数据库和表是为了描述记录。(即元数据)

元数据是存储在关系型数据库(mysql,derby)上的。

记录是存储到 HDFS(磁盘空间无上限)。

hive的组成部分

Metastore:元数据(数据库和表结构)的存储,存储在mysql(关系型数据库)中。

Cli:Client,客户端;使用 bin/hive 登录的黑窗口。

Jdbc:连接

WebGui

hive 的架构

用户在hive中输入了一个 HiveQL 语句,要么转成 MapReduce 执行,要么直接查询文件。

编译器:将一个 Hive QL 转换操作符(在Hive中写的SQL语句)

操作符是hive的最小处理单元(sql语句中的一个语法:from,left join)

每个操作符代表HDFS 一个操作或一道 MapReduce 作业。

用户接口主要分为:Cli(常用),Client和WebGUI。

Cli启动的时候会同时启动一个hive副本

Client 是 hive 的客户端,用户连接到 hiveServer。在启动 Client 模式的时候,需要指出 hiveServer所在的节点,并且在该节点启动 hiveServer。WebGUI 是通过浏览器也能访问 Hive(未试过)

Hive将元数据(数据库,表)存储在数据库表(mysql)中。数据库不存储 Hive 的记录。

元数据包含:表的名字,表的列和分区及其属性,表的属性(是否为外部表等),表的数据所在的目录(HDFS)等

解释器,编译器,优化器完成sql查询语句从词法分析,语法分析,编译,优化以及查询计划的生成。查询计划存储在HDFS中,并在随后由  MapReduce 调用执行。

Hive 的数据存储在 HDFS 中,大部分数据查询,计算由 MapReduce 完成。

元数据(hive中的database,table)存储到真实的数据库(MySQL);记录存储在HDFS上,经常使用的 mysql:表,记录,库都存储在文件系统中 NTFS(本地)。

Hive 的客户端连接服务器走的是 thrift 协议;===>http===>https;传输的内容大小比较小。

 

👉Hive的数据类型

https://cwiki.apache.org/confluence/display/Hive/LanguageManual+Types

名字 MySQL Hive
整数 tinyint,int,bigint,mediumint,numeric numeric,tinyint
浮点 double,decimal decimal
字符串 varchar,text,char string
布尔  
时间
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值