优秀网站设计网站,seo诊断专家,app开发公司tianpinkeji,免费crm网站下载文章目录 9.数据仓库Hive9.1 数据仓库的概念9.2 Hive简介9.3 SQL语句转换为MapReduce作业的基本原理9.4 Impla9.4.1 Impala简介9.4.2 Impala系统架构9.4.3 Impala查询执行过程9.4.4 Impala与Hive的比较 9.5 Hive的安装和基本操作9.5.1 Hive安装9.5.2 Hive基本操作 9.数据仓库Hi… 文章目录 9.数据仓库Hive9.1 数据仓库的概念9.2 Hive简介9.3 SQL语句转换为MapReduce作业的基本原理9.4 Impla9.4.1 Impala简介9.4.2 Impala系统架构9.4.3 Impala查询执行过程9.4.4 Impala与Hive的比较 9.5 Hive的安装和基本操作9.5.1 Hive安装9.5.2 Hive基本操作 9.数据仓库Hive
9.1 数据仓库的概念 数据仓库的概念 数据仓库是一个面向主题的、集成的、相对稳定的、反映历史变化的数据集合用户支持管理决策 根本目的基于数据仓库的分析结果-以支持企业内部的商业分析和决策-作出相关的经营决策 数据仓库的体系结构 数据仓库和传统数据库区别 仓库中的数据是相对稳定的不会频繁发生变化存储大量的历史数据 数据仓库基本上保留了历史上所有数据保留历史而传统观数据库只能保留某一时刻状态的信息 传统数据仓库基于关系型数据库面临挑战 无法满足快速增长的海量数据存储需求无法有效处理不同类型的数据基于结构化存储无法存储非结构化的数据计算和处理能力不足纵向扩展能力有限水平扩展能力不足
9.2 Hive简介 Hive特点 传统的数据仓库既是数据存储产品也是数据分析产品传统的数据仓库能同时支持数据的存储和处理分析Hive本身并不支持数据存储和处理其实只是提供了一种编程语言 其架构于Hadoop之上Hadoop有支持大规模数据存储的组件HDFS以及支持大规模数据处理的组件MapReduce Hive借助于这两个组件完成数据的存储和处理 其依赖分布式文件系统HDFS存储睡依赖分布式并行计算系统MapReduce处理数据借鉴SQL语言设计了新的查询语言HiveQL Hive总结 它定义了简单的类似SQL的查询语言HiveQL并提供了HiveQL这种语句来运行具体的MapReduce任务支持了类似SQL的接口很容易进行移植Hive是一个可以提供有效合理直观组织和使用数据的分析工具 Hive两个方面的特性 采用批处理的方式处理海量数据 Hive提供了一系列对数据仓库进行提取、转换、加载(ETL)的工具 Hive与Hadoop生态的其他组件的关系 Pig和Hive的区别 Pig更适合做数据的实时分析而不是海量数据的批处理主要是做数据的抽取、转换、加载环节 Hive和传统数据库的区别 其在很多方面与传统关系型数据库类似但是其底层以来的是HDFS和MapReduce,所以在很多方面又有别于传统数据库 Hive在企业大数据分析平台中的应用 Mahout:Hadoop平台上的开源组件很多机器学习的算法在Mahout上都已经实现了 Hive在Fackbook公司的应用 Fackbook是Hive数据仓库的开发者 FaceBook部署了大量的Web服务器 Web服务器日志流通过订阅服务器Scribe Servers将日志流收集整理存入Filers(网络日志服务器) Filers将其保存在分布式文件系统之上 Hive系统架构 Hive对外访问接口 驱动模块Driver 元数据存储模块Metastore Qubbole、Karmasphere、Hue也可以直接访问Hive Hive HAHigh Availability基本原理 Hive很多时候会表现出不稳定 Hive HA在集群中设置多个Hive实例并统一放入资源池外部所有访问通过HAProxy进行访问 首先用户访问HA Proxy 然后对Hive实例进行逻辑可用性测试若不可用则将其加入黑名单继续测试下一个Hive实例是否可用 每隔一定的周期HA Proxy会重新对列入黑名单的实例进行统一处理
9.3 SQL语句转换为MapReduce作业的基本原理 SQL中的连接操作转换为MapReduce作业 Join的实现原理 连接操作 编写一个Map处理逻辑 Map处理逻辑输入关系数据库的表 通过Map对它进行转换生成一系列键值对 group by的实现原理 Hive如何将SQL语句转为MapReduce操作当用户向Hive输入一段命令或者查询时Hive需要和Hadoop交互工作来完成该操作 驱动模块接受该命令或者查询编译器 对该命令或查询进行解析编译 由优化器对该命令或查询进行优化计算 该命令或查询通过执行器进行执行 具体分为七步骤 由Hive驱动模块中的编译器对用户输入的SQL语句进行语法和词法解析将SQL语句转化为抽象语法数的形式抽象语法数的结构仍很复杂不方便直接翻译为MapReduce算法程序因此需要把抽象语法数转为查询块将查询块转化为逻辑查询计划里面包含了许多逻辑操作符重写逻辑查询计划进行优化合并多余操作减少MapReduce任务数量将逻辑操作符转换成需要执行的具体MapReduce任务对生成的MapReduce任务进行优化生成最终的MapReduce任务执行计划物理计划由Hive驱动模块中的执行器对最终的MapReduce任务进行执行输出 简单说明
9.4 Impla
9.4.1 Impala简介 Hive是建立在Hadoop平台之上且其依赖底层的MapReduce和HDFS,所以它的延迟比较高 Impala底层也是构建在HDFS和HBase之上
9.4.2 Impala系统架构 Impala系统架构 Impala和Hive、HDFS、HBase都是统一部署在一个Hadoop平台上面 Impala的典型组件 Impalad:负责具体相关的查询任务 其包含三个模块 Impalad作用 State Store负责元数据数据管理和状态管理 每个查询提交系统会为其创建一个StateStored进程 作用 CLI用户访问接口 作用 Impala的元数据是直接存储在Hive中的,它是借助Hive来存储Impala的元数据mpala采用与Hive相同的元数据、相同的SQL语法、相同的ODBC驱动程序和用户接口在—个Hadoop平台上可以统一部署Hive和Impala等分析工 实现在一个平台上面可以同时满足批处理和实时查询
9.4.3 Impala查询执行过程 查询执行过程框图 0.注册和订阅 1.提交查询 2.获取元数据和数据地址 3.分发查询任务 汇聚结果 返回结果
9.4.4 Impala与Hive的比较 Hive和Impala的不同点 Hive适合于长时间的批处理查询分析而Impala适合于实时交互式SQL查询 Hive依赖于MapReduce计算框架Impala把执行计划表现为一棵完整的执行计划树直接分发执行计划到各个Impalad执行查询 Hive在执行过程中如果内存放不下所有数据则会使用外存以保证查询能顺序执行完成; Impala在遇到内存放不下数据时不会利用外存所以Impala目前处理查询时会受到一定的限制 Hive和Impala的相同点 Hive和Impala使用相同的存储数据池都支持把数据存储于HDFS和HBase中Hive与Impala使用相同的元数据Hive与Impala中对SQL的解释处理比较相似都是通过词法分析生成执行计划 总结 Impala的目的不在于替换现有的MapReduce工具把Hive与Impala配合使用效果最佳可以先使用Hive进行数据转换处理之后再使用Impala在Hive处理后的结果数据集上进行快速的数据分析
9.5 Hive的安装和基本操作
9.5.1 Hive安装 Hive安装 见Hive3.1.3安装和使用指南_厦大数据库实验室博客 (xmu.edu.cn)
9.5.2 Hive基本操作 Hive数据类型 Hive还提供了一些集合数据类型包括Array、map、struct等 Create:创建数据库、表、视图 创建数据库 创建表 创建视图 查看数据库 查看表和视图 load:向表中装载数据 Insert向表中插入数据或从表中导出数据 WordCount算法在MapReduce中的编程实现和在Hive中编程实现的主要不同点