一、Hive设计思想

(了解)
Facebook用户社交数据存储与处理

Facebook是美国的一个社交网站 ,于2004年2月4日上线。主要创始人为美国人马克·扎克伯格。Facebook是世界排名领先的照片分享站点。

根据Comscore咨询公司的数据显示,2008年5月Facebook全球独立访问用户首次超过了竞争对手Myspace,前者五月独立访问用户达到了1.239亿,页面浏览量达到500.6亿。2009年12月,Facebook的独立人次达到了4.69亿,其综合浏览量增长了141个百分点,在09年末达到了1930亿。

1.1、Hive由来

Hive是Facebook开发的,构建于Hadoop集群之上的数据仓库应用。2008年Facebook将Hive项目贡献给Apache,成为开源项目。

Hive最初是由Facebook设计的,是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供简单的类SQL查询语言(称为HiveQL)。

底层将HiveQL语句转换为MapReduce任务运行,它允许熟悉SQL的用户基于Hadoop框架分析数据。

优点:学习成本低,对于简单的统计分析,不必开发专门的MapReduce程序,直接通过HiveQL即可实现。


二、Hive体系结构

  • CLI:Cli 启动的时候,会同时启动一个 Hive 副本。

  • JDBC客户端:封装了Thrift,java应用程序,可以通过指定的主机和端口连接到在另一个进程中运行的hive服务器

  • ODBC客户端:ODBC驱动允许支持ODBC协议的应用程序连接到Hive。

  • WUI 接口:是通过浏览器访问 Hive

  • Thrift服务器
    基于socket通讯,支持跨语言。Hive Thrift服务简化了在多编程语言中运行Hive的命令。绑定支持C++,Java,PHP,Python和Ruby语言

  • 解析器

    • 编译器:完成 HQL 语句从词法分析、语法分析、编译、优化以及执行计划的生成。
    • 优化器是一个演化组件,当前它的规则是:列修剪,谓词下压。
    • 执行器会顺序执行所有的Job。如果Task链不存在依赖关系,可以采用并发执行的方式执行Job。
  • 元数据库

    • Hive的数据由两部分组成:数据文件和元数据。元数据用于存放Hive库的基础信息,它存储在关系数据库中,如 mysql、derby。元数据包括:数据库信息、表的名字,表的列和分区及其属性,表的属性,表的数据所在目录等。
  • Hadoop

    • Hive 的数据文件存储在 HDFS 中,大部分的查询由 MapReduce 完成。(对于包含 * 的查询,比如 select * from tbl 不会生成 MapRedcue 作业)

2.1、运行机制

  • 用户通过用户接口连接Hive,发布Hive SQL
  • Hive解析查询并制定查询计划
  • Hive将查询转换成MapReduce作业
  • Hive在Hadoop上执行MapReduce作业

补充知识点

① 用户接口主要有三个:CLI,Client和WUI.其中最常用的是CLI,CLI启动的时候,会同时启动一个Hive副本。Client是Hive的客户端,用户连接至Hive Server。在启动Client模式的时候,需要指出Hive Server所在节点,并且在该节点启动Hive Server。WUI是通过浏览器访问Hive。

② Hive将元数据存储在数据库中,如mysql、derby。Hive中的元数据包括表的名字,表的列和分区以及属性,表的属性(是否为外部表等),表的数据所在目录等。

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

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

三、Hive应用场景

3.1、Hive设计特点

  • Hive 不支持对数据的改写和添加,所有的数据都是在加载的时候确定的。
  • 支持索引,加快数据查询。
  • 不同的存储类型,例如,文本文件、序列化文件。
  • 将元数据保存在关系数据库中,减少了在查询中执行语义检查时间。
  • 可以直接使用存储在Hadoop 文件系统中的数据。
  • 内置大量用户函数UDF 来操作时间、字符串和其他的数据挖掘工具,支持用户扩展UDF 函数来完成内置函数无法实现的操作。
  • 类SQL 的查询方式,将SQL 查询转换为MapReduce 的job 在Hadoop集群上执行。
  • 编码跟Hadoop同样使用UTF-8字符集。

3.2、Hive的优势

  • 解决了传统关系数据库在大数据处理上的瓶颈。适合大数据的批量处理。
  • 充分利用集群的CPU计算资源、存储资源,实现并行计算。
  • Hive支持标准SQL语法,免去了编写MR程序的过程,减少了开发成本。
  • 具有良好的扩展性,拓展功能方便。

3.3、Hive的劣势

  • Hive的HQL表达能力有限:有些复杂运算用HQL不易表达。
  • Hive效率低:Hive自动生成MR作业,通常不够智能。

针对Hive运行效率低下的问题,促使人们去寻找一种更快,更具交互性的分析框架。 SparkSQL 的出现则有效的提高了Sql在Hadoop 上的分析运行效率。

3.4、应用场景

适用场景

  • 海量数据的存储处理
  • 数据挖掘
  • 海量数据的离线分析

