hive之简介

第一节:hive的产生背景

mapreduce处理的绝大多数的数据,都是格式化的数据。格式化的数据的处理sql最擅长。mapjoin  reducejoin的开发代码要写40行,而sql就一个sql语句就可以了,例如:select * from a join b on a.id=b.id;。

mapreduce:开发周期比较长,人员成本高。

Sql:成本低(时间,金钱)

而hive是faceback开发的一个工具,实现用户写sql语句进行代码开发,最终执行转换mapreduce | tez (分布式计算),是基于hadoop的想让hadoop的开发更加轻便。

第二节:hive的介绍

一、概念

基于hadoop,数据存储在hdfs,并且对客户端提供hql支持,将hql语句转换为mapreduce任务,hql方言版的sql。

二、特点

1、Hive 由 Facebook 实现并开源

2、是基于 Hadoop 的一个数据仓库工具

3、可以将结构化的数据映射为一张数据库表

结构化的一条数据 --- 表中一行数据

结构化每一个字段 --- 表中的一个列

4、并提供 HQL(Hive SQL)查询功能

对客户端提供hql查询

5、底层数据是存储在 HDFS 上

6、Hive的本质是将 SQL 语句转换为 MapReduce 任务运行

hql----mapreduce

7、使不熟悉 MapReduce 的用户很方便地利用 HQL 处理和计算 HDFS 上的结构化的数据

8、适用于离线的批量数据计算。

三、基于hadoop

hive的表中的数据是存储在hdfs上的,存储完全依赖于hdfs;hive最终计算使用的默认mapreduce,资源调度用yarn。

四、数据仓库

1、数据仓库工具

用于存储数据的,更加像一个数据的管理工具。用户存储各种用于分析的数据,存储的数据量比较庞大、结构复杂。大数据集的管理工具。

2、数据库和数据仓库的区别

(1)数据类型

数据库: 一般存储某一个分析结果(可以直接进行sql的查询出结果,不用再进行数据的清洗)

数据仓库: 面向主题,过程的 (存储原始数据,经过清洗的各个层次的数据,以及最后的结果数据,都可以进行存储)

数据分析过程,各个层级的数据

原始日志:flow.log

抽层:etl ,对原始数据进行加工,对数据进行细化将需要分析的字段抽出来存储在一个个表中。

分析是基于仓库中的数据。

(2)使用场景上

OLTP  On line Transaction Processing  联机事务处理(增、删、改)

OLAP  On line analysis Processing  联机分析处理(查询)

数据库:更加倾向于OLTP

数据仓库:更加倾向于OLAP

hive不支持数据的delete、update 支持insert,但是insert的效率极低

(3)模式上

数据库:mysql --- 写模式

数据写入的时候进行校验(例如数据库中5个字段都是int类型的,在写的时候插入String类型就插不进去,所以是写入的时候进行校验的)

hbase nosql 无严格模式

数据仓库:hive --- 读模式

数据读取的时候再校验的(表中只有3个字段,在写入要5个字段的时候是可以的,但最终在读取结果的还是只呈现3个,所以是在进行读的时候进行校验的)

(4)事务支持

数据仓库:不擅长事务的,hive不支持事务

数据库:擅长事务的,mysql支持事务的

第三节:hive的架构

一、用户接口层

1、概念

给客户端使用的

2、CLI(命令行)

hive>

hive的命令行操作界面

3、JDBC/ODBC

Java或其他语言操作hive需要进行jdbc/odbc的连接。一般是使用jdbc

4、web ui

一般不用,因为界面太丑、配置繁琐。

二、跨语言服务层(thrift server)

在用户接口层可以利用不同的语言,例如hql,java等语言来进行操作,但最终要经过thrift server进行语言的转换,使得hive可以对其进行识别。但其中CLI、web ui是可以直接去操作核心驱动的,不需要经过thrift server,而JDBC/ODBC是要经过转换的。

三、元数据存储层(meta store)

元数据:描述数据(hive表数据)的数据

描述hive真实存储数据的数据,hive的表数据存储在hdfs的。

hive中表的相关信息有:

表和hdfs数据的路径对应关系

表中的字段类型

表中字段的顺序

表的创建时间。。。

这些信息就叫做hive的元数据信息(除了hive表中的数据信息)

hive的元数据信息在存储的时候采用的是格式化存储。存储在关系型数据库,默认的元数据存储数据库derby,但derby存储的时候有缺陷的,一般生产上换成mysql。

hive 表数据存储hdfs,元数据存储在关系型数据库。

四、核心驱动层(Driver)

(1) 解释器:解释器的作用是将 HiveSQL 语句转换为抽象语法树(AST)。解释hql语句中的核心的关键词,如:select  group by  order by  limit

(2) 编译器:编译器是将语法树编译为逻辑执行计划。一个hql语句会转换为多个mapreduce任务、多个job。

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

(4) 执行器:执行器是调用底层的运行框架执行,同时优化器优化完成的结果。

第四节:hive的优缺点

一、缺点

(1)延时性高

基于hadoop

(2)hive对事务的支持很弱

不擅长。行级别一般很少使用

(3)hive不支持update、delete

表数据 hdfs上,hdfs不支持修改,支持insert将insert的数据写入一个新的文件效率低。

二、优点

延展性好,内部提供271个内置函数,支持自定义函数。

