基于Hadoop的数据仓库Hive.

Slides:



Advertisements
Similar presentations
大数据基础技术和应用. 大纲 大数据概述 大数据基础技术 工程技术 策略技术 典型应用 我们处于数据爆炸的时代 数据库 文字记录 照片 线下数据信息化 网页数据 用户行为记录 数字图像 互联网 - 移动互联网 设备监控 智能家居 摄像头 传感器 地球上至今总共的数据量: 在 2006 年,个人用户才刚刚迈.
Advertisements

第二章 简单的 SQL 语句. 本章要点  创建一个简单的表  SQL 语句介绍  最简单的查询语句 select  带有限制条件的查询  查询结果的排序显示.
PHP 训练营 - MySQL OA 产品部 李鑫辉 2011 年 9 月. 内容提要 & 目录 1. 介绍 (10 分钟 ) 1.1. 简介 1.2. 特点 1.3. 安装 2. 语法 (60 分钟 ) 2.1. 存储引擎 MyISAM InnoDB 特点与区别.
Java 技术与应用 数据库应用 ( 第 14 章 ) 西安交大 卫颜俊 2008 年 12 月 电子信箱: QQ: 网站 : /java.
第八单元 数据库MySQL应用基础 MySQL数据库应用基础 MySQ数据库操作使用 Mysql管理工具 第25章 数据库的增加/删除操作
第6章 数据库管理软件Access 年秋.
Big Data Ecosystem – Hadoop Distribution
顧客交易紀錄分析實務 概述 26.2 資料分析的過程 26.3 顧客交易紀錄分析說明 26.4 實作一、顧客活動剖析實務演練
淘宝海量数据产品技术架构 张轩丞(朋春) 淘宝网-数据平台与产品部.
第八讲 基于Hadoop的数据仓库Hive (PPT版本号:2016年4月6日版本)
第2讲 Transact-SQL语言.
“大云”大数据平台及应用 中国移动通信研究院 郭磊涛 2013年11月.
E-Mapreduce培训系列 基本介绍.
第8章 SELECT敘述的基本查詢 8-1 SELECT查詢指令 8-2 SELECT子句 8-3 FROM子句 8-4 WHERE子句
基于Hadoop的Map/Reduce框架研究报告
云计算业务应用-数据挖掘.
資料庫 (Database) SQL Server 2008實作
数据库概述 简而言之,数据库(DataBase)就是一个存储数据的仓库。为了方便数据的存储和管理,它将数据按照特定的规律存储在磁盘上。通过数据库管理系统,可以有效的组织和管理存储在数据库中的数据。如今,已经存在了Oracle、SQL Server、MySQL等诸多优秀的数据库。在这一章中将讲解的内容包括。
巨量資料平台: Hadoop的生態系.
第6章 資料庫管理系統 6-1 關聯式資料庫管理系統 6-2 SQL Server資料庫管理系統
云梯的多namenode和跨机房之路
计算机应用基础 上海大学计算中心.
为教师开展大数据课程教学提供全方位、一站式服务
基于hadoop的数据仓库技术.
Google App Engine Google 應用服務引擎.
第7章 建立資料表與完整性限制條件 7-1 資料型別 7-2 資料表的建立 7-3 建立完整性限制條件 7-4 修改與刪除資料表
JAVA 程式設計與資料結構 第十一章 JDBC.
第十五章 常見的資料庫管理系統 目的 Oracle 微軟SQL Server 微軟Access MySQL Oracle 應用伺服器
第2章 大数据处理架构Hadoop (PPT版本号:2017年2月版本)
快速学习环境搭建 安装前预备工作(Linux相关配置) 实操演示(hadoop、hbase为例) 总结&练习题(课后练练手)
第六章 學習SQL語言.
云计算之分布式计算.
第十一章 資料庫設計與權限設定.
启用“Hadoop”的哨兵 - Sentry 的通用权限管理模型
王耀聰 陳威宇 國家高速網路與計算中心(NCHC)
二.資料庫系統建立與管理 Access 資料庫:windows下的單機資料庫 Access 操作 Mysql資料庫介紹.
数据仓库和数据挖掘 DATA WAREHOUSING AND DATA MINING 经济科学室验室
資料庫安全 (Database Security)
Cloud Computing 数据处理平台-Pig.
第九讲 Hadoop架构再探讨 (2016春季学期)
CHAPTER 6 認識MapReduce.
Spark在智慧图书馆建设中的应用探索 2017年12月22日.
第一篇 数据仓库与OLAP 第一章 数据仓库基本概念
SQL Server 2000 数据库入门.
第3章 MySQL教學範本 主從式資料庫系統 - CH3.
Hadoop平台與應用規劃實作 報告者:劉育維.
第5章 資料倉儲的資料建置.
Spring & mongodb java实战mongodb 曹巍 2013年9月22日.
基于大数据的物流资源整合 福建师范大学协和学院 沈庆琼.
软件工程基础 云计算概论 刘 驰.
大数据介绍及应用案例分享 2016年7月 华信咨询设计研究院有限公司.
資料庫管理 Homework #4 楊立偉教授 台灣大學工管系 2016.
第20章 MySQL数据库.
Spark SQL 介绍 付士涛. Spark SQL 介绍 付士涛 大纲 Architecture(架构) 像Hive一样的User Interface(用户操作界面) DataFrame的使用(1.3以前叫做SchemaRDD)
MySQL开发规范 DB组-张浩.
斯坦福大学调研 蒋达晟.
基于大数据平台数据管理研究 何家乐 2013年7月 中国科学院高能物理研究所.
認識資料庫 MySQL 資料庫新增 MySQL 資料表新增 認識欄位資料表 資料新增、刪除、修改、瀏灠 資料表清空與刪除
第18章 SQL結構化查詢語言 18-1 SQL語言的基礎 18-2 SQL的查詢指令 18-3 SQL子查詢與合併查詢.
3.2 Mysql 命令行 1 查看数据库 SHOW DATABASES; 2 创建一个数据库test1 CREATE DATABASE test1; 3 选择你所创建的数据库 USE test1; (按回车键出现Database changed 时说明操作成功!) 4 查看现在的数据库中存在什么表.
Unit 05 雲端分散式Hadoop實驗 -I M. S. Jian
查询与视图 蔡海洋.
SQL查询语句 蔡海洋.
密级: 亿赞普Hadoop应用浅析 IZP 肖燕京.
第六類 資料庫備份與回復.
8 SELECT敘述的基本查詢 8-1 SELECT查詢指令 8-2 SELECT子句 8-3 FROM子句 8-4 WHERE子句
Lesson 4 :基礎應用一(計數器) (2005/01/27).
資料庫應用與實作 一到六章重點、習題.
Web安全基础教程
数据库应用技术 天津电大 翟迎建.
Presentation transcript:

