Hive

Hadoop
HDFS 存储数据
YARN 资源管理
MapReduce 处理数据
Mapreduce is hard to program
【八股文】格式编程,三大部分
No schema,lack of query languages

  • 数据分析,针对DBA、SQL语句,如何对数据分析
  • MapReduce编程成本高
  • FaceBook实现并开源Hive

日志
日志内容,统一的规范,每一行数据就是一条数据(RDBMS)
很多列,统一的标识符,进行分割

schema

  • 模式
  • 约束

Hive 数据仓库

  • 处理的数据存储在HDFS
  • 分析数据底层的实现MapReduce
  • 执行程序运行的YARN

RDBMS

  • 表的概念
create table bf_log(
  ip string,
  user string,
  date string,
  ....
  )

分析

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

SQL on Hadoop

ETL
抽取 转换 加载

什么是Hive

由FaceBook开源用于解决海量结构化日志的数据统计;
Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射成一张表,并提供类SQL查询功能;

构建在Hadoop之上的数据仓库;

  • 使用HQL 作为查询接口
  • 使用HDFS存储
  • 使用MapReduce计算

本质是:将HQL转化成MapReduce程序

灵活性和扩展性较好;支持UDF,自定义存储格式等
适合离线数据处理。

Hive架构


Hive_第1张图片
Hive架构图.png
  • 用户接口:client
    CLI(hive shell)、JDBC/ODBC(java访问hive),webui(浏览器访问Hive)
  • 元数据:metastore
    元数据包括:表名、表所属的数据库(默认是default)、表的拥有者、列/分区字段、表的类型(是否是外部表)、表的数据所在目录等;
    默认存储在自带的Derby数据库中,推荐使用MySQL存储MetaStore;
  • Hadoop
    使用HDFS进行存储,使用MapReduce进行计算
  • 驱动器:Driver
    包含解析器、编译器、优化器、执行器;
  1. 解析器
    将SQL字符串转换成抽象语法树AST,这一步一般都用第三方工具库完成,比如antlr;对AST进行语法分析,比如表是否存在、字段是否存在、SQL语义是否有误(比如select中被判定为聚合的字段在group by中是否有出现);
  2. 编译器
    将AST编译生成逻辑执行计划;
  3. 优化器
    对逻辑执行计划进行优化;
  4. 执行器
    把逻辑执行计划转换成可以运行的物理计划。对于Hive来说,就是MR/TEZ/Spark;

Hive的优点

  • 操作接口采用类SQL语法,提供快速开发的能力(简单、容易上手)
  • 避免了去写MapReduce,减少开发人员的学习成本;
  • 统一的元数据管理,可与impala/spark等共享元数据
  • 易扩展(HDFS+MapReduce:可以扩展集群规模;支持自定义函数)

Hive的使用场景

  • 数据的离线处理;比如:日志分析,海量结构化数据离线分析。
  • Hive的执行延迟比较高,因此Hive常用语数据分析的,对实时性要求不高的场合
  • Hive优势在于处理大数据,对于处理小数据没有优势,因为Hive的执行延迟比较高。

你可能感兴趣的:(Hive)