原文地址:https://www.cnblogs.com/zhangxiaofan/p/11037373.html

时间: 2024-11-13 00:18:31

hive之简介的相关文章

Hive分区表简介

简介:如果一个表中数据很多,我们查询时就很慢,耗费大量时间,如果要查询其中部分数据该怎么办呢,这时我们引入分区的概念.Hive中的分区表分为两种:静态分区和动态分区. 1.静态分区: 可以根据PARTITIONED BY创建分区表,一个表可以拥有一个或者多个分区,每个分区以文件夹的形式单独存在表文件夹的目录下. 分区是以字段的形式在表结构中存在,通过describe table命令可以查看到字段存在,但是该字段不存放实际的数据内容,仅仅是分区的表示. 分区建表分为2种,一种是单分区,也就是说在表

Hive(一)--简介

Apache Hive数据仓库软件提供对存储在分布式中的大型数据集的查询和管理,它本身是建立在Apache Hadoop之上,主要提供以下功能:(1)它提供了一系列的工具,可用来对数据进行提取/转化/加载(ETL):(2)是一种可以存储.查询和分析存储在HDFS(或者HBase)中的大规模数据的机制:(3)查询是通过MapReduce来完成的(并不是所有的查询都需要MapReduce来完成,比如select * from XXX就不需要:(4)在Hive0.11对类似select a,b fro

Hive内部函数简介及查询语法

1.Hive内置函数: 在Hive中 系统给我们内置了很多函数 具体参考官方地址 看下官网给我们的介绍: SHOW FUNCTIONS; --查看所有内置函数 DESCRIBE FUNCTION <function_name>; --查看某个函数的描述 DESCRIBE FUNCTION EXTENDED <function_name>; --查看某个函数的具体使用方法 hive> DESCRIBE FUNCTION case; OK CASE a WHEN b THEN c

Hive简介

实验简介 我们本节课程主要介绍 Hive 的相关知识,将会涉及以下内容: Hive 的定义 Hive 的体系结构 Hive 与关系数据库的区别 Hive 的应用场景 Hive 的存储 一.什么是 Hive ? Hive 是一个基于 Hadoop 文件系统之上的数据仓库架构.它为数据仓库的管理提供了许多功能:数据 ETL (抽取.转换和加载)工具.数据存储管理和大型数据集的查询和分析能力.同时 Hive 还定义了类 SQL的语言 -- Hive QL. Hive QL 允许用户进行和 SQL 相似

如何使用Hive集成Solr?

(一)Hive+Solr简介 Hive作为Hadoop生态系统里面离线的数据仓库,可以非常方便的使用SQL的方式来离线分析海量的历史数据,并根据分析的结果,来干一些其他的事情,如报表统计查询等. Solr作为高性能的搜索服务器,能够提供快速,强大的全文检索功能. (二)为什么需要hive集成solr? 有时候,我们需要将hive的分析完的结果,存储到solr里面进行全文检索服务,比如以前我们有个业务,对我们电商网站的搜索日志使用hive分析完后 存储到solr里面做报表查询,因为里面涉及到搜索关

HADOOP docker(七):hive权限管理

1. hive权限简介1.1 hive中的用户与组1.2 使用场景1.3 权限模型1.3 hive的超级用户2. 授权管理2.1 开启权限管理2.2 实现超级用户2.3 实现hiveserver2用户名密码2.4 授权2.4.1 角色管理2.4.2 权限管理2.4.3 操作与权限对应关系 文档链接: hive权限管理 https://cwiki.apache.org/confluence/display/Hive/LanguageManual+Authorization#LanguageManu

课程路线

---恢复内容开始--- 云计算&大数据实战课程列表 first.课程说明: 本系列课程适合有一点编程基础的人员学习(比如java,python,c/c++),最好是java编程人员,特别是从事过j2ee开发的人员.学习完本套课程,可以帮助你成为大型项目架构师,特别是数据量大,并发量高的大型项目架构师,当然也能很大程度上提高你的薪资待遇. second.课程路线 third.Linux大纲 这章是基础课程,帮大家进入大数据领域打好Linux基础,以便更好地学习Hadoop,NoSQL,Oracl

hadoop知识体系

目录结构知识点还是挺全的,可以按照点学习. 一.Hadoop入门,了解什么是Hadoop 二.分布式文件系统HDFS,是数据库管理员的基础课程 1.Hadoop产生背景 2.Hadoop在大数据.云计算中的位置和关系 3.国内外Hadoop应用案例介绍 4.国内Hadoop的就业情况分析及课程大纲介绍 5.分布式系统概述 6.Hadoop生态圈以及各组成部分的简介 7.Hadoop核心MapReduce例子说明 1.分布式文件系统HDFS简介 2.HDFS的系统组成介绍 3.HDFS的组成部分详

Hadoop的相关资料

1 HDFS 1.1 概念 Hadoop分布式文件系统(HDFS)被设计成适合运行在通用硬件(commodity hardware)上的分布式文件系统 1.2 特点 - 高度容错性 - 硬件要求低 - 能提供高吞吐量的数据访问 1.2 文件系统命令行 1.1.1 获取帮助 hadoop fs -help 1.2.2 ls命令 hadoop fs -ls / hadoop fs -ls -R /user 1.3 getconf命令  hdfs getconf -help hdfs getconf