Hadoop数据仓库工具hive介绍.pdf
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《Hadoop数据仓库工具hive介绍.pdf》由会员分享,可在线阅读,更多相关《Hadoop数据仓库工具hive介绍.pdf(14页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、百度在线网络技术(北京)有限公司 HIVE 介绍 1 简介 1.1 是什么 hive 是一个基于 hadoop 的数据仓库。使用 hadoop-hdfs 作为数据存储层;提供类似SQL 的语言(HQL),通过 hadoop-mapreduce 完成数据计算;通过 HQL 语言提供使用者部分传统 RDBMS 一样的表格查询特性和分布式存储计算特性。类似的系统有 yahoo 的 pig1,google 的 sawzall2,microsoft 的 DryadLINQ3。1.2 架构 图表 1 hive 架构图4 1、操作界面:CLI,Web,Thrift 2、driver:hive 系统将用户操作
2、转化为 mapreduce 计算的模块(重点)百度在线网络技术(北京)有限公司 3、hadoop:hdfs+mapreduce 4、metastore:存储元数据 1.3 语言 一般有 DDL 和 DML 两种:hive 采用 DDL 方式和少量 DML 方式,类似 sql;pig 使用DML 方式。DDL:data definition language(只讲 definition,不讲实现)create/alter/droptable/view/partition create table as select DML:data manipulation language(有关于实现操作)i
3、nsert overwrite hive 示例 加载 load data local input /logs/urls.txt into table urls partition(ds=2010-01-01);写入 INSERT OVERWRITE TABLE result 操作 SELECT category,AVG(pagerank)FROM urls WHERE pagerank 0.2 GROUP BY category;pig 示例 加载 urls=LOAD /logs/urls.txt USING myLoad()AS(category,pagerank);操作 good_urls
4、=FILTER urls BY pagerank 0.2;groups=GROUP good_urls BY category;output=FOREACH groups GENERATE category,AVG(good_urls.pagerank);写入 STORE output INTO myoutput USING myStore();hive 中使用自定义 map-reduce FROM(FROM pv_users MAP pv_users.userid,pv_users.date USING map_script AS dt,uid CLUSTER BY dt)map_outpu
5、t INSERT OVERWRITE TABLE pv_users_reduced REDUCE map_output.dt,map_output.uid USING reduce_script AS date,count;百度在线网络技术(北京)有限公司 1.4 其他一些功能 1、能够 ALERT 一个 table,主要是 add 一个 column。2、分区(partition):a)建表的时候指定分区方式:CREATE TABLE invites(foo INT,bar STRING)PARTITIONED BY(ds STRING);b)导入的时候指定分区依据:LOAD DATA LO
6、CAL INPATH./examples/files/kv2.txt OVERWRITE INTO TABLE invites PARTITION(ds=2008-08-15);LOAD DATA LOCAL INPATH./examples/files/kv3.txt OVERWRITE INTO TABLE invites PARTITION(ds=2008-08-08);3、类似 select*from tbl 的查询不需要 MapReduce。4、hive 不只是可以 mapreduce 图表 2 hive 结合 HBase 的逻辑图5”图表 3 reduce 阶段写入 HBase 的
7、方式5”百度在线网络技术(北京)有限公司 图表 4 map-only job 写入 HBase 的方式5”2 实现 2.1 原数据(Metadata)hive 的元数据存储在传统的 RDBMS 中,现在为 mysql 中。采用 JDO(JPOX)。原因:访问这些 Metadata,我们想要“很低的延时”,而存在 hdfs 中是无法满足。(元数据对 hive 是相当重要的,因此一般要求有备份机制)使用:元数据都是在 HQL 语句编译的时候,就被生成一个 xml 文件(包含此次编译所有需要的元数据信息)存储在 hdfs 中,然后运行 mapreduce 时传递给 mapper 和 reducer。
8、(减少后期访问)2.2 查询解析(query parser)这一步是实现中最主要的操作,即架构图中 Driver 的大部分。下面将具体介绍其中的每一个小步。2.2.1 解析(parse)使用 antlr 解析 HQL 语句,并产生 AST(abstract syntax tree)。百度在线网络技术(北京)有限公司 2.2.2 类型检测和语义分析 分析所有输入输出的 table,并创建 logical-plan。通过一种中间表示结构 query block(QB)tree,将 AST 转换成 operator-DAG:将嵌套的 queries 变成父子关系的 QB-tree。2.2.3 优化(
9、Optimization)通过 operator-DAG 的中“元素的前后满足关系”生成一些操作(operator)。主要的五个元素为:Node,GrahpWalder,Dispatcher,Rule,Processor:GraphWalker 遍历(walk)DAG 中所有的 Node,并检查一个 Rule 是否满足,在满足的条件下回出发一个对应的 Processor。Dispatcher 则维护 Rule 到 Processor 的映射,并进行Rule 的匹配工作。图表 5 优化过程中的典型转换流图4 百度在线网络技术(北京)有限公司 简单的几个优化步骤 针对优化,这里给出了一些简单的处理
10、方式:1、列裁剪(Column pruning):只有需要用到的列才进行输出 2、谓词下推(Predicate pushdown):尽早进行数据过滤(见图表 7 中,下面为先处理的逻辑),减少后续处理的数据量 3、分区裁剪(Partition pruning):只读取满足分区条件的文件 4、map-join:对于 join 中一些小文件,可以在 map 阶段进行 join 操作,见 3.2.2 节 map-join 部分 5、join-reordering:将在 reducer 中进行 join 操作时的小 table 放入内存,而大 table 通过stream 方式读取 6、Group-b
11、y 优化:进行局部聚合进行优化(包括 hash-based 和 sort-based),对于 skew的 key(key 的 row num 和 size 在 reduce 时非常不均)可以进行两次 map-reduce 的方式优化 说明:基本上用于优化的提示(hint)都是一些配置项,map-join 除外,需要具体在 HQL直接指定。2.2.4 physical plan 的生成 根据上一步的结果,分解成一些 map/reduce 操作,并将最终结果(即一些 plan 的 xml文件)写入到 hdfs。这里给出一个论文4中的例子:FROM(SELECT a.status,b.school,
12、b.gender FROM status_updates a JOIN profiles b ON(a.userid=b.userid AND a.ds=2009-03-20)subq1 INSERT OVERWRITE TABLE gender_summary PARTITION(ds=2009-03-20)SELECT subq1.gender,COUNT(1)GROUP BY subq1.gender INSERT OVERWRITE TABLE school_summary PARTITION(ds=2009-03-20)SELECT subq1.school,COUNT(1)GROU
13、P BY subq1.school 百度在线网络技术(北京)有限公司 图表 6 有 3 个 job 的多表插入查询的 query-plan(1)百度在线网络技术(北京)有限公司 图表 7 有 3 个 job 的多表插入查询的 query-plan(2)4 简单说明 map1+reduce1 将生成的 数据分别写入 两个临时的 hdfs 文件 tmp1 和 tmp2,map2+reduce2 和 map3+reduce3 就需要等待 tmp1 和 tmp2 的输出才能运行。一些理解和疑问 1、为什么 map-reduce1 中会放入 GroupByOperator 和 FileSinkOpera
14、tor?A:是 predicate pushdown 的结果 2、sink 不知道什么意思?A:我理解成 map/reduce 中 emit 函数的操作 3、中间 selectOperator 和 JoinOperator 操作分成了两步 A:应该为了逻辑上的分开处理 hive 计划 Hive 使用了 rule-based 的优化方案,简单但不够优秀。后期计划是建立 cost-based 的优化方案。百度在线网络技术(北京)有限公司 2.3 执行引擎(Execution Engine)根据 job 间的依赖的顺序执行任务。一个 mapreduce-job 首先是被编写成一个 plan.xml文
15、件,运行时先解析 plan.xml,然后用 hadoop 运行。3 其他说明及优化 3.1 数据模型 Hive 中包含以下数据模型:Table,External Table,Partition,Bucket。1、Hive 中的 Table 和数据库中的 Table 在概念上是类似的,每一个 Table 在 Hive 中都有一个相应的目录存储数据。例如,一个表 pvs,它在 HDFS 中的路径为:/wh/pvs,其中,wh 是在 hive-site.xml 中由$hive.metastore.warehouse.dir 指定的数据仓库的目录,所有的 Table 数据(不包括 External T
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Hadoop 数据仓库 工具 hive 介绍
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内