基于Hadoop的数据仓库Hive课件

上传人:风*** 文档编号:241884255 上传时间:2024-08-02 格式:PPT 页数:46 大小:2.72MB
返回 下载 相关 举报
基于Hadoop的数据仓库Hive课件_第1页
第1页 / 共46页
基于Hadoop的数据仓库Hive课件_第2页
第2页 / 共46页
基于Hadoop的数据仓库Hive课件_第3页
第3页 / 共46页
点击查看更多>>
资源描述
基于Hadoop的数据仓库Hive基于Hadoop的数据仓库Hive提纲概述Hive系统架构Hive工作原理HiveHA基本原理ImpalaHive编程实践提纲概述概述数据仓库概念传统数据仓库面临的挑战Hive简介Hive与Hadoop生态系统中其他组件的关系Hive与传统数据库的对比分析Hive在企业中的部署和应用概述数据仓库概念数据仓库概念数据仓库(DataWarehouse)是一个面向主题的(SubjectOriented)、集成的(Integrated)、相对稳定的(Non-Volatile)、反映历史变化(TimeVariant)的数据集合,用于支持管理决策。数据仓库的体系结构数据仓库概念数据仓库(Data Warehouse)是一个面(1)无法满足快速增长的海量数据存储需求(2)无法有效处理不同类型的数据(3)计算和处理能力不足传统数据仓库面临的挑战(1)无法满足快速增长的海量数据存储需求传统数据仓库面临的挑Hive简介Hive是一个构建于Hadoop顶层的数据仓库工具支持大规模数据存储、分析,具有良好的可扩展性某种程度上可以看作是用户编程接口,本身不存储和处理数据依赖分布式文件系统HDFS存储数据依赖分布式并行计算模型MapReduce处理数据定义了简单的类似SQL的查询语言HiveQL用户可以通过编写的HiveQL语句运行MapReduce任务可以很容易把原来构建在关系数据库上的数据仓库应用程序移植到Hadoop平台上是一个可以提供有效、合理、直观组织和使用数据的分析工具Hive简介Hive是一个构建于Hadoop顶层的数据仓库工Hive简介Hive具有的特点非常适用于数据仓库采用批处理方式处理海量数据Hive需要把HiveQL语句转换成MapReduce任务进行运行数据仓库存储的是静态数据,对静态数据的分析适合采用批处理方式,不需要快速响应给出结果,而且数据本身也不会频繁变化提供适合数据仓库操作的工具Hive本身提供了一系列对数据进行提取、转换、加载(ETL)的工具,可以存储、查询和分析存储在Hadoop中的大规模数据这些工具能够很好地满足数据仓库各种应用场景Hive简介Hive具有的特点非常适用于数据仓库采用批处理方Hive与Hadoop生态系统中其他组件的关系Hive依赖于HDFS存储数据Hive依赖于MapReduce处理数据在某些场景下Pig可以作为Hive的替代工具HBase提供数据的实时访问Hive与Hadoop生态系统中其他组件的关系Hive依赖于Hive与Hadoop生态系统中其他组件的关系Hive与Hadoop生态系统中其他组件的关系Hive与传统数据库的对比分析Hive在很多方面和传统的关系数据库类似,但是它的底层依赖的是HDFS和MapReduce,所以在很多方面又有别于传统数据库对比比项目目HiveHive传统数据数据库数据插入支持批量导入支持单条和批量导入数据更新不支持支持索引支持支持分区支持支持执行延迟高低扩展性好有限Hive与传统数据库的对比分析Hive在很多方面和传统的关系Hive在企业中的部署和应用企业中一种常见的大数据分析平台部署框架1.Hive在企业大数据分析平台中的应用Hive在企业中的部署和应用企业中一种常见的大数据分析平台部Hive在企业中的部署和应用图Facebook的数据仓库架构基于Oracle的数据仓库系统已经无法满足激增的业务需求Facebook公司开发了数据仓库工具Hive,并在企业内部进行了大量部署2.Hive在Facebook公司中的应用Hive在企业中的部署和应用图 Facebook的数据仓库架Hive系统架构图Hive系统架构用户接口模块包括CLI、HWI、JDBC、ODBC、ThriftServer驱动模块(Driver)包括编译器、优化器、执行器等,负责把HiveSQL语句转换成一系列MapReduce作业元数据存储模块(Metastore)是一个独立的关系型数据库(自带derby数据库,或MySQL数据库)Hive系统架构图 Hive系统架构用户接口模块包括CLHive工作原理SQL语句转换成MapReduce作业的基本原理Hive中SQL查询转换成MapReduce作业的过程Hive工作原理 SQL语句转换成MapReduce作业的基SQL语句转换成MapReduce的基本原理1.join的实现原理1是表User的标记位2是表Order的标记位1和2是uid的值SQL语句转换成MapReduce的基本原理1.join的实SQL语句转换成MapReduce的基本原理2.groupby的实现原理存在一个分组(GroupBy)操作,其功能是把表Score的不同片段按照rank和level的组合值进行合并,计算不同rank和level的组合值分别有几条记录:selectrank,level,count(*)asvaluefromscoregroupbyrank,levelSQL语句转换成MapReduce的基本原理2.groupHive中SQL查询转换成MapReduce作业的过程当用户向Hive输入一段命令或查询时,Hive需要与Hadoop交互工作来完成该操作:驱动模块接收该命令或查询编译器对该命令或查询进行解析编译由优化器对该命令或查询进行优化计算该命令或查询通过执行器进行执行Hive中SQL查询转换成MapReduce作业的过程当用户Hive中SQL查询转换成MapReduce作业的过程第1步:由Hive驱动模块中的编译器对用户输入的SQL语言进行词法和语法解析,将SQL语句转化为抽象语法树的形式第2步:抽象语法树的结构仍很复杂,不方便直接翻译为MapReduce算法程序,因此,把抽象语法书转化为查询块第3步:把查询块转换成逻辑查询计划,里面包含了许多逻辑操作符第4步:重写逻辑查询计划,进行优化,合并多余操作,减少MapReduce任务数量第5步:将逻辑操作符转换成需要执行的具体MapReduce任务第6步:对生成的MapReduce任务进行优化,生成最终的MapReduce任务执行计划第7步:由Hive驱动模块中的执行器,对最终的MapReduce任务进行执行输出Hive中SQL查询转换成MapReduce作业的过程第1步Hive中SQL查询转换成MapReduce作业的过程当启动MapReduce程序时,Hive本身是不会生成MapReduce算法程序的需要通过一个表示“Job执行计划”的XML文件驱动执行内置的、原生的Mapper和Reducer模块Hive通过和JobTracker通信来初始化MapReduce任务,不必直接部署在JobTracker所在的管理节点上执行通常在大型集群上,会有专门的网关机来部署Hive工具。网关机的作用主要是远程操作和管理节点上的JobTracker通信来执行任务数据文件通常存储在HDFS上,HDFS由名称节点管理几点说明:Hive中SQL查询转换成MapReduce作业的过程当启动HiveHA基本原理图图 Hive HA Hive HA基本原理基本原理问题:在实际应用中,Hive也暴露出不稳定的问题解决方案:HiveHA(HighAvailability)由多个Hive实例进行管理的,这些Hive实例被纳入到一个资源池中,并由HAProxy提供一个统一的对外接口对于程序开发人员来说,可以把它认为是一台超强“Hive Hive HA基本原理图 Hive HA基本原理问题:在实ImpalaImpala简介Impala系统架构Impala查询执行过程Impala与Hive的比较ImpalaImpala简介Impala简介Impala是由Cloudera公司开发的新型查询系统,它提供SQL语义,能查询存储在Hadoop的HDFS和HBase上的PB级大数据,在性能上比Hive高出330倍Impala的运行需要依赖于Hive的元数据Impala是参照Dremel系统进行设计的Impala采用了与商用并行关系数据库类似的分布式查询引擎,可以直接与HDFS和HBase进行交互查询Impala和Hive采用相同的SQL语法、ODBC驱动程序和用户接口Impala简介Impala是由Cloudera公司开发的新14.5.1Impala简介图Impala与其他组件关系14.5.1 Impala简介图 Impala与其他组件关系Impala系统架构图Impala系统架构Impala和Hive、HDFS、HBase等工具是统一部署在一个Hadoop平台上的Impala主要由Impalad,StateStore和CLI三部分组成Impala系统架构图 Impala系统架构ImpalaImpala系统架构Impala主要由Impalad,StateStore和CLI三部分组成1.Impalad负责协调客户端提交的查询的执行包含QueryPlanner、QueryCoordinator和QueryExecEngine三个模块与HDFS的数据节点(HDFSDN)运行在同一节点上给其他Impalad分配任务以及收集其他Impalad的执行结果进行汇总Impalad也会执行其他Impalad给其分配的任务,主要就是对本地HDFS和HBase里的部分数据进行操作Impala系统架构Impala主要由Impalad,StaImpala系统架构2.StateStore会创建一个statestored进程负责收集分布在集群中各个Impalad进程的资源信息,用于查询调度3.CLI给用户提供查询使用的命令行工具还提供了Hue、JDBC及ODBC的使用接口说明:Impala中的元数据直接存储在Hive中。Impala采用与Hive相同的元数据、SQL语法、ODBC驱动程序和用户接口,从而使得在一个Hadoop平台上,可以统一部署Hive和Impala等分析工具,同时支持批处理和实时查询Impala系统架构2.State Store说明:ImImpala查询执行过程图图 Impala Impala查询过程查询过程图图Impala查询执行过程图 Impala查询过程图Impala查询执行过程Impala执行查询的具体过程:第0步,当用户提交查询前,Impala先创建一个负责协调客户端提交的查询的Impalad进程,该进程会向ImpalaStateStore提交注册订阅信息,StateStore会创建一个statestored进程,statestored进程通过创建多个线程来处理Impalad的注册订阅信息。第1步,用户通过CLI客户端提交一个查询到impalad进程,Impalad的QueryPlanner对SQL语句进行解析,生成解析树;然后,Planner把这个查询的解析树变成若干PlanFragment,发送到QueryCoordinatorImpala查询执行过程Impala执行查询的具体过程:Impala查询执行过程Impala执行查询的具体过程:第2步,Coordinator通过从MySQL元数据库中获取元数据,从HDFS的名称节点中获取数据地址,以得到存储这个查询相关数据的所有数据节点。第3步,Coordinator初始化相应impalad上的任务执行,即把查询任务分配给所有存储这个查询相关数据的数据节点。第4步,QueryExecutor通过流式交换中间输出,并由QueryCoordinator汇聚来自各个impalad的结果。第5步,Coordinator把汇总后的结果返回给CLI客户端。Impala查询执行过程Impala执行查询的具体过程:Impala与Hive的比较图Impala与Hive的对比Hive与Impala的不同点总结如下:1.Hive适合于长时间的批处理查询分析,而Impala适合于实时交互式SQL查询2.Hive依赖于MapReduce计算框架,Impala把执行计划表现为一棵完整的执行计划树,直接分发执行计划到各个Impalad执行查询3.Hive在执行过程中,如果内存放不下所有数据,则会使用外存,以保证查询能顺序执行完成,而Impala在遇到内存放不下数据时,不会利用外存,所以Impala目前处理查询时会受到一定的限制Impala与Hive的比较图 Impala与Hive的Impala与Hive的比较Hive与Impala的相同点总结如下:1.Hive与Impala使用相同的存储数据池,都支持把数据存储于HDFS和HBase中2.Hive与Impala使用相同的元数据3.Hive与 Impala中 对 SQL的解释处理比较相似,都是通过词法分析生成执行计划图Impala与Hive的对比Impala与Hive的比较Hive与Impala的相同点总Impala与Hive的比较总结:Impala的目的不在于替换现有的MapReduce工具把Hive与Impala配合使用效果最佳可以先使用Hive进行数据转换处理,之后再使用Impala在Hive处理后的结果数据集上进行快速的数据分析Impala与Hive的比较总结:Hive编程实践Hive的安装与配置Hive的数据类型Hive基本操作Hive应用实例:WordCountHive编程的优势Hive编程实践Hive的安装与配置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-site.xml文件实现,如果hive-site.xml文件不存在,我们可以参考$HIVE_HOME/conf目录下的hive-default.xml.template文件新建。安装Hive之前需要安装jdk1.6以上版本以及启动HadoopHive的安装与配置1.Hive安装下载安装包apacheHive的数据类型表Hive的基本数据类型类型描述示例TINYINT1个字节(8位)有符号整数1SMALLINT2个字节(16位)有符号整数1INT4个字节(32位)有符号整数1BIGINT8个字节(64位)有符号整数1FLOAT4个字节(32位)单精度浮点数1.0DOUBLE8个字节(64位)双精度浮点数1.0BOOLEAN布尔类型,true/falsetrueSTRING字符串,可以指定字符集“xmu”TIMESTAMP整数、浮点数或者字符串1327882394(Unix新纪元秒)BINARY字节数组0,1,0,1,0,1,0,1Hive的数据类型表 Hive的基本数据类型类型描述示例TIHive的数据类型表Hive的集合数据类型类型描述示例ARRAY一组有序字段,字段的类型必须相同Array(1,2)MAP一组无序的键/值对,键的类型必须是原子的,值可以是任何数据类型,同一个映射的键和值的类型必须相同Map(a,1,b,2)STRUCT一组命名的字段,字段类型可以不同Struct(a,1,1,0)Hive的数据类型表 Hive的集合数据类型类型描述示例AHive基本操作1.create:创建数据库、表、视图创建数据库创建数据库hivehivecreatedatabasehive;创建数据库hive。因为hive已经存在,所以会抛出异常,加上ifnotexists关键字,则不会抛出异常hivecreatedatabaseifnotexistshive;Hive基本操作 1.create:创建数据库、表、视图14.6.3Hive基本操作创建表在hive数据库中,创建表usr,含三个属性id,name,agehiveusehive;hivecreatetableifnotexistsusr(idbigint,namestring,ageint);在hive数据库中,创建表usr,含三个属性id,name,age,存储路径为“/usr/local/hive/warehouse/hive/usr”hivecreatetableifnotexistshive.usr(idbigint,namestring,ageint)location/usr/local/hive/warehouse/hive/usr;14.6.3 Hive基本操作创建表Hive基本操作创建视图创建视图little_usr,只包含usr表中id,age属性hivecreate view little_usr as select id,agefromusr;Hive基本操作创建视图Hive基本操作2.show:查看数据库、表、视图查看数据库查看Hive中包含的所有数据库hiveshowdatabases;查看Hive中以h开头的所有数据库hiveshowdatabaseslikeh.*;查看表和视图查看数据库hive中所有表和视图hiveusehive;hiveshowtables;查看数据库hive中以u开头的所有表和视图hiveshowtablesinhivelikeu.*;Hive基本操作 2.show:查看数据库、表、视图查看数Hive基本操作3.load:向表中装载数据把目录/usr/local/data下的数据文件中的数据装载进usr表并覆盖原有数据hiveloaddatalocalinpath/usr/local/dataoverwriteintotableusr;把目录/usr/local/data下的数据文件中的数据装载进usr表不覆盖原有数据hiveloaddatalocalinpath/usr/local/dataintotableusr;把分布式文件系统目录hdfs:/master_server/usr/local/data下的数据文件数据装载进usr表并覆盖原有数据hiveloaddatainpathhdfs:/master_server/usr/local/dataoverwriteintotableusr;Hive基本操作3.load:向表中装载数据把目录/usHive基本操作4.insert:向表中插入数据或从表中导出数据向表usr1中插入来自usr表的数据并覆盖原有数据hiveinsertoverwritetableusr1select*fromusrwhereage=10;向表usr1中插入来自usr表的数据并追加在原有数据后hiveinsertintotableusr1select*fromusrwhereage=10;Hive基本操作4.insert:向表中插入数据或从表中导Hive应用实例:WordCount词频统计任务要求:首先,需要创建一个需要分析的输入数据文件然后,编写HiveQL语句实现WordCount算法具体步骤如下:(1)创建input目录,其中input为输入目录。命令如下:$cd/usr/local/hadoop$mkdirinput(2)在input文件夹中创建两个测试文件file1.txt和file2.txt,命令如下:$cd/usr/local/hadoop/input$echohelloworldfile1.txt$echohellohadoopfile2.txtHive应用实例:WordCount词频统计任务要求:Hive应用实例:WordCount(3)进入hive命令行界面,编写HiveQL语句实现WordCount算法,命令如下:$hivehivecreatetabledocs(linestring);hiveloaddatainpathinputoverwriteintotabledocs;hivecreatetableword_countasselectword,count(1)ascountfrom(selectexplode(split(line,)aswordfromdocs)wgroupbywordorderbyword;执行完成后,用select语句查看运行结果如下:wordhelloworldhellohadoopWhello worldhello hadoopdocsHive应用实例:WordCount(3)进入hive命令行Hive的编程优势WordCount算法在MapReduce中的编程实现和Hive中编程实现的主要不同点:1.采用Hive实现WordCount算法需要编写较少的代码量在MapReduce中,WordCount类由63行Java代码编写而成在Hive中只需要编写7行代码2.在MapReduce的实现中,需要进行编译生成jar文件来执行算法,而在Hive中不需要HiveQL语句的最终实现需要转换为MapReduce任务来执行,这都是由Hive框架自动完成的,用户不需要了解具体实现细节Hive的编程优势WordCount算法在MapReduce本章小结本章详细介绍了Hive的基本知识。Hive是一个构建于Hadoop顶层的数据仓库工具,主要用于对存储在Hadoop文件中的数据集进行数据整理、特殊查询和分析处理。Hive在某种程度上可以看作是用户编程接口,本身不存储和处理数据,依赖HDFS存储数据,依赖MapReduce处理数据。Hive支持使用自身提供的命令行CLI、简单网页HWI访问方式,及通过Karmasphere、Hue、Qubole等工具的外部访问。Hive在数据仓库中的具体应用中,主要用于报表中心的报表分析统计上。在Hadoop集群上构建的数据仓库由多个Hive进行管理,具体实现采用HiveHA原理的方式,实现一台超强“hive。Impala作为新一代开源大数据分析引擎,支持实时计算,并在性能上比Hive高出330倍,甚至在将来的某一天可能会超过Hive的使用率而成为Hadoop上最流行的实时计算平台。本章最后以单词统计为例,详细介绍了如何使用Hive进行简单编程。本章小结本章详细介绍了Hive的基本知识。Hive是一个构建
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 教学培训


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!