基于Hadoop的数据仓库Hive

提纲 概述 Hive系统架构 Hive工作原理 Hive HA基本原理 Impala Hive编程实践

概述 数据仓库概念 传统数据仓库面临的挑战 Hive简介 Hive与Hadoop生态系统中其他组件的关系 Hive与传统数据库的对比分析

数据仓库概念 数据仓库(Data Warehouse)是一个面向主题的(Subject Oriented)、集成的(Integrated)、相对稳定的(Non-Volatile)、反映历史变化(Time Variant)的数据集合,用于支持管理决策。 数据仓库的体系结构

传统数据仓库面临的挑战 (1)无法满足快速增长的海量数据存储需求 (2)无法有效处理不同类型的数据 (3)计算和处理能力不足

Hive简介 Hive是一个构建于Hadoop顶层的数据仓库工具 支持大规模数据存储、分析,具有良好的可扩展性 某种程度上可以看作是用户编程接口,本身不存储和处理数据 依赖分布式文件系统HDFS存储数据 依赖分布式并行计算模型MapReduce处理数据 定义了简单的类似SQL 的查询语言——HiveQL 用户可以通过编写的HiveQL语句运行MapReduce任务 可以很容易把原来构建在关系数据库上的数据仓库应用程序移植到Hadoop平台上 是一个可以提供有效、合理、直观组织和使用数据的分析工具

