《大数据技术原理与应用课件.ppt》由会员分享,可在线阅读,更多相关《大数据技术原理与应用课件.ppt(46页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、基于Hadoop的数据仓库Hive提纲概述概述Hive系统架构系统架构Hive工作原理工作原理Hive HA基本原理基本原理ImpalaHive编程实践编程实践概述数据仓库概念传统数据仓库面临的挑战Hive简介Hive与Hadoop生态系统中其他组件的关系Hive与传统数据库的对比分析Hive在企业中的部署和应用数据仓库概念数据数据仓库仓库(Data Warehouse)是一个面向主)是一个面向主题题的(的(Subject Oriented)、集成的()、集成的(Integrated)、相)、相对稳对稳定的(定的(Non-Volatile)、)、反映反映历历史史变变化(化(Time Varia
2、nt)的数据集合,用于支持管理决策。)的数据集合,用于支持管理决策。数据仓库的体系结构数据仓库的体系结构(1)无法满足快速增长的海量数据存储需求(2)无法有效处理不同类型的数据(3)计算和处理能力不足传统数据仓库面临的挑战Hive简介Hive是一个构建于是一个构建于Hadoop顶层的数据仓库工具顶层的数据仓库工具支持大规模数据存储、分析,具有良好的可扩展性支持大规模数据存储、分析,具有良好的可扩展性某种程度上可以看作是用户编程接口,本身不存储和某种程度上可以看作是用户编程接口,本身不存储和处理数据处理数据依赖分布式文件系统依赖分布式文件系统HDFS存储数据存储数据依赖依赖分布式并行计算模型分布
3、式并行计算模型MapReduce处理数据处理数据定义了简单的类似定义了简单的类似SQL 的查询语言的查询语言HiveQL用户可以通过编写的用户可以通过编写的HiveQL语句运行语句运行MapReduce任务任务可以很容易把原来构建在关系数据库上的数据仓库应可以很容易把原来构建在关系数据库上的数据仓库应用程序移植到用程序移植到Hadoop平台上平台上是一个可以提供有效、合理、直观组织和使用数据的是一个可以提供有效、合理、直观组织和使用数据的分析工具分析工具Hive简介Hive具有的特点非常适用于数据仓库具有的特点非常适用于数据仓库采用批处理方式处理海量数据采用批处理方式处理海量数据Hive需要把
4、需要把HiveQL语句转换成语句转换成MapReduce任务进行运任务进行运行行数据仓库存储的是静态数据,对静态数据的分析适合采数据仓库存储的是静态数据,对静态数据的分析适合采用批处理方式,不需要快速响应给出结果,而且数据本身用批处理方式,不需要快速响应给出结果,而且数据本身也不会频繁变化也不会频繁变化提供适合数据仓库操作的工具提供适合数据仓库操作的工具Hive本身提供了一系列对数据进行提取、转换、加载本身提供了一系列对数据进行提取、转换、加载(ETL)的工具,可以存储、查询和分析存储在)的工具,可以存储、查询和分析存储在Hadoop中的大规模数据中的大规模数据这些工具能够很好地满足数据仓库各
5、种应用场景这些工具能够很好地满足数据仓库各种应用场景Hive与Hadoop生态系统中其他组件的关系Hive依赖于依赖于HDFS 存储数据存储数据Hive依赖于依赖于MapReduce 处理数据处理数据在某些场景下在某些场景下Pig可以作为可以作为Hive的替代工具的替代工具HBase 提供数据的实时访问提供数据的实时访问Hive与Hadoop生态系统中其他组件的关系Hive与传统数据库的对比分析Hive在很多方面和传统的关系数据库类似,但是它的底层依赖的是HDFS和MapReduce,所以在很多方面又有别于传统数据库对对比比项项目目HiveHive传统传统数据数据库库数据插入支持批量导入支持单
6、条和批量导入数据更新不支持支持索引支持支持分区支持支持执行延迟高低扩展性好有限Hive在企业中的部署和应用企业中一种常见的企业中一种常见的大数据分析平台大数据分析平台部署框架部署框架1.Hive在企业大数据分析平台中的应用在企业大数据分析平台中的应用Hive在企业中的部署和应用图图 Facebook的数据仓库架构的数据仓库架构基于基于Oracle的数据仓库系统已经无法满足激增的业务需求的数据仓库系统已经无法满足激增的业务需求Facebook公司开发了数据仓库工具公司开发了数据仓库工具Hive,并在企业内部进行了大量部署,并在企业内部进行了大量部署2.Hive在在Facebook公司中的公司中的
7、应应用用Hive系统架构图图 Hive系系统统架构架构用户接口模块包括用户接口模块包括CLI、HWI、JDBC、ODBC、Thrift Server驱动模块(驱动模块(Driver)包括)包括编译器、优化器、执行器编译器、优化器、执行器等,负责把等,负责把HiveSQL语句语句转换成一系列转换成一系列MapReduce作业作业元数据存储模块元数据存储模块(Metastore)是一个独)是一个独立的关系型数据库立的关系型数据库(自带(自带derby数据库,或数据库,或MySQL数据库)数据库)Hive工作原理 SQL语句转换成语句转换成MapReduce作业的基本原理作业的基本原理 Hive中中
8、SQL查询转换成查询转换成MapReduce作业的过程作业的过程SQL语句转换成MapReduce的基本原理1.join的实现原理的实现原理1是表是表User的标记位的标记位2是表是表Order的标记位的标记位1和和2是是uid的值的值SQL语句转换成MapReduce的基本原理2.group by的实现原理的实现原理存在一个分组(存在一个分组(Group By)操作,其功能是把表)操作,其功能是把表Score的不同片段按照的不同片段按照rank和和level的组合值进行合并,计算不同的组合值进行合并,计算不同rank和和level的组合值分别有几的组合值分别有几条记录条记录:select r
9、ank,level,count(*)as value from score group by rank,levelHive中SQL查询转换成MapReduce作业的过程当当用用户户向向Hive输输入入一一段段命命令令或或查查询询时时,Hive需需要要与与Hadoop交互工作来完成交互工作来完成该该操作操作:驱动驱动模模块块接收接收该该命令或命令或查询编译查询编译器器对该对该命令或命令或查询进查询进行解析行解析编译编译由由优优化器化器对对该该命令或命令或查询进查询进行行优优化化计计算算该该命令或命令或查询查询通通过执过执行器行器进进行行执执行行Hive中SQL查询转换成MapReduce作业的过
10、程第第1步:由步:由Hive驱动模块中的编译器对用驱动模块中的编译器对用户输入的户输入的SQL语言进行词法和语法解析,语言进行词法和语法解析,将将SQL语句转化为抽象语法树的形式语句转化为抽象语法树的形式第第2步:步:抽象语法树的结构仍很复杂,不抽象语法树的结构仍很复杂,不方便直接翻译为方便直接翻译为MapReduce算法程序算法程序,因此,把抽象语法书转化为查询块因此,把抽象语法书转化为查询块第第3步:把查询块转换成逻辑查询计划,步:把查询块转换成逻辑查询计划,里面包含了许多逻辑操作符里面包含了许多逻辑操作符第第4步:重写逻辑查询计划,进行优化,步:重写逻辑查询计划,进行优化,合并多余操作,
11、减少合并多余操作,减少MapReduce任务数任务数量量第第5步:将逻辑操作符转换成需要执行的步:将逻辑操作符转换成需要执行的具体具体MapReduce任务任务第第6步:对生成的步:对生成的MapReduce任务进行优任务进行优化,生成最终的化,生成最终的MapReduce任务执行计任务执行计划划第第7步:由步:由Hive驱动模块中的执行器,对驱动模块中的执行器,对最终的最终的MapReduce任务进行执行输出任务进行执行输出Hive中SQL查询转换成MapReduce作业的过程当启当启动动MapReduce程序程序时时,Hive本身是不会生成本身是不会生成MapReduce算法程序的算法程序
12、的需要通需要通过过一个表示一个表示“Job执执行行计计划划”的的XML文件文件驱动执驱动执行内置行内置的、原生的的、原生的Mapper和和Reducer模模块块Hive通通过过和和JobTracker通信来初始化通信来初始化MapReduce任任务务,不必,不必直接部署在直接部署在JobTracker所在的管理所在的管理节节点上点上执执行行通常在大型集群上,会有通常在大型集群上,会有专门专门的网关机来部署的网关机来部署Hive工具。工具。网关机的作用主要是网关机的作用主要是远远程操作和管理程操作和管理节节点上的点上的JobTracker通通信来信来执执行任行任务务数据文件通常存数据文件通常存储
13、储在在HDFS上,上,HDFS由由名称名称节节点管理点管理几点说明:几点说明:Hive HA基本原理图图 Hive HA基本原理基本原理问题:问题:在实际应用中,在实际应用中,Hive也暴露出不稳定的问题也暴露出不稳定的问题解决方案:解决方案:Hive HA(High Availability)由多个由多个Hive实例进行管理的,这些实例进行管理的,这些Hive实例被纳入到一个资源池中,实例被纳入到一个资源池中,并由并由HA Proxy提供一个统一的对外接口提供一个统一的对外接口对于程序开发人员来说,可以把它认为是一台超强对于程序开发人员来说,可以把它认为是一台超强“HiveImpalaImp
14、ala简介Impala系统架构Impala查询执行过程Impala与Hive的比较Impala简介Impala是由Cloudera公司开发的新型查询系统,它提供SQL语义,能查询存储在Hadoop的HDFS和HBase上的PB级大数据,在性能上比Hive高出330倍Impala的运行需要依赖于Hive的元数据Impala是参照 Dremel系统进行设计的Impala采用了与商用并行关系数据库类似的分布式查询引擎,可以直接与HDFS和HBase进行交互查询Impala和Hive采用相同的SQL语法、ODBC驱动程序和用户接口14.5.1 Impala简介图图 Impala与其他与其他组组件关系件
15、关系Impala系统架构图图 Impala系系统统架构架构Impala和和Hive、HDFS、HBase等工具是统一部署在一个等工具是统一部署在一个Hadoop平台上的平台上的Impala主要由主要由Impalad,State Store和和CLI三部分组成三部分组成Impala系统架构Impala主要由主要由Impalad,State Store和和CLI三部分三部分组组成成1.Impalad负责协调负责协调客客户户端提交的端提交的查询查询的的执执行行包含包含Query Planner、Query Coordinator和和Query Exec Engine三个模三个模块块与与HDFS的数据
16、的数据节节点(点(HDFS DN)运行在同一)运行在同一节节点上点上给给其他其他Impalad分配任分配任务务以及收集其他以及收集其他Impalad的的执执行行结结果果进进行行汇总汇总Impalad也会也会执执行其他行其他Impalad给给其分配的任其分配的任务务,主要就,主要就是是对对本地本地HDFS和和HBase里的部分数据里的部分数据进进行操作行操作Impala系统架构2.State Store会会创创建一个建一个state stored进进程程负责负责收集分布在集群中各个收集分布在集群中各个Impalad进进程的程的资资源信息源信息,用,用于于查询调查询调度度3.CLI给给用用户户提供
17、提供查询查询使用的命令行工具使用的命令行工具还还提供了提供了Hue、JDBC及及ODBC的的使用接口使用接口说明说明:Impala中的元数据直接存储在中的元数据直接存储在Hive中。中。Impala采采用与用与Hive相同的元数据、相同的元数据、SQL语法、语法、ODBC驱动程序和用户驱动程序和用户接口,从而使得在一个接口,从而使得在一个Hadoop平台上,可以统一部署平台上,可以统一部署Hive和和Impala等分析工具,同时支持批处理和实时查询等分析工具,同时支持批处理和实时查询Impala查询执行过程图图 Impala查询过程图查询过程图Impala查询执行过程Impala执执行行查询查
18、询的具体的具体过过程:程:第第0步步,当当用用户户提提交交查查询询前前,Impala先先创创建建一一个个负负责责协协调调客客户户端端提提交交的的查查询询的的Impalad进进程程,该该进进程程会会向向Impala State Store提提交交注注册册订订阅阅信信息息,State Store会会创创建建一一个个statestored进进程程,statestored进进程程通通过过创创建多个建多个线线程来程来处处理理Impalad的注册的注册订阅订阅信息。信息。第第1步步,用用户户通通过过CLI客客户户端端提提交交一一个个查查询询到到impalad进进程程,Impalad的的Query Plan
19、ner对对SQL语语句句进进行行解解析析,生生成成解解析析树树;然然后后,Planner把把这这个个查查询询的的解解析析树树变变成成若若干干PlanFragment,发发送到送到Query CoordinatorImpala查询执行过程Impala执行查询的具体过程:执行查询的具体过程:第第2 2步步,CoordinatorCoordinator通通过过从从MySQLMySQL元元数数据据库库中中获获取取元元数数据据,从从HDFSHDFS的的名名称称节节点点中中获获取取数数据据地地址址,以以得得到到存存储储这这个个查查询询相相关关数数据据的的所所有有数数据据节节点。点。第第3 3步步,Coor
20、dinatorCoordinator初初始始化化相相应应impaladimpalad上上的的任任务务执执行行,即即把把查查询询任任务务分配分配给给所有存所有存储这储这个个查询查询相关数据的数据相关数据的数据节节点。点。第第4 4步步,Query Query ExecutorExecutor通通过过流流式式交交换换中中间间输输出出,并并由由Query Query CoordinatorCoordinator汇汇聚来自各个聚来自各个impaladimpalad的的结结果。果。第第5 5步,步,CoordinatorCoordinator把把汇总汇总后的后的结结果返回果返回给给CLICLI客客户户端
21、。端。Impala与Hive的比较图图 Impala与与Hive的对比的对比Hive与与Impala的的不同点不同点总结总结如下:如下:1.Hive适适合合于于长长时时间间的的批批处处理理查查询询分分析析,而而Impala适适合合于于实实时时交交互互式式SQL查询查询2.Hive依依赖赖于于MapReduce计计算算框框架架,Impala把把执执行行计计划划表表现现为为一一棵棵完完整整的的执执行行计计划划树树,直直接接分分发发执执行行计计划划到各个到各个Impalad执执行行查询查询3.Hive在在执执行行过过程程中中,如如果果内内存存放放不不下下所所有有数数据据,则则会会使使用用外外存存,以
22、以保保证证查查询询能能顺顺序序执执行行完完成成,而而Impala在在遇遇到到内内存存放放不不下下数数据据时时,不不会会利利用用外外存存,所所以以Impala目目前前处处理理查查询询时时会受到一定的限制会受到一定的限制Impala与Hive的比较Hive与与Impala的的相相同同点点总总结结如下:如下:1.Hive与与Impala使使用用相相同同的的存存储储数数据据池池,都都支支持持把把数数据据存存储储于于HDFS和和HBase中中2.Hive与与Impala使使用用相相同同的的元元数据数据3.Hive与与Impala中中对对SQL的的解解释释处处理理比比较较相相似似,都都是是通通过过词词法分
23、析生成法分析生成执执行行计计划划图图 Impala与与Hive的对比的对比Impala与Hive的比较总结总结:Impala的目的不在于替换现有的的目的不在于替换现有的MapReduce工具工具把把Hive与与Impala配合使用效果最佳配合使用效果最佳可以先使用可以先使用Hive进行数据转换处理,之后再使用进行数据转换处理,之后再使用Impala在在Hive处理后的结果数据集上进行快速的处理后的结果数据集上进行快速的数据分析数据分析Hive编程实践Hive的安装与配置的安装与配置Hive的数据类型的数据类型Hive基本操作基本操作Hive应用实例:应用实例:WordCountHive编程的优
24、势编程的优势Hive的安装与配置1.Hive安装安装下载安装包下载安装包apache-hive-1.2.1-bin.tar.gz 下载地址:下载地址:http:/www.apache.org/dyn/closer.cgi/hive/解压安装包解压安装包apache-hive-1.2.1-bin.tar.gz至路径至路径/usr/local配置系统环境配置系统环境,将将hive下的下的bin目录添加到系统的目录添加到系统的path中中2.Hive配置配置Hive有三种运行模式,单机模式、伪分布式模式、分布式模式。有三种运行模式,单机模式、伪分布式模式、分布式模式。均是通过修改均是通过修改hive
25、-site.xml文件实现,如果文件实现,如果 hive-site.xml文件不文件不存在,我们可以参考存在,我们可以参考$HIVE_HOME/conf目录下的目录下的hive-default.xml.template文件新建。文件新建。安装安装Hive之前需要安装之前需要安装jdk1.6以上版本以及启动以上版本以及启动HadoopHive的数据类型表表 Hive的基本数据的基本数据类类型型类型描述示例TINYINT1个字节(8位)有符号整数1SMALLINT2个字节(16位)有符号整数1INT4个字节(32位)有符号整数1BIGINT8个字节(64位)有符号整数1FLOAT4个字节(32位)
26、单精度浮点数1.0DOUBLE8个字节(64位)双精度浮点数1.0BOOLEAN布尔类型,true/falsetrueSTRING字符串,可以指定字符集“xmu”TIMESTAMP整数、浮点数或者字符串1327882394(Unix新纪元秒)BINARY字节数组0,1,0,1,0,1,0,1Hive的数据类型表表 Hive的集合数据的集合数据类类型型类型描述示例ARRAY一组有序字段,字段的类型必须相同Array(1,2)MAP一组无序的键/值对,键的类型必须是原子的,值可以是任何数据类型,同一个映射的键和值的类型必须相同Map(a,1,b,2)STRUCT一组命名的字段,字段类型可以不同St
27、ruct(a,1,1,0)Hive基本操作 1.create:创创建数据建数据库库、表、表、视图视图创创建数据建数据库库创创建数据建数据库库hivehive create database hive;创创建建数数据据库库hive。因因为为hive已已经经存存在在,所所以以会会抛抛出出异异常,加上常,加上if not exists关关键键字,字,则则不会抛出异常不会抛出异常hive create database if not exists hive;14.6.3 Hive基本操作创创建表建表在在hive数据数据库库中,中,创创建表建表usr,含三个属性,含三个属性id,name,age hiv
28、e use hive;hivecreate table if not exists usr(id bigint,name string,age int);在在hive数据数据库库中,中,创创建表建表usr,含三个属性,含三个属性id,name,age,存,存储储路径路径为为“/usr/local/hive/warehouse/hive/usr”hivecreate table if not exists hive.usr(id bigint,name string,age int)location/usr/local/hive/warehouse/hive/usr;Hive基本操作创创建建视图
29、视图创创建建视图视图little_usr,只包含,只包含usr表中表中id,age属性属性hivecreate view little_usr as select id,age from usr;Hive基本操作 2.show:查查看数据看数据库库、表、表、视图视图查查看数据看数据库库查查看看Hive中包含的所有数据中包含的所有数据库库 hive show databases;查查看看Hive中以中以h开开头头的所有数据的所有数据库库 hiveshow databases like h.*;查查看表和看表和视图视图查查看数据看数据库库hive中所有表和中所有表和视图视图 hive use hi
30、ve;hive show tables;查查看数据看数据库库hive中以中以u开开头头的所有表和的所有表和视图视图 hive show tables in hive like u.*;Hive基本操作3.load:向表中装:向表中装载载数据数据把目把目录录/usr/local/data下的数据文件中的数据装下的数据文件中的数据装载进载进usr表并覆盖原表并覆盖原有数据有数据hive load data local inpath/usr/local/data overwrite into table usr;把目把目录录/usr/local/data下的数据文件中的数据装下的数据文件中的数据装载
31、进载进usr表不覆盖原表不覆盖原有数据有数据hive load data local inpath/usr/local/data into table usr;把分布式文件系把分布式文件系统统目目录录hdfs:/master_server/usr/local/data下的下的数据文件数据装数据文件数据装载进载进usr表并覆盖原有数据表并覆盖原有数据hive load data inpath hdfs:/master_server/usr/local/data overwrite into table usr;Hive基本操作4.insert:向表中插入数据或从表中:向表中插入数据或从表中导导出
32、数据出数据向表向表usr1中插入来自中插入来自usr表的数据并覆盖原有数据表的数据并覆盖原有数据hive insert overwrite table usr1 select*from usr where age=10;向表向表usr1中插入来自中插入来自usr表的数据并追加在原有数据后表的数据并追加在原有数据后hive insert into table usr1 select*from usr where age=10;Hive应用实例:WordCount词频统计任务要求:词频统计任务要求:首先,需要创建一个需要分析的输入数据文件首先,需要创建一个需要分析的输入数据文件然后,编写然后,编写
33、HiveQL语句实现语句实现WordCount算法算法具体步骤如下:具体步骤如下:(1)创建)创建input目录,其中目录,其中input为输入目录。命令如下:为输入目录。命令如下:$cd/usr/local/hadoop$mkdir input(2)在)在input文件夹中创建两个测试文件文件夹中创建两个测试文件file1.txt和和file2.txt,命令如下:,命令如下:$cd /usr/local/hadoop/input$echo hello world file1.txt$echo hello hadoop file2.txtHive应用实例:WordCount(3)进入)进入hi
34、ve命令行界面,编写命令行界面,编写HiveQL语句实现语句实现WordCount算法,命令如下:算法,命令如下:$hive hive create table docs(line string);hive load data inpath input overwrite into table docs;hivecreate table word_count as select word,count(1)as count from (select explode(split(line,)as word from docs)w group by word order by word;执行完成后,
35、用执行完成后,用select语句查看运行结果语句查看运行结果如下如下:wordhelloworldhellohadoopWhello worldhello hadoopdocsHive的编程优势WordCount算法在算法在MapReduce中的编程实现和中的编程实现和Hive中编程实现的中编程实现的主主要要不同点不同点:1.采用采用Hive实现实现WordCount算法需要编写较少的代码量算法需要编写较少的代码量在在MapReduce中,中,WordCount类由类由63行行Java代码编写而成代码编写而成在在Hive中只需要编写中只需要编写7行代码行代码2.在在MapReduce的实现中,
36、需要进行编译生成的实现中,需要进行编译生成jar文件来执行算文件来执行算法,而在法,而在Hive中不需要中不需要HiveQL语句的最终实现需要转换为语句的最终实现需要转换为MapReduce任务来执行,这都是任务来执行,这都是由由Hive框架自动完成的,用户不需要了解具体实现细节框架自动完成的,用户不需要了解具体实现细节本章小结本章详细介绍了Hive的基本知识。Hive是一个构建于Hadoop顶层的数据仓库工具,主要用于对存储在 Hadoop 文件中的数据集进行数据整理、特殊查询和分析处理。Hive在某种程度上可以看作是用户编程接口,本身不存储和处理数据,依赖HDFS存储数据,依赖MapReduce处理数据。Hive支持使用自身提供的命令行CLI、简单网页HWI访问方式,及通过Karmasphere、Hue、Qubole等工具的外部访问。Hive在数据仓库中的具体应用中,主要用于报表中心的报表分析统计上。在Hadoop集群上构建的数据仓库由多个Hive进行管理,具体实现采用Hive HA原理的方式,实现一台超强“hive。Impala作为新一代开源大数据分析引擎,支持实时计算,并在性能上比Hive高出330倍,甚至在将来的某一天可能会超过Hive的使用率而成为Hadoop上最流行的实时计算平台。本章最后以单词统计为例,详细介绍了如何使用Hive进行简单编程。