一、Hive到底是什么

数据依然是存储在HDFS中,由HDFS负责管理数据冗余与一致性。Hive只是在此基础上构建了一个表,在进行数据查询时,Hive引擎将SQL语句转化为下层的mr作业,然后在mr的基础上进行计算,计算完成,最后返回结果。
        Hive的语法从MySQL中借鉴了很多东西,因此很多MySQL语句可以直接在Hive中使用。但MySQL属于数据库,Hive属于数据仓库,它们对数据的处理有着本质的区别。

  1. 如何理解Hive

(1)从概念上来看

-> Hive是基于Hadoop的一个数据仓库工具;它是MapReduce的一个封装,底层就是MapReduce程序;

-> Hive可以将结构化的数据文件(eg:按照各字段分类的数据)映射成一张虚表,并提供类SQL查询功能;

-> 有了Hive后我们就不用再写麻烦的MapReduce程序了。

(2)从本质上来看

Hive就是把sql语句转化为MapReduce程序。

Hive没有服务端,它本质是Hadoop或者说是HDFS的一个客户端,对HDFS的数据和Meta store的元数据进行操作;

通常我们启动Hive是通过JDBC客户端操作的;

ps:对比hadoop中,通过命令start-dfs.sh启动HDFS服务端,然后通过hadoop fs -命令来启动HDFS客户端进行实际操作;

服务端是提供后台服务的,客户端是进行具体操作然后让服务端提供对应服务的。

1.Hive中SQL-MapReduce原理图解

(1)事先将常用的SQL操作封装成MapReduce模板存放在Hive中;

(2)client依据实际需求写SQL语句,匹配对应的MapReduce模板,然后运行对应的MapReduce程序,

(3)生成相应的分析结果,返回给client。

所以说,Hive的本质是把SQL语句转化成了MapReduce程序。

2.为什么说Hive是基于Hadoop的呢?

(1)Hive处理的数据实际存放在HDFS中,默认路径/user/hive/warehouse;

(2)Hive分析数据的底层实现还是MapReduce程序;

(3)Hive调度资源时,用的是Yarn框架;

(4)在服务器中运行Hive之前需要群起HDFS和YARN。

二、Hive架构:

2.1 Client

Hive允许client连接的方式有三个CLI(hive shell)、JDBC/ODBC(java访问hive)、WEBUI(浏览器访问 hive)。JDBC访问时中间件Thrift软件框架,跨语言服务开发。DDL DQL DML,整体仿写一套SQL语句。

​ 1)client–需要下载安装包

​ 2)JDBC/ODBC 也可以连接到Hive
​ 现在主流都在倡导第二种 HiveServer2/beeline
​ 做基于用户名和密码安全的一个校验

​ 3)Web Gui
​ hive给我们提供了一套简单的web页面
​ 我们可以通过这套web页面访问hive 做的太简陋了

2.2 Metastore

元数据包括表名、表所属的数据库(默认是default)、表的拥有者、列/分区字段、表的类型(是否是 外部表)、表的数据所在目录等。

​ 一般需要借助于其他的数据载体(数据库)

​ 主要用于存放数据库的建表语句等信息

​ 推荐使用Mysql数据库存放数据

​ 连接数据库需要提供:uri username password driver

2.3 Driver

元数据存储在数据库中,默认存在自带的derby数据库(单用户局限性)中,推荐使用Mysql进行存储。

​ 1) 解析器(SQL Parser):将SQL字符串转换成抽象语法树AST,这一步一般都用第三方工具库完 成,比如ANTLR;对AST进行语法分析,比如表是否存在、字段是否存在、SQL语义是否有误。

​ 2) 编译器(Physical Plan):将AST编译生成逻辑执行计划。

​ 3) 优化器(Query Optimizer):对逻辑执行计划进行优化。

​ 4) 执行器(Execution):把逻辑执行计划转换成可以运行的物理计划。对于Hive来说,就是 MR/Spark。

三、Hive的优缺点

  1. 优点

(1)简单、只需要写SQL语句就行;

(2)Hive常用于数据分析,适合处理离线数据(静态数据);

(3)优势在于处理大数据;

(4)支持用户自定义函数;

ps:mysql适合处理数据的增删改查,适合处理实时数据(动态数据)

  1. 缺点

(1)Hive的表达有限,无法表达迭代式算法((第一个MapReducer程序的结果作为另一个MapReducer程序的输入,这种就是迭代式算法));

(2)数据挖掘不擅长(擅长数据挖掘的是Spark);

(3)Hive自动生成MapReduce作业,通常不够智能化,效率比较低;

(4)Hive调优一般比较困难,粒度较粗。

hive的三种交互方式

第一种****交互方式:****Hive交互shell

cd /export/servers/hive-1.1.0-cdh5.14.0

bin/hive

查看所有的数据库

hive (default)> show databases;

创建一个数据库

hive (default)> create database myhive;

使用该数据库并创建数据库表

hive (default)> use myhive;

hive (myhive)> create table test(id int,name string);

第二种****交互方式:****Hive JDBC服务

  就是启动一个服务

    前台启动:

cd /export/servers/hive-1.1.0-cdh5.14.0

bin/hive --service hiveserver2

    后台启动:

cd /export/servers/hive-1.1.0-cdh5.14.0

nohup bin/hive --service hiveserver2 2>&1 &

然后再通过beeline****连接hiveserver2:

bin/beeline

beeline> !connect jdbc:hive2://node03.hadoop.com:10000

第三种****交互方式:****Hive命令:

使用 –e 参数来直接执行hql的语句

bin/hive -e "use myhive;select * from test;"

使用 –f 参数通过指定文本文件来执行hql的语句

vim hive.sql

use myhive;select * from test;

bin/hive -f hive.sql

hive底层与数据库交互原理相关推荐

  1. 微信小程序和后台数据库交互原理

    原理图如下:

  2. Python 与数据库交互的封装(MySQL,SQLServer,SQLite)

    文章目录 Python与数据库交互原理 安装包 SqlBase.py __init__函数 common函数 select函数 insert函数 delete函数 update函数 create函数 ...

  3. hive SQL 创建数据库,创建hive表、查询时,其表名,字段,统统不区分大写(在底层一律转换为小写)

    hive SQL 创建数据库,创建hive表.查询时,其表名,字段,统统不区分大写(在底层一律转换为小写) (1).默认default数据库 hive默认自带一个名为default的数据库,如果建表时 ...

  4. hadoop、hbase、hive、spark分布式系统架构原理

    全栈工程师开发手册 (作者:栾鹏) 架构系列文章 机器学习.数据挖掘等各种大数据处理都离不开各种开源分布式系统,hadoop用户分布式存储和map-reduce计算,spark用于分布式机器学习,hi ...

  5. hadoop离线阶段(第十三节)数据仓库、hive简介、hive安装和hive的三种交互模式

    目录 数据仓库 数据仓库的基本概念 数据仓库的主要特征 数据仓库与数据库区别 数据仓库分层架构 数据仓库元数据管理 Hive简介 什么是Hive Hive的特点 Hive架构 Hive与Hadoop的 ...

  6. Mysql数据库管理系统原理及基本操作

    文章目录 Mysql数据库管理系统原理 一.引子: 二.数据库种类: 三.数据库解决的问题: 四.数据库的作用: 五.SQL结构语句: 六.关系型数据库结构: 七.存储引擎: 八.数据库存储和查询: ...

  7. 深入浅出-数据库的原理

    原址:点击打开链接 如果有人问你数据库的原理,叫他看这篇文章 英文出处: Christophe Kalenzaga . 一提到关系型数据库,我禁不住想:有些东西被忽视了.关系型数据库无处不在,而且种类 ...

  8. 如果有人问你数据库的原理,看这篇文章。(超长预警)

    长文,相当的通透.以下为scrat进行总结后的删减版. 下面假定你已经知道时间复杂度 关系型数据库无处不在,而且种类繁多,从小巧实用的 SQLite 到强大的 Teradata .但很少有文章讲解数据 ...

  9. 浅析Java web程序之客户端和服务器端交互原理

    原文链接: https://www.iteye.com/topic/470019 1. 协议 a. TCP/IP整体构架概述 TCP/IP协议并不完全符合OSI的七层参考模型.传统的开放式系统互连参考 ...

最新文章

  1. LeetCode 111. Minimum Depth of Binary Tree--Java, Python解法--二叉树最小高度--迭代,递归
  2. Keepalived双主模型中vrrp_script中权重改变故障排查
  3. C# - DynamicObject with Dynamic
  4. 012——数组(十二) 数组range array_count_values array_pad array_product
  5. xml文件的三种解析方式 DOM SAM PULL
  6. ansible软件模块参数
  7. 如何在Mac上创建和移除替身
  8. AngularJS的学习--ng-show/ng-hide/ng-if和ng-switch
  9. 贝塞尔曲线的css实现——淘宝加入购物车基础动画
  10. 8.Docker技术入门与实战 --- 使用Dockerfile创建镜像
  11. 从安装node js到构建一个vue并启动它
  12. Compose的手势(六)
  13. [FAQ10908][Message]开启固定拨号FDN功能(无法发短信的原因),发送信息时如何做FDN check
  14. Apparent connection leak detected
  15. 网页导出pdf不完整_怎么把pdf文件导出为图片?支持导出什么图片格式?
  16. 全国省市区区划代码以及邮政编码数据最新版--Mysql版(上)
  17. 简体中文旗舰版Windows7SP1
  18. win10彻底关闭更新
  19. 初中计算机教案十进制转二进制,十进制二进制教案
  20. lombok中的@Builder、@Singular注解

热门文章

  1. 耗电优化(三):JobScheduler,WorkManager
  2. python编程从入门到实践日记day13-青鬆下的ミ坚躯 的个人博客
  3. hive数据导入hbase
  4. 【语法基础】开垦农田
  5. quarts StatefulJob
  6. JS 中原型和原型链深入理解
  7. wiki of Vulkan
  8. 盘点国内外8个好用的二维码平台
  9. VS2019配置SFML
  10. 来自一位女测试工程师的内心独白...