Hive简介 Hive具有的特点非常适用于数据仓库 采用批处理方式处理海量数据 Hive需要把HiveQL语句转换成MapReduce任务进行运行 数据仓库存储的是静态数据,对静态数据的分析适合采用批处理方式,不需要快速响应给出结果,而且数据本身也不会频繁变化 提供适合数据仓库操作的工具 Hive本身提供了一系列对数据进行提取、转换、加载(ETL)的工具,可以存储、查询和分析存储在Hadoop中的大规模数据 这些工具能够很好地满足数据仓库各种应用场景 ETL,是英文 Extract-Transform-Load 的缩写,用来描述将数据从来源端经过抽取(extract)、转换(transform)、加载(load)至目的端的过程。

Hive与Hadoop生态系统中其他组件的关系 Hive依赖于HDFS 存储数据 Hive依赖于MapReduce 处理数据 在某些场景下Pig可以作为Hive的替代工具 HBase 提供数据的实时访问

Hive与Hadoop生态系统中其他组件的关系

Hive与传统数据库的对比分析 Hive在很多方面和传统的关系数据库类似,但是它的底层依赖的是HDFS和MapReduce,所以在很多方面又有别于传统数据库 对比项目 Hive 传统数据库 数据插入 支持批量导入 支持单条和批量导入 数据更新 不支持 支持 索引 分区 执行延迟 高 低 扩展性 好 有限

Hive在企业中的部署和应用 1. Hive在企业大数据分析平台中的应用 企业中一种常见的大数据分析平台部署框架 Mahout 是 Apache Software Foundation(ASF) 旗下的一个开源项目,提供一些可扩展的机器学习领域经典算法的实现,旨在帮助开发人员更加方便快捷地创建智能应用程序。Mahout项目目前已经有了多个公共发行版本。Mahout包含许多实现,包括聚类、分类、推荐过滤、频繁子项挖掘。 企业中一种常见的大数据分析平台部署框架

Hive在企业中的部署和应用 2.Hive在Facebook公司中的应用 基于Oracle的数据仓库系统已经无法满足激增的业务需求 Facebook公司开发了数据仓库工具Hive,并在企业内部进行了大量部署 Scribe是facebook开发的分布式日志系统,使用thrift传输log,因此无论是什么语言开发的项目都可以实现log收集,传送到远程或主从同步到远程。 图 Facebook的数据仓库架构

Hive系统架构 用户接口模块包括CLI、HWI、JDBC、ODBC、Thrift Server 驱动模块(Driver)包括编译器、优化器、执行器等,负责把HiveSQL语句转换成一系列MapReduce作业 元数据存储模块(Metastore)是一个独立的关系型数据库(自带derby数据库,或MySQL数据库) CLI命令行command-line interface, CLI的设计使其不便于通过编程的方式进行访问。CLI是胖客户端,其需要本地具有所有的Hive组件,包括配置. HWI是Hive Web Interface的简称,是hive cli的一个web替换方案. Thrift是一个软件框架,其用于跨语言的服务开发,Thrift提供了可扩展序列化机制, 不但兼容性好而且压缩率高 图 Hive系统架构

Hive工作原理 SQL语句转换成MapReduce作业的基本原理 Hive中SQL查询转换成MapReduce作业的过程

SQL语句转换成MapReduce的基本原理 1.join的实现原理 1是表User的标记位 1和2是uid的值 2是表Order的标记位

SQL语句转换成MapReduce的基本原理 2. group by的实现原理 存在一个分组(Group By)操作,其功能是把表Score的不同片段按照rank和level的组合值进行合并,计算不同rank和level的组合值分别有几条记录: select rank, level ,count(*) as value from score group by rank, level

Hive中SQL查询转换成MapReduce作业的过程 当用户向Hive输入一段命令或查询时,Hive需要与Hadoop 交互工作来完成该操作: 驱动模块接收该命令或查询编译器 对该命令或查询进行解析编译 由优化器对该命令或查询进行优化计算 该命令或查询通过执行器进行执行

