1.Hive出现背景 Hive是Facebook开发并贡献给Hadoop开源社区的.它是建立在Hadoop体系架构上的一层SQL抽象,使得数据相关人员使用他们最为熟悉的SQL语言就可以进行海量数据的处理.分析和统计工作, 而不是必须掌握Java等编程语言和具备开发MapReduce程序的能力.Hive SQL实际上先被SQL解析器进行解析然后被Hive框架解析成一个MapReduce可执行计划,并按照该计划生成MapReduce任务后交给Hadoop集群处理. 由于Hive SQL是翻译为Map…
1.背景介绍 Storm以及离线数据平台的MapReduce和Hive构成了Hadoop生态对实时和离线数据处理的一套完整处理解决方案.除了此套解决方案之外,还有一种非常流行的而且完整的离线和 实时数据处理方案.这种方案就是Spark.Spark本质上是对Hadoop特别是MapReduce的补充.优化和完善,尤其是数据处理速度.易用性.迭代计算和复杂数据分析等方面. Spark Streaming 作为Spark整体解决方案中实时数据处理部分,本质上仍然是基于Spark的弹性分布式数据集(Re…
Hive SQL的各种优化方法基本 都和数据倾斜密切相关. Hive的优化分为join相关的优化和join无关的优化,从项目的实际来说,join相关的优化占了Hive优化的大部分内容,而join相关的优化又分为mapjoin可以解决的join优化和mapjoin无法解决的join优化. 1.数据倾斜 倾斜来自于统计学里的偏态分布.所谓偏态分布,即统计数据峰值与平均值不相等的频率分布,根据峰值小于或大于平均值可分为正偏函数和负偏函数,其偏离的程度可用偏态系数刻画. 对应分布式数据处理来说,希望数据…
一. HDFS和MapReduce优缺点 1.HDFS的优势 HDFS的英文全称是 Hadoop Distributed File System,即Hadoop分布式文件系统,它是Hadoop的核心子项目.实际上,Hadoop中有一个综合性的文件系统抽象,它提供了文件系统实现的各类接口, 而HDFS只是这个抽象文件系统 的一种实现,但HDFS是各种抽象接口中应用最为广泛和最广为人知的一个. HDFS被设计成适合运行在通用和廉价硬件上的分布式文件系统.它和现有的分布式文件系统有很多共同点,但他和其…
4.聚合操作 4.1.group by 操作 group by操作是实际业务场景(如实时报表.实时大屏等)中使用最为频繁的操作.通常实时聚合的主要源头数据流不会包含丰富的上下文信息,而是经常需要实时关联相关 相关的维度表,并针对这些扩展的.丰富维度属性进行各种业务的统计. 在下面的实例中,订单流通过买家id关联了买家维度表,获取其所在省份信息,然后实时统计每天各个省份的iPhone销量信息. ---从源头接收订单实时流 create table test_order_stream ( gmt_c…
1.介绍 本节主要利用Stream SQL进行实时开发实战,回顾Beam的API和Hadoop MapReduce的API,会发现Google将实际业务对数据的各种操作进行了抽象,多变的数据需求抽象为三类: 离线的Map.Shuffle.Reduce以及 实时的ParDo.GroupByKey.Combine,这些抽象其实也对应了SQL的操作.SQL开发有如下几类: select操作:包括过滤.投影.表达式等. join操作:关联操作,包括和维度表关联以及窗口操作等. 聚合操作:全局group…
1.流计算SQL原理和架构 流计算SQL通常是一个类SQL的声明式语言,主要用于对流式数据(Streams)的持续性查询,目的是在常见流计算平台和框架(如Storm.Spark Streaming.Flink.Beam等)的底层API上, 通过使用简易通用的的SQL语言构建SQL抽象层,降低实时开发的门槛. 流计算SQL的原理其实很简单,就是在SQL和底层的流计算引擎之间架起一座桥梁---流计算SQL被用户提交,被SQL引擎层翻译为底层的API并在底层的流计算引擎上执行.比如对Storm 来说,…
Storm是一个分布式.高容错.高可靠性的实时计算系统,它对于实时计算的意义相当于Hadoop对于批处理的意义.Hadoop提供了Map和Reduce原语.同样,Storm也对数据的实时处理提供了简单的 spout和bolt原语.Storm集群表面上看和Hadoop集群非常像,但Hadoop上面运行的是MapReduce的Job,而Storm上面运行的是topology(拓扑),它们非常不一样,比如一个MapReduce的Job最终会结束, 而一个Storm topology永远运行(除非显式杀…
1.Hadoop数据仓库架构设计 如上图. ODS(Operation Data Store)层:ODS层通常也被称为准备区(Staging area),它们是后续数据仓库层(即基于Kimball维度建模生成的实时表和维度表层,以及基于事实表和明细表 加工的汇总层数据)加工数据的来源,同时ODS层也存储着历史的增量和或全量数据. 数据仓库层(DW:Data Warehouse): 是Hadoop数据平台的主体内容.数据仓库层的数据是ODS层数据经过ETL清洗.转换.加载生成的.Hadoop数据仓…
5.大表join大表优化 如果Hive优化实战2中mapjoin中小表dim_seller很大呢?比如超过了1GB大小?这种就是大表join大表的问题.首先引入一个具体的问题场景,然后基于此介绍各自优化方案. 5.1.问题场景 问题场景如下: A表为一个汇总表,汇总的是卖家买家最近N天交易汇总信息,即对于每个卖家最近N天,其每个买家共成交了多少单,总金额是多少,假设N取90天,汇总值仅取成交单数. A表的字段有:buyer_id.seller_id.pay_cnt_90day. B表为卖家基本信…