Hive简介、什么是Hive、为什么使用Hive、Hive的特点、Hive架构图、Hive基本组成、Hive与Hadoop的关系、Hive与传统数据库对比、Hive数据存储(来自学习资料)

1.1 Hive简介

1.1.1   什么是Hive

Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供类SQL查询功能。

1.1.2   为什么使用Hive

Ø  直接使用hadoop所面临的问题

人员学习成本太高

项目周期要求太短

MapReduce实现复杂查询逻辑开发难度太大

 

Ø  为什么要使用Hive

操作接口采用类SQL语法,提供快速开发的能力。

避免了去写MapReduce,减少开发人员的学习成本。

功能扩展很方便。

1.1.3   Hive的特点

Ø  可扩展

Hive可以自由的扩展集群的规模,一般情况下不需要重启服务。

 

Ø  延展性

Hive支持用户自定义函数,用户可以根据自己的需求来实现自己的函数。

 

Ø  容错

良好的容错性,节点出现问题SQL仍可完成执行。

1.2 Hive架构

1.2.1   架构图

Jobtracker是hadoop1.x中的组件,它的功能相当于: Resourcemanager+AppMaster

 

TaskTracker 相当于:  Nodemanager +  yarnchild

 

 

 

 

1.2.2   基本组成

Ø  用户接口:包括 CLI、JDBC/ODBC、WebGUI。

Ø  元数据存储:通常是存储在关系数据库如 mysql , derby中。

Ø  解释器、编译器、优化器、执行器。

1.2.3  各组件的基本功能

Ø  用户接口主要由三个:CLI、JDBC/ODBC和WebGUI。其中,CLI为shell命令行;JDBC/ODBC是Hive的JAVA实现,与传统数据库JDBC类似;WebGUI是通过浏览器访问Hive。

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

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

 

1.1 Hive与Hadoop的关系

Hive利用HDFS存储数据,利用MapReduce查询分析数据

 

 

1.2 Hive与传统数据库对比[M1] 
hive用于海量数据的离线数据分析

 

总结:hive具有sql数据库的外表,但应用场景完全不同,hive只适合用来做批量数据统计分析

1.3 Hive的数据存储

1、  Hive中所有的数据都存储在 HDFS 中,没有专门的数据存储格式(可支持Text,SequenceFile,ParquetFile,RCFILE等)

SequenceFile是hadoop中的一种文件格式:

      文件内容是以序列化的kv对象来组织的

 

2、只需要在创建表的时候告诉 Hive 数据中的列分隔符和行分隔符,Hive 就可以解析数据。

3、Hive 中包含以下数据模型:DB、Table,External Table,Partition,Bucket。

²  db:在hdfs中表现为${hive.metastore.warehouse.dir}目录下一个文件夹

²  table:在hdfs中表现所属db目录下一个文件夹

²  external table:与table类似,不过其数据存放位置可以在任意指定路径

²  partition:在hdfs中表现为table目录下的子目录

²  bucket:在hdfs中表现为同一个表目录下根据hash散列之后的多个文件

 

 

 

 


1.  查询语言。由于 SQL 被广泛的应用在数据仓库中,因此,专门针对 Hive 的特性设计了类 SQL 的查询语言 HQL。熟悉SQL 开发的开发者可以很方便的使用 Hive 进行开发。

2.  数据存储位置。Hive 是建立在 Hadoop 之上的,所有 Hive 的数据都是存储在 HDFS 中的。而数据库则可以将数据保存在块设备或者本地文件系统中。

3.  数据格式。Hive 中没有定义专门的数据格式,数据格式可以由用户指定,用户定义数据格式需要指定三个属性:列分隔符(通常为空格、”\t”、”\x001″)、行分隔符(”\n”)以及读取文件数据的方法(Hive 中默认有三个文件格式 TextFile,SequenceFile 以及 RCFile)。由于在加载数据的过程中,不需要从用户数据格式到 Hive 定义的数据格式的转换,因此,Hive 在加载的过程中不会对数据本身进行任何修改,而只是将数据内容复制或者移动到相应的 HDFS 目录中。而在数据库中,不同的数据库有不同的存储引擎,定义了自己的数据格式。所有数据都会按照一定的组织存储,因此,数据库加载数据的过程会比较耗时。

