Hive架构

1)用户接口:

  CLI(hive shell):命令行工具;启动方式:hive 或者 hive --service cli

  ThriftServer:通过Thrift对外提供服务,默认端口是10000;启动方式:hive --service hiveserver

  WEBUI(浏览器访问hive):通过浏览器访问hive,默认端口是9999;启动方式:hive --service hwi

2)元数据存储(Metastore):启动方式:hive -service metastore

  默认存储在自带的数据库derby中,线上使用时一般采用MySQL;

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

  database是表(table)的名字空间。默认的数据库是default;

  table的原数据信息有:列和它们的类型、拥有者(owner),存储空间和SerDe信息;

  partition每个分区都有自己的列,存储空间和SerDe信息等

3)驱动器(Driver):

  编译器、优化器、执行器完成HQL查询语句从词法分析、语法分析、编译、优化以及查询计划的生成;

  生成的查询计划存储在HDFS中,并在随后的MapReduce调用执行;

4)Hadoop

  用MapReduce计算,用HDFS存储;

  Hive的数据存储在HDFS之上,包括Database、Table、Partition等;

  Hive的默认数据仓库是/user/hive/warehouse,可以在hive-site.xml中由hive.metastore.warehouse.dir进行配置;

  除了外部表外,每个表在数据仓库下都有一个相应的存储目录;

  当数据被加载到表中时,不会对数据进行任何转换,只是将数据移动到数据仓库中去;

  非外部表被删除时,表数据和元数据都被删除;外部表被删除时,只删除元数据不删除表数据;

  分区表的一个Partition对应该表下的一个子目录;

  每个Bucket对应一个文件

  大部分的查询由MapReduce计算完成;两种情况不跑MapReduce:select * from xxx和select * from xxx where 分区字段不跑mapreduce

5)hiveserver2

  启动方式:hive --service hiveserver2

  HiveServer2是HiveServer的升级版,提供了新的Thrift API处理JDBC/ODBC、Kerberos身份验证、多客户端并发等;

  HiveServer2提供了新的CLI:BeeLine,是hive0.11后引入的,基于SQLLine,可以作为Hive jdbc client端访问HiveServer2,启动一个Beeline对应一个session;

Hive单机环境部署图

Hive集群环境部署图

注:在生产环境中元数据需要采用主备服务器的方式防止宕机;

Hive运行模式

Hive运行模式即任务的执行环境,分为:本地和集群两种

可以通过mapred.job.tracker来指定,指定方式:

hive> SET mapred.job.tracker=local

不设置默认为集群方式。

Hive与关系型数据库的区别

Hive和关系型数据库并没有什么关系,只是语法类似而已。

Hive 

SQL

数据插入

支持批量导入

支持单条和批量导入

数据更新

不支持(数据导入后就不再支持改变)

支持

索引

支持

支持

分区

支持

支持

执行延迟

高

低

扩展

好

有限

Hive基础之Hive体系架构&运行模式&Hive与关系型数据的区别的更多相关文章

  1. SaaS系列介绍之十三: SaaS系统体系架构

    1 系统体系架构设计 软件开发中系统体系架构决定了一个系统稳定性.健壮性.可扩展性.兼容性和可用性,它是系统的灵魂.体系架构是架构师所关注的核心.良好的体系架构是系统成功的开端,否则,再好的代码与设计 ...

  2. Hive基础(2)---(启动HiveServer2)Hive严格模式

    启动方式 1, hive  命令行模式,直接输入/hive/bin/hive的执行程序,或者输入 hive –service cli 用于linux平台命令行查询,查询语句基本跟mysql查询语句类似 ...

  3. Hive性能优化【核心思想、运行模式、并行计算】

    一.核心思想 把HQL当做MapReduce程序去优化. 注意,以下SQL不会转为MapReduce执行: 1.select仅查询本表字段. 2.where仅对本表字段做条件过滤. 二.启动Hive ...

  4. Hive的连接和运行模式

    原文链接: https://www.toutiao.com/i6771018203687551495/ Hive的连接 启动hadoop的时候将history也启动,如果出问题,可以方便我们后续定位 ...

  5. hive的体系架构及安装

    1,什么是Hive? Hive是能够用类SQL的方式操作HDFS里面数据一个数据仓库的框架,这个类SQL我们称之为HQL(Hive Query Language) 2,什么是数据仓库? 存放数据的地方 ...

  6. (cdh)hive 基础知识 名词详解及架构

    过程 启动 hive 之后出现的 CLI 是查询任务的入口,CLI 提交任务给 Driver Driver 接收到任务后调用 Compiler,Executor,Optimizer 将 SQL 语句转 ...

  7. Hive基础讲解

      一.Hive背景介绍 Hive最初是Facebook为了满足对海量社交网络数据的管理和机器学习的需求而产生和发展的.马云在退休的时候说互联网现在进入了大数据时代,大数据是现在互联网的趋势,而had ...

  8. [转帖]Hive基础(一)

    Hive基础(一) 2018-12-19 15:35:03 人间怪物 阅读数 234   版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接 ...

  9. Hadoop优势,组成的相关架构,大数据生态体系下的模式

    Hadoop优势,组成的相关架构,大数据生态体系下的模式 一.Hadoop的优势 二.Hadoop的组成 2.1 HDFS架构 2.2 Yarn架构 2.3 MapReduce架构 三.大数据生态体系 ...

