学习笔记Hive(一)—— Hive简介
一、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简介相关推荐
- JavaScript学习笔记01【基础——简介、基础语法、运算符、特殊语法、流程控制语句】
w3school 在线教程:https://www.w3school.com.cn JavaScript学习笔记01[基础--简介.基础语法.运算符.特殊语法.流程控制语句][day01] JavaS ...
- HoloLens开发学习笔记(一):HoloLens简介
HoloLens开发学习笔记(一):HoloLens简介 一.HoloLens简介 Microsoft HoloLens是Windows Holographic的使用主要设备.HoloLens是一个W ...
- OPENMP学习笔记(1)——简介,模型,运行
OPENMP学习笔记(1)--简介,模型,运行 简介: OpenMP的英文全称是Open Multiprocessing,一种应用程序接口(API,即Application Program Inter ...
- JavaWeb学习笔记2 —— Web服务器简介
JavaWeb学习笔记2 -- Web服务器简介 参考教程B站狂神https://www.bilibili.com/video/BV12J411M7Sj 相关技术 ASP: 微软:国内最早流行的就是A ...
- 小猫爪:S32K3学习笔记09-S32K3之Safety简介
小猫爪:S32K3学习笔记09-S32K3之Safety简介 1 前言 2 Safety相关硬件介绍 3 Safety相关软件介绍 4 Safety文章目录 END 1 前言 接下来,就要开始进学 ...
- AVOS Cloud 学习笔记(一) 简介和入门
AVOS Cloud的使用 学习笔记(一) 序章.AVOS Cloud的简介 AVSO Cloud是解决云端数据存储,消息推送,用户行为统计分析和社会化组件以及后端部署的一站化提供商,支持iOS.安卓 ...
- 【Python学习笔记】1.Python简介
本系列为自己学习Python的笔记,如有误,欢迎大家指正. Python介绍 简介 Python是一种解释型.面向对象的语言.由吉多-范罗苏姆(Guido van Rossum)于1989年发明,19 ...
- python学习笔记1之-python简介及其环境安装
python学习笔记之-python简介及其环境安装 最近几年python之火不用多说,最近开始利用时间自学python,在学习的过程中,按照自己的思路和理解记录下学习的过程,并分享出来,如果正好你也 ...
- XML学习笔记之XML的简介
最近,自学了一段时间xml,希望通过学习笔记的整理能够巩固一下知识点,也希望把知识分享给你们(描红字段为重点): XML(extensible Markup language):可扩展的标记语言,解决 ...
- Spark基础学习笔记08:Scala简介与安装
文章目录 零.本讲学习目标 一.Scala简介 (一)Scala概述 (二)函数式编程 (三)Scala特性 1.一切都是对象 2.一切都是函数 3.一切都是表达式 (四)在线运行Scala 二.选择 ...
最新文章
- 高通投资商汤,是因为手机刷脸市场吗?阿里巴巴再砸AI芯片,弄啥咧 | AI三分钟
- Access restriction required library rt.jar
- 遇到Request header is too large,你们是如何解决的?
- 1个ieee1394端口_如何使用圆形端口进行波导激励和终止
- sizeof之字节对齐
- .net中调用exchange服务器发邮件
- jquery 特效专辑
- 草稿 复选框绑定数据 1204
- DB2的ErrorCode
- 变速恒频风电机组的优缺点_风电消防安全解决方案解析
- android游戏菜鸟教程,菜鸟教程app
- ojdbc maven
- excel手机版_excel仓库管理手机版导出软件
- IDA Pro、OllyDbg、LordPE和UltraEdit简单实用实验
- MySQL中统计函数的使用
- 惊爆:江民公司官方网站今日被黑
- 计算机的数学知识的手抄报图片大全,数学手抄报图片大全获奖作品
- 使用域名邮箱发送邮件
- 曾鹏锦老师:具备这5种能力人生之路越来越好走越走越宽
- 字符串--Leetcode (python)
热门文章
- 笨办法学python3.6 pdf_“笨办法”学Python3.pdf
- python怎么打开ipynb文件_如何优雅的打开.ipynb文件
- react 调用组件方法_React源码分析1 — 组件和对象的创建(createClass,createElement)...
- Python入门100题 | 第078题
- Python入门100题 | 第049题
- java中最容易犯错的特殊字符
- Nashorn——在JDK 8中融合Java与JavaScript之力--转
- publishing failed with multiple errors resource is out of sync with the file system--转
- zookeeper源码分析之三客户端发送请求流程
- Java 动态代理机制分析及扩展--转