不适用场景

  • 复杂的机器学习算法
  • 复杂的科学计算
  • 联机交互式实时查询

学习笔记Hive(一)—— Hive简介相关推荐

  1. JavaScript学习笔记01【基础——简介、基础语法、运算符、特殊语法、流程控制语句】

    w3school 在线教程:https://www.w3school.com.cn JavaScript学习笔记01[基础--简介.基础语法.运算符.特殊语法.流程控制语句][day01] JavaS ...

  2. HoloLens开发学习笔记(一):HoloLens简介

    HoloLens开发学习笔记(一):HoloLens简介 一.HoloLens简介 Microsoft HoloLens是Windows Holographic的使用主要设备.HoloLens是一个W ...

  3. OPENMP学习笔记(1)——简介,模型,运行

    OPENMP学习笔记(1)--简介,模型,运行 简介: OpenMP的英文全称是Open Multiprocessing,一种应用程序接口(API,即Application Program Inter ...

  4. JavaWeb学习笔记2 —— Web服务器简介

    JavaWeb学习笔记2 -- Web服务器简介 参考教程B站狂神https://www.bilibili.com/video/BV12J411M7Sj 相关技术 ASP: 微软:国内最早流行的就是A ...

  5. 小猫爪:S32K3学习笔记09-S32K3之Safety简介

    小猫爪:S32K3学习笔记09-S32K3之Safety简介 1 前言 2 Safety相关硬件介绍 3 Safety相关软件介绍 4 Safety文章目录 END 1 前言   接下来,就要开始进学 ...

  6. AVOS Cloud 学习笔记(一) 简介和入门

    AVOS Cloud的使用 学习笔记(一) 序章.AVOS Cloud的简介 AVSO Cloud是解决云端数据存储,消息推送,用户行为统计分析和社会化组件以及后端部署的一站化提供商,支持iOS.安卓 ...

  7. 【Python学习笔记】1.Python简介

    本系列为自己学习Python的笔记,如有误,欢迎大家指正. Python介绍 简介 Python是一种解释型.面向对象的语言.由吉多-范罗苏姆(Guido van Rossum)于1989年发明,19 ...

  8. python学习笔记1之-python简介及其环境安装

    python学习笔记之-python简介及其环境安装 最近几年python之火不用多说,最近开始利用时间自学python,在学习的过程中,按照自己的思路和理解记录下学习的过程,并分享出来,如果正好你也 ...

  9. XML学习笔记之XML的简介

    最近,自学了一段时间xml,希望通过学习笔记的整理能够巩固一下知识点,也希望把知识分享给你们(描红字段为重点): XML(extensible Markup language):可扩展的标记语言,解决 ...

  10. Spark基础学习笔记08:Scala简介与安装

    文章目录 零.本讲学习目标 一.Scala简介 (一)Scala概述 (二)函数式编程 (三)Scala特性 1.一切都是对象 2.一切都是函数 3.一切都是表达式 (四)在线运行Scala 二.选择 ...

最新文章

  1. 高通投资商汤,是因为手机刷脸市场吗?阿里巴巴再砸AI芯片,弄啥咧 | AI三分钟
  2. Access restriction required library rt.jar
  3. 遇到Request header is too large,你们是如何解决的?
  4. 1个ieee1394端口_如何使用圆形端口进行波导激励和终止
  5. sizeof之字节对齐
  6. .net中调用exchange服务器发邮件
  7. jquery 特效专辑
  8. 草稿 复选框绑定数据 1204
  9. DB2的ErrorCode
  10. 变速恒频风电机组的优缺点_风电消防安全解决方案解析
  11. android游戏菜鸟教程,菜鸟教程app
  12. ojdbc maven
  13. excel手机版_excel仓库管理手机版导出软件
  14. IDA Pro、OllyDbg、LordPE和UltraEdit简单实用实验
  15. MySQL中统计函数的使用
  16. 惊爆:江民公司官方网站今日被黑
  17. 计算机的数学知识的手抄报图片大全,数学手抄报图片大全获奖作品
  18. 使用域名邮箱发送邮件
  19. 曾鹏锦老师:具备这5种能力人生之路越来越好走越走越宽
  20. 字符串--Leetcode (python)

热门文章

  1. 笨办法学python3.6 pdf_“笨办法”学Python3.pdf
  2. python怎么打开ipynb文件_如何优雅的打开.ipynb文件
  3. react 调用组件方法_React源码分析1 — 组件和对象的创建(createClass,createElement)...
  4. Python入门100题 | 第078题
  5. Python入门100题 | 第049题
  6. java中最容易犯错的特殊字符
  7. Nashorn——在JDK 8中融合Java与JavaScript之力--转
  8. publishing failed with multiple errors resource is out of sync with the file system--转
  9. zookeeper源码分析之三客户端发送请求流程
  10. Java 动态代理机制分析及扩展--转