4.  数据更新。由于 Hive 是针对数据仓库应用设计的,而数据仓库的内容是读多写少的。因此,Hive 中不支持对数据的改写和添加,所有的数据都是在加载的时候中确定好的。而数据库中的数据通常是需要经常进行修改的,因此可以使用 INSERT INTO ...  VALUES 添加数据,使用 UPDATE... SET 修改数据。

5.  索引。之前已经说过,Hive 在加载数据的过程中不会对数据进行任何处理,甚至不会对数据进行扫描,因此也没有对数据中的某些 Key 建立索引。Hive 要访问数据中满足条件的特定值时,需要暴力扫描整个数据,因此访问延迟较高。由于 MapReduce 的引入, Hive 可以并行访问数据,因此即使没有索引,对于大数据量的访问,Hive 仍然可以体现出优势。数据库中,通常会针对一个或者几个列建立索引,因此对于少量的特定条件的数据的访问,数据库可以有很高的效率,较低的延迟。由于数据的访问延迟较高,决定了 Hive 不适合在线数据查询。

6.  执行。Hive 中大多数查询的执行是通过 Hadoop 提供的 MapReduce 来实现的,而数据库通常有自己的执行引擎。

7.  执行延迟。之前提到,Hive 在查询数据的时候,由于没有索引,需要扫描整个表,因此延迟较高。另外一个导致Hive 执行延迟高的因素是 MapReduce 框架。由于MapReduce 本身具有较高的延迟,因此在利用 MapReduce 执行 Hive 查询时,也会有较高的延迟。相对的,数据库的执行延迟较低。当然,这个低是有条件的,即数据规模较小,当数据规模大到超过数据库的处理能力的时候,Hive 的并行计算显然能体现出优势。

8.  可扩展性。由于 Hive 是建立在 Hadoop 之上的,因此 Hive 的可扩展性是和 Hadoop 的可扩展性是一致的(世界上最大的 Hadoop 集群在 Yahoo!,2009年的规模在 4000 台节点左右)。而数据库由于 ACID 语义的严格限制,扩展行非常有限。目前最先进的并行数据库 Oracle 在理论上的扩展能力也只有 100 台左右。

9.      数据规模。由于 Hive 建立在集群上并可以利用 MapReduce 进行并行计算,因此可以支持很大规模的数据;对应的,数据库可以支持的数据规模较小。

 

 

时间: 2024-10-24 17:35:32

Hive简介、什么是Hive、为什么使用Hive、Hive的特点、Hive架构图、Hive基本组成、Hive与Hadoop的关系、Hive与传统数据库对比、Hive数据存储(来自学习资料)的相关文章

NAMENODE工作机制,元数据管理(元数据存储机制、元数据手动查看)、元数据的checkpoint、元数据目录说明(来自学习资料)

NAMENODE工作机制 学习目标:理解namenode的工作机制尤其是元数据管理机制,以增强对HDFS工作原理的理解,及培养hadoop集群运营中"性能调优"."namenode"故障问题的分析解决能力   问题场景: 1.集群启动后,可以查看目录,但是上传文件时报错,打开web页面可看到namenode正处于safemode状态,怎么处理? 解释: safemode是namenode的一种状态(active/standby/safemode安全模式) namen

Mapreduce和Yarn概念,参数优化,作用,原理,MapReduce计数器 Counter,MapReduce 多job串联之ControlledJob(来自学习资料)

3.3. MapReduce与YARN 3.3.1 YARN概述 Yarn是一个资源调度平台,负责为运算程序提供服务器运算资源,相当于一个分布式的操作系统平台,而mapreduce等运算程序则相当于运行于操作系统之上的应用程序 3.3.2 YARN的重要概念 1.  yarn并不清楚用户提交的程序的运行机制 2.  yarn只提供运算资源的调度(用户程序向yarn申请资源,yarn就负责分配资源) 3.  yarn中的主管角色叫ResourceManager 4.  yarn中具体提供运算资源的