Hive中SQL查询转换成MapReduce作业的过程 第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由名称节点管理

Hive HA基本原理 问题:在实际应用中,Hive也暴露出不稳定的问题 解决方案:Hive HA(High Availability) 由多个Hive实例进行管理的,这些Hive实例被纳入到一个资源池中,并由HA Proxy提供一个统一的对外接口 对于程序开发人员来说,可以把它认为是一台超强“Hive" 图 Hive HA基本原理

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驱动程序和用户接口 Dremel 是Google 的“交互式”数据分析系统

14.5.1 Impala简介 图 Impala与其他组件关系

Impala系统架构 Impala和Hive、HDFS、HBase等工具是统一部署在一个Hadoop平台上的 Impala主要由Impalad,State Store和CLI三部分组成 图 Impala系统架构

Impala系统架构 Impala主要由Impalad,State Store和CLI三部分组成 Impalad 负责协调客户端提交的查询的执行 包含Query Planner、Query Coordinator和Query Exec Engine三个模块 与HDFS的数据节点(HDFS DN)运行在同一节点上 给其他Impalad分配任务以及收集其他Impalad的执行结果进行汇总 Impalad也会执行其他Impalad给其分配的任务,主要就是对本地HDFS和HBase里的部分数据进行操作

Impala系统架构 2. State Store 会创建一个state stored进程 负责收集分布在集群中各个Impalad进程的资源信息,用于查询调度 CLI 给用户提供查询使用的命令行工具 还提供了Hue、JDBC及ODBC的使用接口 说明:Impala中的元数据直接存储在Hive中。Impala采用与Hive相同的元数据、SQL语法、ODBC驱动程序和用户接口,从而使得在一个Hadoop平台上,可以统一部署Hive和Impala等分析工具,同时支持批处理和实时查询

Impala查询执行过程 图 Impala查询过程图

Impala查询执行过程 Impala执行查询的具体过程: 第0步,当用户提交查询前,Impala先创建一个负责协 调客户端提交的查询的Impalad进程,该进程会向 Impala State Store提交注册订阅信息,State Store会创建一个statestored进程,statestored进程 通过创建多个线程来处理Impalad的注册订阅信息。 第1步,用户通过CLI客户端提交一个查询到impalad进 程,Impalad的Query Planner对SQL语句进行解析,生 成解析树;然后,Planner把这个查询的解析树变成若干 PlanFragment,发送到Query Coordinator

Impala查询执行过程 Impala执行查询的具体过程: 第2步,Coordinator通过从MySQL元数据库中获取元数据,从HDFS 的名称节点中获取数据地址,以得到存储这个查询相关数据的所有 数据节点。 第3步,Coordinator初始化相应impalad上的任务执行,即把查询 任务分配给所有存储这个查询相关数据的数据节点。 第4步,Query Executor通过流式交换中间输出,并由Query Coordinator汇聚来自各个impalad的结果。 第5步,Coordinator把汇总后的结果返回给CLI客户端。

Impala与Hive的比较 图 Impala与Hive的对比 Hive与Impala的不同点总结如下: Hive适合于长时间的批处理查询分 析,而Impala适合于实时交互式SQL查 询 Hive依赖于MapReduce计算框架, Impala把执行计划表现为一棵完整的 执行计划树,直接分发执行计划到各个 Impalad执行查询 Hive在执行过程中,如果内存放不 下所有数据,则会使用外存,以保证查 询能顺序执行完成,而Impala在遇到 内存放不下数据时,不会利用外存,所 以Impala目前处理查询时会受到一定 的限制 图 Impala与Hive的对比

Impala与Hive的比较 Hive与Impala的相同点总结 如下: Hive与Impala使用相同的存 储数据池,都支持把数据存储 于HDFS和HBase中 Hive与Impala使用相同的元 数据 Hive与Impala中对SQL的解 释处理比较相似,都是通过词 法分析生成执行计划 图 Impala与Hive的对比

Impala与Hive的比较 总结: Impala的目的不在于替换现有的MapReduce工具 把Hive与Impala配合使用效果最佳 可以先使用Hive进行数据转换处理,之后再使用Impala在Hive处理后的结果数据集上进行快速的数据分析

