Hive学习之路(一)Hive初识

Hive简介

什么是Hive

  1. Hive由Facebook实现并开源
  2. 是基于Hadoop的一个数据仓库工具
  3. 能够将结构化的数据映射为一张数据库表
  4. 提供HQL(Hive SQL)查询功能
  5. 底层数据是存储在HDFS上
  6. Hive的本质是将SQL语句转换为MapReduce任务运行
  7. 使不熟悉MapReduce的用户很方便地利用HQL处理和计算HDFS上的结构化数据,适用于离线的批量数据计算

为何使用Hive

​ 直接使用MapReduce所面临的问题:mysql

  1. 人员学习成本过高
  2. 项目周期要求过短
  3. MapReduce实现复杂查询逻辑开发难度太大

为何要使用Hive:web

  1. 更友好的接口:操做接口采用类SQL的语句,提供快速开发的能力
  2. 更低的学习成本:避免了写MapReduce,减小开发人员的学习成本
  3. 更好的扩展性:可自由扩展集群规模而无需重启服务,还支持用户自定义函数

Hive的特色

​ 优势:sql

  1. 可扩展性、横向扩展:Hive能够自由的扩展集群的规模,通常状况下不须要重启服务。shell

    • 横向扩展:经过分担压力的方式扩展集群的规模
    • 纵向扩展:一台服务器cpu i7
  2. 延展性:数据库

  3. 良好的容错性服务器

    缺点:架构

  4. Hive不支持记录级别的增删改查
  5. Hive的查询延迟很严重
  6. Hive不支持事务编辑器

Hive和RDBMS的对比

对比项 Hive RDBMS
查询语言 HQL SQL
数据存储 HDFS Raw Device or Local FS
执行器 MapReduce Executor
数据插入 支持批量导入/单条插入 支持批量导入/单条插入
处理数据规模
执行延迟
分区 支持 支持
索引 0.8版本以后加入简单索引 支持复杂的索引
扩展性 高(好) 有限(查)
数据加载模式 读时模式(快) 写时模式(慢)
应用场景 海量数据查询 实时查询

总结:函数

​ Hive具备SQL数据库的外表,但应用场景彻底不一样,Hive只适合用来作海量离线数据统计分析,也就是数据仓库。工具

Hive架构

image-20190818224859270

1. 用户接口:shell/CLI,jdbc/odbc.webui Command Line Interface

CLI,Shell终端命令行(Command Line Interface),采用交互形式使用hive命令与Hive进行交互,最经常使用(学习,调试,生产)

2.跨语言服务:thrift server 提供了一种能力,让用户可使用多种不一样的语言来操做Hive

3.底层的Driver:驱动器Driver,编辑器Compiler,优化器Optimizer,执行器Executor

4.元数据存储系统:RDBMS MySQL

元数据:通俗的讲,就是存储在Hive中的数据的描述信息。

相关文章
相关标签/搜索