第7讲:Hive数据仓库ppt课件.ppt
《第7讲:Hive数据仓库ppt课件.ppt》由会员分享,可在线阅读,更多相关《第7讲:Hive数据仓库ppt课件.ppt(49页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第第7 7讲讲 HiveHive数据仓库数据仓库 数据分析者面临的问题数据分析者面临的问题 数据日趋庞大,无论是入库和查询,都出现性能瓶颈数据日趋庞大,无论是入库和查询,都出现性能瓶颈 用户的应用和分析结果呈整合趋势,对实时性和响应时间要用户的应用和分析结果呈整合趋势,对实时性和响应时间要求越来越高求越来越高 使用的模型越来越复杂,计算量指数级上升使用的模型越来越复杂,计算量指数级上升 数据分析者期待的解决方案数据分析者期待的解决方案 完美解决性能瓶颈,在可见未来不容易出现新瓶颈完美解决性能瓶颈,在可见未来不容易出现新瓶颈 过去所拥有的技能可以平稳过渡。比如过去所拥有的技能可以平稳过渡。比如S
2、QLSQL、R R 转移平台的成本有多高?平台软硬件成本,再开发成本,技转移平台的成本有多高?平台软硬件成本,再开发成本,技能再培养成本,维护成本能再培养成本,维护成本 Hive简介简介 起源自起源自facebookfacebook由由Jeff Jeff HammerbacherHammerbacher领导的团队领导的团队 构建在构建在HadoopHadoop上的数据仓库框架上的数据仓库框架 设计目的是让设计目的是让SQLSQL技能良好,但技能良好,但JavaJava技能较弱的分析师可技能较弱的分析师可 以查询海量数据以查询海量数据 20082008年年facebookfacebook把把hi
3、vehive项目贡献给项目贡献给ApacheApache Hive 数据仓库工具。可以把数据仓库工具。可以把HadoopHadoop下的原始结构化数据变成下的原始结构化数据变成HiveHive中的表中的表 支持一种与支持一种与SQLSQL几乎完全相同的语言几乎完全相同的语言HiveQLHiveQL。除了不支持更。除了不支持更新、索引和事务,几乎新、索引和事务,几乎SQLSQL的其它特征都能支持的其它特征都能支持 可以看成是从可以看成是从SQLSQL到到Map-ReduceMap-Reduce的映射器的映射器 提供提供shellshell、JDBC/ODBCJDBC/ODBC、ThriftThr
4、ift、WebWeb等接口等接口 HiveHive不适合用于联机事务处理,也不提供实时查询功能。不适合用于联机事务处理,也不提供实时查询功能。最适合应用在基于大量不可变数据的批处理作业。最适合应用在基于大量不可变数据的批处理作业。 Hive Hive 是建立在是建立在 HadoopHadoop 上的数据仓库基础构架。它提供了上的数据仓库基础构架。它提供了一系列的工具,可以用来进行数据提取转化加载(一系列的工具,可以用来进行数据提取转化加载(ETLETL),),这是一种可以存储、查询和分析存储在这是一种可以存储、查询和分析存储在 HadoopHadoop 中的大规模中的大规模数据的机制。数据的机
5、制。Hive Hive 定义了简单的类定义了简单的类 SQL SQL 查询语言,称为查询语言,称为 HQLHQL,它允许熟悉,它允许熟悉 SQL SQL 的用户查询数据。同时,这个语言也的用户查询数据。同时,这个语言也允许熟悉允许熟悉 MapReduceMapReduce 开发者的开发自定义的开发者的开发自定义的 mappermapper 和和 reducer reducer 来处理内建的来处理内建的mappermapper 和和 reducer reducer 无法完成的复杂无法完成的复杂的分析工作。的分析工作。Hive现状现状 HadoopHadoop生态圈中的重要项目生态圈中的重要项目
6、企业级数据仓库的主流架构之一企业级数据仓库的主流架构之一 解决解决“即席查询即席查询”的问题的问题 注意注意ClouderaCloudera的的ImpalaImpala项目,号称比项目,号称比HiveHive要快要快3-303-30倍倍 兼容兼容SQLSQL是目前大数据产品的风向标是目前大数据产品的风向标 体系结构图 1 1、用户接口主要有三个:命令行、用户接口主要有三个:命令行(CLI)(CLI),客户端,客户端(Client) (Client) 和和WEBWEB界面界面( WUI)( WUI)。其中最常用的是。其中最常用的是 CLICLI,CliCli 启动的时候,会同时启启动的时候,会同
7、时启动一个动一个 Hive Hive 服务。服务。Client Client 是是 Hive Hive 的客户端,用户连接至的客户端,用户连接至 Hive ServerHive Server。在启动。在启动 Client Client 模式的时候,需要指出模式的时候,需要指出 Hive Hive Server Server 所在节点,并且在该节点启动所在节点,并且在该节点启动 Hive ServerHive Server。 WUI WUI 是通是通过浏览器访问过浏览器访问 HiveHive。 2 2、元数据存储。、元数据存储。Hive Hive 将元数据存储在数据库中,如将元数据存储在数据库中
8、,如 mysqlmysql、derbyderby嵌入式数据库。嵌入式数据库。Hive Hive 中的元数据包括表的名字,表的列和中的元数据包括表的名字,表的列和分区及其属性,表的属性(是否为外部表等),表的数据所在目分区及其属性,表的属性(是否为外部表等),表的数据所在目录等。录等。 3 3、执行。解释器、编译器、优化器完成、执行。解释器、编译器、优化器完成 HiveQLHiveQL 查询语句从词法查询语句从词法分析、语法分析、编译、优化以及查询计划的生成。生成的查询分析、语法分析、编译、优化以及查询计划的生成。生成的查询计划存储在计划存储在 HDFS HDFS 中中, ,并在随后有并在随后有
9、 MapReduceMapReduce 调用执行。调用执行。 4 4、 HDFSHDFS 存储。存储。Hive Hive 的数据存储在的数据存储在 HDFS HDFS 中,大部分的查询由中,大部分的查询由 MapReduceMapReduce 完成(包含完成(包含 * * 的查询,比如的查询,比如 select select * * from from tbltbl 不不会生成会生成 MapRedcueMapRedcue 任务)。任务)。Hive Hive 元数据存储元数据存储Hive Hive 将元数据存储将元数据存储在在 RDBMS RDBMS 中,有三种模式可以连接到数据库:中,有三种模
10、式可以连接到数据库: Single User Single User ModeMode: 此模式连接到一个此模式连接到一个 In-memory In-memory 的数据库的数据库 DerbyDerby,一般用,一般用于于 Unit TestUnit Test。Hive安装安装 内嵌模式:元数据保持在内嵌的内嵌模式:元数据保持在内嵌的DerbyDerby模式,只允许一个会模式,只允许一个会话连接话连接 本地独立模式:在本地安装本地独立模式:在本地安装MysqlMysql,把元数据放到,把元数据放到MysqlMysql内内 远程模式:元数据放置在远程的远程模式:元数据放置在远程的MysqlMys
11、ql数据库数据库 内嵌模式安装内嵌模式安装 下载并解压Hive 设置环境变量设置环境变量 (修改profile文件)配置文件配置文件 hive-env.sh cp hive-env.sh.template hive-env.sh hive-site.xml cp hive-default.xml.template hive-site.xml 启动启动hive HiveHive命令行启动方式:直接输入命令行启动方式:直接输入/hive/bin/hive/hive/bin/hive命令,命令,或者输入或者输入hive-service hive-service clicli命令。命令。Hive we
12、bHive web界面启动方式:输入界面启动方式:输入hive-service hive-service hwihwi命令。命令。HiveHive采用远程服务启动方式:远程服务的端口号为采用远程服务启动方式:远程服务的端口号为1000010000,采用采用hive-service hive-service hiveserverhiveserver命令。命令。HiveHive采用远程后台启动方式:关闭采用远程后台启动方式:关闭HiveHive终端,但是终端,但是HiveHive服务服务不退出,采用不退出,采用nohupnohup hive-service hive-service hiveser
13、verhiveserver命令。命令。简单建删表测试简单建删表测试 一个常见错误一个常见错误 解决方法解决方法 修改hadoop-env.sh Hive安装:独立模式安装:独立模式 可参考网络资源:可参考网络资源: http:/ http:/ Hive的服务 HiveHive不仅仅是一个不仅仅是一个shellshell,通过配置,还可以提供,通过配置,还可以提供ThriftThrift服服务器、务器、WebWeb接口、元数据和接口、元数据和JDBC/ODBCJDBC/ODBC服务,具有强大的功能服务,具有强大的功能和良好的可扩展性。和良好的可扩展性。 1 1、Hive shellHive sh
14、ell 执行执行HiveQLHiveQL(大约相当于(大约相当于SQL 92SQL 92标准)标准) 查看或临时设置查看或临时设置HiveHive参数,只对当前会话有效参数,只对当前会话有效 创建函数创建函数 导入导入jarjar包包 HiveQL 查询语言 HiveQL是一种类似是一种类似SQL的语言的语言查询语言查询语言 HQL HQL SQL SQL 数据存储位置数据存储位置 HDFS HDFS Raw Device Raw Device 或者或者Local FS Local FS 数据格式数据格式 用户定义用户定义 系统决定系统决定 数据更新数据更新 不支持不支持 支持支持 索引索引
15、无无 有有 执行执行 MapRedcueMapRedcue Executor Executor 执行延迟执行延迟 高高 低低 可扩展性可扩展性 高高 低低 数据规模数据规模 大大 小小 HiveQL 查询语言 1.1.查询语言。由于查询语言。由于 SQL SQL 被广泛的应用在数据仓库中,因此,专门被广泛的应用在数据仓库中,因此,专门针对针对 Hive Hive 的特性设计了类的特性设计了类 SQL SQL 的查询语言的查询语言 HQLHQL。熟悉。熟悉 SQL SQL 开开发的开发者可以很方便的使用发的开发者可以很方便的使用 Hive Hive 进行开发。进行开发。 2.2.数据存储位置。数
16、据存储位置。Hive Hive 是建立在是建立在 HadoopHadoop 之上的,所有之上的,所有 Hive Hive 的数据都是存储在的数据都是存储在 HDFS HDFS 中的。而数据库则可以将数据保存在块中的。而数据库则可以将数据保存在块设备或者本地文件系统中。设备或者本地文件系统中。 3.3.数据格式。数据格式。Hive Hive 中没有定义专门的数据格式,数据格式可以由中没有定义专门的数据格式,数据格式可以由用户指定,用户定义数据格式需要指定三个属性:列分隔符(通用户指定,用户定义数据格式需要指定三个属性:列分隔符(通常为空格、常为空格、”t”t”、”x001x001)、行分隔符)、
17、行分隔符 (”n”n”)以及读)以及读取文件数据的方法(取文件数据的方法(Hive Hive 中默认有三个文件格式中默认有三个文件格式 TextFileTextFile,SequenceFileSequenceFile 以及以及 RCFileRCFile)。由于在加载数据的过程中,不需)。由于在加载数据的过程中,不需要从用户数据格式到要从用户数据格式到 Hive Hive 定义的数据格式的转换,因此,定义的数据格式的转换,因此,Hive Hive 在加载的过程中不会对数据本身进行任何修改,而只是将数据内在加载的过程中不会对数据本身进行任何修改,而只是将数据内容复制或者移动到相应的容复制或者移动
18、到相应的 HDFS HDFS 目录中。而在数据库中,不同的目录中。而在数据库中,不同的数据库有不同的存储引擎,定义了自己的数据格式。所有数据都数据库有不同的存储引擎,定义了自己的数据格式。所有数据都会按照会按照一定的组织存储,因此,数据库加载数据的过程会比较耗一定的组织存储,因此,数据库加载数据的过程会比较耗时。时。 HiveQL 查询语言 4.4.数据更新。由于数据更新。由于 Hive Hive 是针对数据仓库应用设计的,而数据仓是针对数据仓库应用设计的,而数据仓库的内容是读多写少的。因此,库的内容是读多写少的。因此,Hive Hive 中不支持对数据的改写和添中不支持对数据的改写和添加,所
19、有的数据都是在加载的时候中确定好的。而数据库中的数加,所有的数据都是在加载的时候中确定好的。而数据库中的数据通常是需要经常进行修改的,因此可以使用据通常是需要经常进行修改的,因此可以使用 INSERT INTO . INSERT INTO . VALUES VALUES 添加数据,使用添加数据,使用 UPDATE . SET UPDATE . SET 修改数据修改数据 5.5.索引。之前已经说过,索引。之前已经说过,Hive Hive 在加载数据的过程中不会对数据在加载数据的过程中不会对数据进行任何处理,甚至不会对数据进行扫描,因此也没有对数据中进行任何处理,甚至不会对数据进行扫描,因此也没有
20、对数据中的某些的某些 Key Key 建立索引。建立索引。Hive Hive 要访问数据中满足条件的特定值时要访问数据中满足条件的特定值时,需要暴力扫描整个数据,因此访问延迟较高。由于,需要暴力扫描整个数据,因此访问延迟较高。由于 MapReduceMapReduce 的引入,的引入, Hive Hive 可以并行访问数据,因此即使没有索引,对于大可以并行访问数据,因此即使没有索引,对于大数据量的访问,数据量的访问,Hive Hive 仍然可以体现出优势。数据库中,通常会针仍然可以体现出优势。数据库中,通常会针对一个或者几个列建立索引,因此对于少量的特定条件的数据的对一个或者几个列建立索引,因
21、此对于少量的特定条件的数据的访问,数据库可以有很高的效率,较低的延迟。由于数据访问,数据库可以有很高的效率,较低的延迟。由于数据 的访问的访问延迟较高,决定了延迟较高,决定了 Hive Hive 不适合在线数据查询。不适合在线数据查询。 6.6.执行。执行。Hive Hive 中大多数查询的执行是通过中大多数查询的执行是通过 HadoopHadoop 提供的提供的 MapReduceMapReduce 来实现的(类似来实现的(类似 select select * * from from tbltbl 的查询不需要的查询不需要 MapReduceMapReduce)。而数据库通常有自己的执行引擎
22、。)。而数据库通常有自己的执行引擎。 HiveQL 查询语言 7.7.执行延迟。之前提到,执行延迟。之前提到,Hive Hive 在查询数据的时候,由于没有索在查询数据的时候,由于没有索引,需要扫描整个表,因此延迟较高。另外一个导致引,需要扫描整个表,因此延迟较高。另外一个导致 Hive Hive 执执行延迟高的因素是行延迟高的因素是 MapReduceMapReduce 框架。由于框架。由于 MapReduceMapReduce 本身具本身具有较高的延迟,因此在利用有较高的延迟,因此在利用 MapReduceMapReduce 执行执行 Hive Hive 查询时,也查询时,也会有较高的延迟
23、。相对的,数据库的执行延迟较低。当然,这会有较高的延迟。相对的,数据库的执行延迟较低。当然,这个低是有条件的,即数据规模较小,当数据规模大到超过数据个低是有条件的,即数据规模较小,当数据规模大到超过数据库的处理能力的时候,库的处理能力的时候,Hive Hive 的并行计算显然能体现出优势。的并行计算显然能体现出优势。 8.8.可扩展性。由于可扩展性。由于 Hive Hive 是建立在是建立在 HadoopHadoop 之上的,因此之上的,因此 Hive Hive 的可扩展性是和的可扩展性是和 HadoopHadoop 的可扩展性是一致的。而数据库由于的可扩展性是一致的。而数据库由于 ACID
24、ACID 语义的严格限制,扩展行非常有限。语义的严格限制,扩展行非常有限。 9.9.数据规模。由于数据规模。由于 Hive Hive 建立在集群上并可以利用建立在集群上并可以利用 MapReduceMapReduce 进行并行计算,因此可以支持很大规模的数据;对应的,数据进行并行计算,因此可以支持很大规模的数据;对应的,数据库可以支持的数据规模较小。库可以支持的数据规模较小。 HiveQL 查询语言 HiveHive安装与部署成功之后,在命令行输入安装与部署成功之后,在命令行输入hivehive进入进入shellshell。 1 1、退出、退出shellshell: Hivequit;Hive
25、quit; 2 2、查看已有表、查看已有表 Hiveshow tables ;Hiveshow tables ; 3 3、查看表结构、查看表结构 Hivedescribe Hivedescribe tablenametablename ; ;建表 Create Table CREATE EXTERNAL TABLE IF NOT EXISTS table_name (col_name data_type COMMENT col_comment, .) COMMENT table_comment PARTITIONED BY (col_name data_type COMMENT col_com
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Hive 数据仓库 ppt 课件
限制150内