Hive编程实践 Hive的安装与配置 Hive的数据类型 Hive基本操作 Hive应用实例:WordCount Hive编程的优势

Hive的安装与配置 安装Hive之前需要安装jdk1.6以上版本以及启动Hadoop 下载安装包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的数据类型 1个字节(8位)有符号整数 2个字节(16位)有符号整数 4个字节(32位)有符号整数 8个字节(64位)有符号整数 描述 示例 TINYINT 1个字节(8位)有符号整数 1 SMALLINT 2个字节(16位)有符号整数 INT 4个字节(32位)有符号整数 BIGINT 8个字节(64位)有符号整数 FLOAT 4个字节(32位)单精度浮点数 1.0 DOUBLE 8个字节(64位)双精度浮点数 BOOLEAN 布尔类型,true/false true STRING 字符串,可以指定字符集 “xmu” TIMESTAMP 整数、浮点数或者字符串 1327882394(Unix新纪元秒) BINARY 字节数组 [0,1,0,1,0,1,0,1] 35

Hive的数据类型 类型 描述 示例 一组有序字段,字段的类型必须相同 Array(1,2) MAP 一组无序的键/值对,键的类型必须是原子的,值可以是任何数据类型,同一个映射的键和值的类型必须相同 Map(‘a’,1,’b’,2) STRUCT 一组命名的字段,字段类型可以不同 Struct(‘a’,1,1,0) 36

Hive基本操作 1. create: 创建数据库、表、视图 创建数据库 创建数据库hive hive> create database hive; 创建数据库hive。因为hive已经存在,所以会抛出异 常,加上if not exists关键字,则不会抛出异常 hive> create database if not exists hive; 37

14.6.3 Hive基本操作 创建表 在hive数据库中,创建表usr,含三个属性id,name,age hive> use hive; hive>create table if not exists usr(id bigint, name string, age int); 在hive数据库中,创建表usr,含三个属性id,name,age,存储路径为“/usr/local/hive/warehouse/hive/usr” hive>create table if not exists hive.usr(id bigint, name string, age int) location ‘/usr/local/hive/warehouse/hive/usr’;

Hive基本操作 创建视图 创建视图little_usr,只包含usr表中id,age属性 hive>create view little_usr as select id, age from usr;

Hive基本操作 2. show:查看数据库、表、视图 查看数据库 查看Hive中包含的所有数据库 hive> show databases; 查看Hive中以h开头的所有数据库 hive>show databases like ‘h.*’; 查看表和视图 查看数据库hive中所有表和视图 hive> use hive; hive> show tables; 查看数据库hive中以u开头的所有表和视图 hive> show tables in hive like ‘u.*’; 40

Hive基本操作 3. load:向表中装载数据 把目录’/usr/local/data’下的数据文件中的数据装载进usr表并覆盖原 有数据 hive> load data local inpath ‘/usr/local/data’ overwrite into table usr; 把目录’/usr/local/data’下的数据文件中的数据装载进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; 41

Hive基本操作 4. insert:向表中插入数据或从表中导出数据 向表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; 42

Hive应用实例:WordCount 词频统计任务要求: 首先,需要创建一个需要分析的输入数据文件 然后,编写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.txt

Hive应用实例:WordCount (3)进入hive命令行界面,编写HiveQL语句实现WordCount算法,命令如下: $ hive hive> create table docs(line string); hive> load data inpath 'input' overwrite into table docs; hive>create 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; 执行完成后,用select语句查看运行结果如下: docs hello world hello hadoop W word hello world hadoop

Hive的编程优势 WordCount算法在MapReduce中的编程实现和Hive中编程实现的主 要不同点: 在MapReduce中,WordCount类由63行Java代码编写而成 在Hive中只需要编写7行代码 2. 在MapReduce的实现中,需要进行编译生成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高出3~30倍,甚至在将来的某一天可能会超过Hive的使用率而成为Hadoop上最流行的实时计算平台。 本章最后以单词统计为例,详细介绍了如何使用Hive进行简单编程。