您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 信息化管理 > 基于Hadoop的数据仓库Hive
基于Hadoop的数据仓库Hive提纲•概述•Hive系统架构•Hive工作原理•HiveHA基本原理•Impala•Hive编程实践概述•数据仓库概念•传统数据仓库面临的挑战•Hive简介•Hive与Hadoop生态系统中其他组件的关系•Hive与传统数据库的对比分析•Hive在企业中的部署和应用数据仓库概念数据仓库(DataWarehouse)是一个面向主题的(SubjectOriented)、集成的(Integrated)、相对稳定的(Non-Volatile)、反映历史变化(TimeVariant)的数据集合,用于支持管理决策。抽取、转换、加载(ETL)外部数据数据仓库数据集市前端应用服务数据挖掘OLAP服务器查询工具报表分析工具其它应用元数据数据仓库监视、运行和维护工具数据挖掘系统……数据源数据存储和管理分析和挖掘引擎应用OLTP系统文档数据仓库的体系结构•(1)无法满足快速增长的海量数据存储需求•(2)无法有效处理不同类型的数据•(3)计算和处理能力不足传统数据仓库面临的挑战Hive简介•Hive是一个构建于Hadoop顶层的数据仓库工具•支持大规模数据存储、分析,具有良好的可扩展性•某种程度上可以看作是用户编程接口,本身不存储和处理数据•依赖分布式文件系统HDFS存储数据•依赖分布式并行计算模型MapReduce处理数据•定义了简单的类似SQL的查询语言——HiveQL•用户可以通过编写的HiveQL语句运行MapReduce任务•可以很容易把原来构建在关系数据库上的数据仓库应用程序移植到Hadoop平台上•是一个可以提供有效、合理、直观组织和使用数据的分析工具Hive简介Hive具有的特点非常适用于数据仓库•采用批处理方式处理海量数据•Hive需要把HiveQL语句转换成MapReduce任务进行运行•数据仓库存储的是静态数据,对静态数据的分析适合采用批处理方式,不需要快速响应给出结果,而且数据本身也不会频繁变化•提供适合数据仓库操作的工具•Hive本身提供了一系列对数据进行提取、转换、加载(ETL)的工具,可以存储、查询和分析存储在Hadoop中的大规模数据•这些工具能够很好地满足数据仓库各种应用场景Hive与Hadoop生态系统中其他组件的关系•Hive依赖于HDFS存储数据•Hive依赖于MapReduce处理数据•在某些场景下Pig可以作为Hive的替代工具•HBase提供数据的实时访问Hive与Hadoop生态系统中其他组件的关系HDFSHBaseMapReduceHivePigBI报表ETL工具Hadoop生态系统Hive与传统数据库的对比分析•Hive在很多方面和传统的关系数据库类似,但是它的底层依赖的是HDFS和MapReduce,所以在很多方面又有别于传统数据库对比项目Hive传统数据库数据插入支持批量导入支持单条和批量导入数据更新不支持支持索引支持支持分区支持支持执行延迟高低扩展性好有限Hive在企业中的部署和应用企业中一种常见的大数据分析平台部署框架1.Hive在企业大数据分析平台中的应用应用层报表中心在线业务BIHadoop数据仓库HivePigHBaseMahoutHadoopMapReduceHDFSHive在企业中的部署和应用图Facebook的数据仓库架构WebServersScribeServersFilersFederatedMySQLOracleRACHiveonHadoopcluster•基于Oracle的数据仓库系统已经无法满足激增的业务需求•Facebook公司开发了数据仓库工具Hive,并在企业内部进行了大量部署2.Hive在Facebook公司中的应用Hive系统架构图Hive系统架构•用户接口模块包括CLI、HWI、JDBC、ODBC、ThriftServer•驱动模块(Driver)包括编译器、优化器、执行器等,负责把HiveSQL语句转换成一系列MapReduce作业•元数据存储模块(Metastore)是一个独立的关系型数据库(自带derby数据库,或MySQL数据库)KarmasphereHueQubole其他JDBCThriftServerODBCHWICLIDriver(compiles,optimizes,executes)MetastoreJobTrackerNameNodeHDFSHiveHadoopMasterHive工作原理•SQL语句转换成MapReduce作业的基本原理•Hive中SQL查询转换成MapReduce作业的过程uidname1Lily2Tomuidorderid110111022103keyvalue11,Lily21,Tomkeyvalue12,10112,10222,103keyvalue11,Lily12,10112,102keyvalue21,Tom22,103nameorderidLily101Lily102nameorderidTom103MapShuffleReduceUserOrderSQL语句转换成MapReduce的基本原理1.join的实现原理1是表User的标记位2是表Order的标记位1和2是uid的值SQL语句转换成MapReduce的基本原理2.groupby的实现原理ranklevelA1A1ranklevelA1B2keyvalueA,12keyvalueA,11B,21MapShuffleReduceScoreScorekeyvalueA,12A,11keyvalueB,21ranklevelA1value3ranklevelB2value1存在一个分组(GroupBy)操作,其功能是把表Score的不同片段按照rank和level的组合值进行合并,计算不同rank和level的组合值分别有几条记录:selectrank,level,count(*)asvaluefromscoregroupbyrank,levelHive中SQL查询转换成MapReduce作业的过程•当用户向Hive输入一段命令或查询时,Hive需要与Hadoop交互工作来完成该操作:•驱动模块接收该命令或查询编译器•对该命令或查询进行解析编译•由优化器对该命令或查询进行优化计算•该命令或查询通过执行器进行执行Hive中SQL查询转换成MapReduce作业的过程·将抽象语法树转换成查询块·将查询块转换成逻辑查询计划·重写逻辑查询计划·将逻辑计划转成物理计划·选择最佳的优化查询策略·将SQL转换成抽象语法树输入输出ParserSemanticAnalyzerLogicalPlanGeneratorLogicalOptimizerPhysicalPlanGeneratorPhysicalOptimizer第1步:由Hive驱动模块中的编译器对用户输入的SQL语言进行词法和语法解析,将SQL语句转化为抽象语法树的形式第2步:抽象语法树的结构仍很复杂,不方便直接翻译为MapReduce算法程序,因此,把抽象语法书转化为查询块第3步:把查询块转换成逻辑查询计划,里面包含了许多逻辑操作符第4步:重写逻辑查询计划,进行优化,合并多余操作,减少MapReduce任务数量第5步:将逻辑操作符转换成需要执行的具体MapReduce任务第6步:对生成的MapReduce任务进行优化,生成最终的MapReduce任务执行计划第7步:由Hive驱动模块中的执行器,对最终的MapReduce任务进行执行输出Hive中SQL查询转换成MapReduce作业的过程•当启动MapReduce程序时,Hive本身是不会生成MapReduce算法程序的•需要通过一个表示“Job执行计划”的XML文件驱动执行内置的、原生的Mapper和Reducer模块•Hive通过和JobTracker通信来初始化MapReduce任务,不必直接部署在JobTracker所在的管理节点上执行•通常在大型集群上,会有专门的网关机来部署Hive工具。网关机的作用主要是远程操作和管理节点上的JobTracker通信来执行任务•数据文件通常存储在HDFS上,HDFS由名称节点管理几点说明:HiveHA基本原理图HiveHA基本原理问题:在实际应用中,Hive也暴露出不稳定的问题解决方案:HiveHA(HighAvailability)•由多个Hive实例进行管理的,这些Hive实例被纳入到一个资源池中,并由HAProxy提供一个统一的对外接口•对于程序开发人员来说,可以把它认为是一台超强“HiveDataNode/TaskTrackerDataNode/TaskTrackerDataNode/TaskTrackerDataNode/TaskTrackerHadoop集群HiveHiveHiveHAProxyMySQL/报表展现决策人员开发人员运营人员Impala•Impala简介•Impala系统架构•Impala查询执行过程•Impala与Hive的比较Impala简介•Impala是由Cloudera公司开发的新型查询系统,它提供SQL语义,能查询存储在Hadoop的HDFS和HBase上的PB级大数据,在性能上比Hive高出3~30倍•Impala的运行需要依赖于Hive的元数据•Impala是参照Dremel系统进行设计的•Impala采用了与商用并行关系数据库类似的分布式查询引擎,可以直接与HDFS和HBase进行交互查询•Impala和Hive采用相同的SQL语法、ODBC驱动程序和用户接口14.5.1Impala简介ODBCDriverImpalaHDFSHBaseMetastore(Hive)图Impala与其他组件关系Impala系统架构图Impala系统架构Impala和Hive、HDFS、HBase等工具是统一部署在一个Hadoop平台上的Impala主要由Impalad,StateStore和CLI三部分组成SQLAppODBCHiveMetastoreHDFSNNStateStoreCommonHiveSQLandinterfaceUnifiedmetadataQueryPlannerQueryPlannerQueryPlannerQueryCoordinatorQueryCoordinatorQueryCoordinatorQueryExecEngineQueryExecEngineQueryExecEngineHDFSDNHBaseHDFSDNHBaseHDFSDNHBaseLocalDirectReadsLocalDirectReadsFullyMPPDistributedFullyMPPDistributedCLIImpala系统架构Impala主要由Impalad,StateStore和CLI三部分组成1.Impalad•负责协调客户端提交的查询的执行•包含QueryPlanner、QueryCoordinator和QueryExecEngine三个模块•与HDFS的数据节点(HDFSDN)运行在同一节点上•给其他Impalad分配任务以及收集其他Impalad的执行结果进行汇总•Impalad也会执行其他Impalad给其分配的任务,主要就是对本地HDFS和HBase里的部分数据进行操作Impala系统架构•2.StateStore•会创建一个statestored进程•负责收集分布在集群中各个Impalad进程的资源信息,用于查询调度3.CLI•给用户提供查询使用的命令行工具•还提供了Hue、JDBC及ODBC的使用接口说明:Impala中的元数据直接存储在Hive中。Impala采用与Hive相同的元数据、SQL语法、ODBC驱动程序和用户接口,从而使得在一个Hadoop平台上,可以统一部署Hive和Impala等分析工具,同时支持批处理和实时查询Impala查询执行过程图Impala查询过程图CLIClientODBC/JDBCDriverHueBees
本文标题:基于Hadoop的数据仓库Hive
链接地址:https://www.777doc.com/doc-3381701 .html