Hive技术平台详解_第1页
Hive技术平台详解_第2页
Hive技术平台详解_第3页
Hive技术平台详解_第4页
Hive技术平台详解_第5页
已阅读5页,还剩25页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、技术创新,变革未来Hive技术平台详解内容Hive介绍Hive运行架构HiveQL示例 HiveQL原理Hive数据库结构Hive是什么Facebook开源,最初用于解决海量日志统计问题可以将结构化的数据文件映射为一张数据库表设计目标是让SQL技能良好,但Java技能较弱的 分析师可以查询海量数据提供近乎完整的SQL功能早期唯一大规模运行在Hadoop上的SQL工具使用HQL作为查询接口使用HDFS作为存储底层使用MapReduce作为执行层, SQL语句转换为 MapReduce任务运行Hive优缺点优点学习成本低:通过类SQL语句快速实现很多MapReduce 任务,各种背景的人都能够上手

2、基于Hadoop的一个数据仓库工具,适合做ETL适合数据仓库统计分析:海量结构化数据离线分析,不 必开发专门的MapReduce应用缺点HQL表达能力有限,有些复杂运算用HQL不易表达Hive和RDBMS的区别HiveRDBMS查询语言HQLSQL数据存储HDFSLocal FS数据格式判断查询时判断插入时判断执行延迟高低处理数据规模大小执行MRExecutorHive在hadoop生态体系中的位置Hive安装部署Metastore通常会单独占一个节点,提供服务Hive运行架构Hive运行架构Hive是C/S模式Client端有JDBC/ODBC和Thrift Client,可远程 访问Hiv

3、eServer端有:CLI、Thrift Server、HWI、Driver、 Metastore其中CLI、Thrift Server、HWI是暴露给Client访问的Hive服务Driver、Metastore是Hive内部组件,Metastore还可以供第三方SQL on Hadoop框架使用Hive运行架构CLI(Common Line Interface):命令行接口,默认服务bin/hive或bin/hive -service cliHWI(Hive Web Interface):Web接口,默认端口9999bin/hive -service hwiThriftServer:通过T

4、hrift提供服务,默认端口是10000bin/hive -service hiveserverbin/hive -service hiveserver2对应新的CLI:beeline(Hive 0.11引入),作为Hive JDBC Client访问HiveServer2,解决了CLI并发访问 问题Hive运行架构Metastore:负责元数据服务,RDBMS负 责元数据存储bin/hive -service metastore官方提供服务和存储的三种部署模式内嵌模式本地模式远程模式Hive运行架构最简单的部署方式,默认方式使用内嵌的Derby数据库存储元数据Derby只能接受一个Hive会

5、话的访问不能用于生产Hive运行架构Hive运行架构将Metastore分离出来,成为一 个独立的Hive服务可以将数据库层完全置于防火墙 后,不再暴露数据库用户名和密 码,避免认证信息的泄漏HiveQL 示例创建2张表分别从本地和hdfs上加载数据查看表信息登录mysql,在TBLS表中查看新增的表执行查询操作删除表Hive Join实现select , order.orderid from order join producton order.pid = product.pid;Hive GroupBy实现select rank, isonline, count(*

6、) from user group by rank, isonline;Hive Distinct实现select pid, count(distinct uid) num from order group by pid;Hive 优化策略开启Combinerset hive.map.aggr=true;倾斜数据二次分发set hive.groupby.skewindata=true;生成两个MR Job第一个 MR Job中,Map 输出结果会随机分发到不 同Reduce中,每个 Reduce 做部分聚合操作,达到 负载均衡第二个 MR Job中,按照Key 分发到不同 Reduce中,完成

7、最终的聚合Hive数据库结构Hive数据库类似传统数据库的DataBase在hdfs中生成1个目录Hive的默认数据仓库目录是/user/hive/warehouse,在hive-site.xml中由hive.metastore.warehouse.dir项定义示例:create database test_database;Hive表Hive表与数据库中的Table在概念上是类似每一个Table在Hive中都有一个相应的目录存储数据Hive表数据由两部分组成:数据文件和元数据Hive分区类似于数据库中的分区对应表下的一个子目录,所有Partition的数据都存储在对 应的目录中如sales表

8、中包含dt和city两个Partition,对应于dt = 20161101, city = BJ 的HDFS子目录为/user/hive/warehouse/database/sales/dt=20161101/city= BJ对应于 dt = 20161101, city = SH 的HDFS子目录为/user/hive/warehouse/database/sales/dt=20161101/city= SH示例Hive分区Hive管理大型网站的浏览日志日志数据表不采用分区设计单日网站流量分析,Hive要遍历全量日志来完成查询以一年日志为全量,单日查询的数据利用率不到1%查询时间都浪费在

9、数据加载中Hive桶有一张日志表,我们需要按照日期和用户id来分区,目的 是为了加快查询出谁哪天做了什么CREATETABLE weblog (url STRING, sourceIp STRING) PARTITIONED BY (dt STRING, userId STRING);既想加快查询,又避免出现如此多的小文件,bucket就出 现了CREATE TABLE weblog (url STRING, sourceIp STRING userId STRING) PARTITIONED BY (dt STRING) CLUSTERED BY (userId) INTO 32 BUCKE

10、TS;Hive桶插入数据:FROM raw_logs INSERT OVERWRITE TABLE weblog PARTITION (dt=2016-11-01) SELECT userId, url,sourceIp WHERE dt=2016-11-01;将 userId列分散至 32 个 bucket,首先对 userId 列的值 计算 hash,hash 值为 0 放到part-00000;hash 值为 20 放到part-00020产生的目录结构是/user/hive/warehouse/weblog/dt=20161101/part-00020对指定列计算hash,根据Hash值切分数据,分解到不同 文件,目的是为了并

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论