大数据学习笔记-2020-09-24--hive入门

hive入门

hive简介

​ hive是由Facebook开源用于解决海量结构化日志的数据统计工具。

​ hive是基于hadoop的一个数据长裤工具,可以将结构化的数据文件映射位一张表,并提供类似sql的查询语句。

​ 其本质是将HQL转换位MR程序。

  • hive的数据储存在HDFS
  • hive分析数据底层的实现是MR
  • 其执行程序运行在yarn上

hive的优缺点

  • 优点:
    • 操作接口类似sql语法,易上手
    • 避免编写mr,减少开发人员的学习成本
    • 可以处理海量数据
    • 支持自定义函数,用户可以根据自己的需求来实现自己的函数
    • 可拓展性强,因为其基于hadoop,故其性能拓展同hadoop的性能拓展
  • 缺点
    • hive中HQL的表达能力有限
      • 迭代式算法无法表达
      • 不擅长数据挖掘方面的工作
    • hive效率低
      • hive自动生成mr作业,通常情况下不够智能
      • hive调优困难,粒度较粗
    • 因其底层运算为mr,所以延迟较高,不适合作实时分析

hive架构原理

  1. 用户接口:Client

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

  2. 元数据:Metastore

    元数据包括:表名、表所属数据库、表的拥有者、列/分区字段、表的类型、表的数据所在目录等等。

    其元数据默认储存在自带的derby数据库中,一般使用mysql储存

  3. hadoop

    通过HDFS存储数据,通过MapReduce进行运算

  4. 驱动器:Driver

    1. 解析器:将sql字符串转换成抽象语法树AST
    2. 编译器:将AST编译成逻辑执行计划
    3. 优化器:对逻辑执行计划进行优化
    4. 执行器:把逻辑执行计划转换成可以运行的物理计划,即MR或Spark

hive与数据库的比较(区别)

  • 查询语言
    • sql被广泛应用在数据库中,因此,专门针对hive的特性设计了类似sql的查询语言HQL
  • 数据储存位置
    • hive是建立在hadoop之上的,所有hive的数据都是储存在hdfs中
    • 而数据库则是将数据保存在块设备或者本地文件系统中
  • 数据更新
    • 因为hive是针对数据仓库应用设计的,而数据仓库的内容是读多写少。因此hive中不建议对数据进行改写操作,所有数据都是在加载的时候确定的
    • 而数据库中的数据则通常需要进行多次修改
  • 索引
    • hive在加载过程中对数据进行任何处理,甚至不会对数据进行扫描,因此,也没有对数据中某些key建立索引。但是因为由mr的引入,hive可以并行处理数据,因此虽然没有索引,但是在大量数据访问的情况下,hive任然可以体现出优势。
  • 执行
    • hive中的大多数查询的执行通过hadoop提供的mr来实现的
    • 数据库则由自己的执行引擎
  • 延迟
    • hive在查询数据的时候,由于没有索引,需要扫描整个表,因此延迟较高。另一个引起hive高延迟的原因既是mr框架本身的高延迟。
    • 数据库在一定的数据规模内时保持着较低的执行延迟
  • 可拓展性
    • hive建立在hadoop之上,因此hive的可拓展性和hadoop时一致的
    • 数据库由于ACID语义的严格限制,扩展非常有限。目前最先进并行数据库理论上的扩展能力也只有100台左右
  • 数据规模
    • hive,大
    • 数据库,小
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值