hdfs haadmin使用,DataNode动态上下线,NameNode状态切换管理,数据块的balance,HA下hdfs-api变化(来自学习资料)

1.2.4集群运维测试 HA集群中两个namenode状态的管理命令 [root@mini2 hadoop-2.6.4]# bin/hdfs haadmin Usage: DFSHAAdmin [-ns <nameserviceId>]     [-transitionToActive <serviceId> [--forceactive]]     [-transitionToStandby <serviceId>]     [-failover [--forcefe

分布式系统概述(来自学习资料)

2 分布式系统概述 注:由于大数据技术领域的各类技术框架基本上都是分布式系统,因此,理解hadoop.storm.spark等技术框架,都需要具备基本的分布式系统概念   2.1 分布式软件系统(Distributed Software Systems) ² 该软件系统会划分成多个子系统或模块,各自运行在不同的机器上,子系统或模块之间通过网络通信进行协作,实现最终的整体功能 ² 比如分布式操作系统.分布式程序设计语言及其编译(解释)系统.分布式文件系统和分布式数据库系统等.   2.2 分布式软

HDFS的工作机制,HDFS写数据流程,HDFS读数据流程(来自学习资料)

4.hdfs的工作机制 (工作机制的学习主要是为加深对分布式系统的理解,以及增强遇到各种问题时的分析解决能力,形成一定的集群运维能力)   注:很多不是真正理解hadoop技术体系的人会常常觉得HDFS可用于网盘类应用,但实际并非如此.要想将技术准确用在恰当的地方,必须对技术有深刻的理解 4.1概述 1.        HDFS集群分为两大角色:NameNode.DataNode  (Secondary Namenode) 2.        NameNode负责管理整个文件系统的元数据 3. 

Hadoop/Hive简介

hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供完整的sql查询功能,可以将 sql语句转换为MapReduce任务进行运行. 其优点是学习成本低,可以通过类SQL语句快速实现简单的MapReduce统计,不必开发专门的MapReduce应用,十分适合数据仓库的统计分析. Hadoop是一个存储计算框架,主要由两部分组成: 1,存储(Hadoop分布式文件系统-HDFS) 2,计算(MapReduce计算框架) 1,Hadoop分布式文件系统 这是一

Hadoop学习笔记(三):Hive简介

定义       Hive是一个构建在Hadoop上的数据仓库框架.可以将结构化的数据文件映射为一张数据库表,并提供完整的sql查询功能,可以将sql语句转换为MapReduce任务进行运行. 其优点是学习成本低,可以通过类SQL语句快速实现简单的MapReduce统计,不必开发专门的MapReduce应用,十分适合数据仓库的统计分析.(来自百度百科~~) metastore       metastore是Hive元数据的集中存放地,metastore包括两部分:服务和后台数据的存储.默认情况

Hadoop白皮书(4):数据仓库Hive简介

Hive 是一种建立在 Hadoop 之上的数据仓库架构.它提供了: • 一套方便的实施数据抽取(ETL)的工具. • 一种让用户对数据描述其结构的机制. • 支持用户对存储在Hadoop中的海量数据进行查询和分析的能力. Hive 的基本特点是它采用 HDFS 进行数据存储并利用 Map/Reduce 框架进行数据操作.所以从本质上来说,Hive 就是个编译器,它把用户的操作(查询或者 ETL)变换成Map/Reduce 任务,利用 Map/Reduce 框架执行这些任务以对HDFS上的海量数

使用sqoop将oracle数据库导入hive、hbase或hdfs时,报Error,是什么原因?

问题描述 使用sqoop将oracle数据库导入hive.hbase或hdfs时,有时候会报Error:java.lang.RuntimeException:java.lang.RuntimeException:java.sql.SQLException:Ioexception:TheNetworkAdaptercouldnotestablishtheconnection.这是什么原因?(oracle->hive时:同样的语句有时候会报错,有时候不会:oracle->hbase时每次都报错,数