Hadoop-Hive基础知识整理

简介: Hadoop-Hive基础知识整理

一. Hive入门简介


1. Hive是什么


Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射成一张表,并提供类SQL查询功能.


  • 构建在Hadoop 之上的数据仓库;
  • 使用HQL作为查询接口;
  • 使用HDFS存储;
  • 使用MapReduce计算;
  • 本质是:将HQL转化成MapReduce程序.
    基于其本质,也可以将Hive看成是一个SQL的解析引擎,但这样说并不全面,毕竟有时SQL也会不被解析的;
  • 底层: HDFS负责存储数据;YARN负责进行资源管理;MapReduce负责处理数据;


2. Hive产生的目的


用于解决海量结构化日志的数据统计;


结构化日志: 有统一的规范


  • (1) 每一行数据就是一条数据;
  • (2) 很多列之间有统一的标识符进行分割;


3. 特点


  • 操作接口采用类SQL语法,提供快速开发的能力(简单、容易上手);
  • 避免了去写MapReduce,减少开发人员的学习成本;
  • 统一的元数据管理,可与impala/spark等共享元数据;
  • 灵活性和扩展性比较好:支持UDF,自定义存储格式等;数据存储在hdfs上,存储容量可以平滑扩展;
  • 适合离线数据处理;hive本质是跑MapReduce程序,更适合离线数据处理;比如:日志分析,海量结构化数据离线分析…
  • Hive的执行延迟比较高,因此hive常用于数据分析的,对实时性要求不高的场合
  • Hive优势在于处理大数据,对于处理小数据没有优势,因为Hive的执行延迟比较高。


HQL与SQL的区别:


  • HSQL:读时模式,也就是读数据做检查操作,比如检查表是否存在,字段是否存在,sql语法是否正确等;但在加载数据时,不对数据进行检查,仅仅是文件的复制或移动,所以加载数据会比较快.HSQL写快读慢.
  • SQL:写时模式,就是在加载数据时,会建立索引,字段检查等操作,这些操作都是为了提升查询的性能.所以SQL查询时比较快,而写入时比较慢.SQL读快,写慢.


UDF,UDAF与UDTF的区别:


  • UDF:用户自定义普通函数,一对一,用于select语句,对查询字段的结构化处理;比如format操作等;
  • UDAF:用户自定义聚合函数,多对一,group by
  • UDTF:用户自定义表生成函数,一对多.比如:split,分词


4. 基本概念


4.1 表的概念(类似关系型数据库)


create table bf_log(
ip string,
user string,
date string,
......
)


4.2 HQL(类似SQL)


#HiveQL
select * from bf_log limit 10 ;
select substring(ip,0,4) ip_prex from bg_log ;


HQL的本质是通过Hive Engine转换为MapReduce任务.


二. Hive知识入门



ce1461dfe4af61d16a4d3335257e5f6.png


Hive架构


2.1 架构组成


(1) 用户接口: Client


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


(2) 元数据: Metastore


元数据包括:表名、表所属的数据库(默认是default)、表的拥有者、列/
分区字段、表的类型(是否是外部表)、表的数据所在目录等;


默认存储在自带的derby数据库中,推荐使用采用MySQL存储Metastore;


(3) Driver


包含:解析器、编译器、优化器、执行器;


  • 解析器:将SQL字符串转换成抽象语法树AST,这一步一般都用第三方工
    具库完成,比如antlr;对AST进行语法分析,比如表是否存在、字段是否
    存在、SQL语义是否有误(比如select中被判定为聚合的字段在group by中是
    否有出现);
  • 编译器:将抽象语法树AST编译生成逻辑执行计划;
  • 优化器:对逻辑执行计划进行优化;
  • 执行器:把逻辑执行计划转换成可以运行的物理计划。对于Hive来说,就是MR/TEZ/Spark.


(4) HDFS


使用HDFS存储数据.Hive本身不存在数据,Hive虽有表的定义但表是纯的逻辑表,数据是存在HDFS上的.


HIVE中的内容不支持改写和删除,适合读多写少的场景.

相关文章
|
25天前
|
SQL 分布式计算 Hadoop
手把手的教你搭建hadoop、hive
手把手的教你搭建hadoop、hive
61 1
|
6月前
|
存储 分布式计算 关系型数据库
bigdata-08-MapReduce原理到实战
bigdata-08-MapReduce原理到实战
75 0
|
存储 分布式计算 监控
|
存储 缓存 分布式计算
Hadoop原理与技术——Hbase实操
Hadoop原理与技术——Hbase实操
138 0
Hadoop原理与技术——Hbase实操
|
分布式计算 资源调度 Hadoop
Hadoop学习(4)-mapreduce的一些注意事项
Hadoop学习(4)-mapreduce的一些注意事项 关于mapreduce的一些注意细节 如果把mapreduce程序打包放到了liux下去运行, 命令java  –cp  xxx.jar 主类名 如果报错了,说明是缺少相关的依赖jar包 用命令hadoop jar xxx.
680 0
|
SQL HIVE 分布式计算
Hive进阶
hive配置,命令 hive查询显示列名 set hive.cli.print.header=true; // 打印列名 set hive.cli.print.
2979 0
|
大数据 分布式计算 Hadoop
hadoop_学习_01_入门准备
一、入门准备 1.零基础学习Hadoop 2.大数据初学者应该知道的知识
690 0