随机推荐

  1. C# 泛型详解---进阶编程(七)

    今天我们来学习在C#的泛型技巧,传统的课本都在讲解什么是泛型,然后列举一大堆代码示例告诉你什么是泛型,今天我们就来聊聊更加本质的东西,我为什么要用泛型?它是来解决什么问题的?底层原理是什么? 简单来说 ...

  2. 关于Gson无法将匿名类转化为json字符串的问题

    在使用gson过程中,一般会将数据存在一个对象模型中,使用gson将模型转换成json字符串用于数据交互. 代码形如: ArrayList<String> list = new Array ...

  3. chapter02“良/恶性乳腺癌肿瘤预测”的问题

    最近比较闲,是时候把自己以前看的资料整理一下了. LogisticRegression:由于在训练过程中考虑了所有的样本对参数的影响,因此不一定获得最佳的分类器,对比下一篇 svm只用支持向量来帮助决 ...

  4. Tomcat问题:Neither the JAVA_HOME nor the JRE_HOME environment variable is defined ,At least one of these environment variable is needed to run this program

    一眼就能看出来是jdk的环境有问题,但是用了这么久的jdk一直都配置的好好的,怎么一到Tomcat上就这么矫情了. 最后查解决方案,原来是我的jdk从官网直接下载的,虽然我修改了java_home,但 ...

  5. 20155328 2016-2017-2 《Java程序设计》第5周学习总结

    教材学习内容总结 程序设计本身的错误,建议使用Exception或其子类实例来表现. Java中所有错误都会被打包成对象. 如果父类异常对象在子类异常对象前被捕捉,则catch子类异常对象的区块将永远 ...

  6. JS经典面试题

    自己总结了一些JS面试题 希望能够帮助正在找工作的程序猿(●´∀`●) 1.js 实现一个函数对javascript中json 对象进行克隆 var oldObject ="sdf" ...

  7. rabbitmq学习(五):springboot整合rabbitmq

    一.Springboot对rabbitmq的支持 springboot提供了对rabbitmq的支持,并且大大简化了rabbitmq的相关配置.在springboot中,框架帮我们将不同的交换机划分出 ...

  8. HTML第三课——css盒子

    请关注公众号:自动化测试实战 css常用属性 width 宽 height 高 color 字体颜色 border 边框 background 背景 lesson3.html <!DOCTYPE ...

  9. 通过HTTP协议发送远程消息

    通过HTTP协议发送远程消息 MSMQ一般情况是通过tcp协议进行通讯,但如果遇到端口被禁用或防火墙,则通过HTTP协议发送消息是一个有效的解决办法. 通过HTTP协议发送消息到远程服务器 publi ...

  10. 一个5.0/3.3V双向通讯的电路

    来自群友 西江月-梧州 的分享 硬件程工-深圳福永(79993868) 17:06:33 当3.3V高时二极管阳极为3.3V,阴极接了10K上拉为5V,二极管的压降为反向,此时二极管不导通. 硬件程工 ...