大数据物流项目:主题及指标开发之即席查询引擎Impala(分布式内存计算)(十一)
theme: smartblue
持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第15天,点击查看活动详情
Logistics_Day11:主题及指标开发
01-[复习]-上次内容回顾
业务一:将业务数据实时增量存储至Kudu表,进行
离线报表分析
及即席查询分析
,技术框架如下。
- 1)、离线报表分析:1个主题报表【快递单
tbl_express_bill
主题报表开发】
- 按照数据仓库分层结构管理数据
- 使用SparkSQL DSL编程,所有分析数据来源:Kudu表,最终分析结果存储到
Kudu
表中- 分析报表:Java Client API读取报表结果进行展示;集成报表工具:
Superset
- 2)、离线报表分析:数据仓库分层结构,及按照主题开发离线报表
每个主题报表开发,分为三层管理数据,其中DWD层和DWS层需要编写SparkSQL程序,业务处理:
- DWD层程序开发:
- 从Kudu表加载ODS层事实表数据和维度表数据,按照关联字段,进行拉宽操作,最后存储到Kudu表
- 技术:
Kudu -> SparkSQL -> Kudu
- DWS层程序开发:
- 从Kudu表加载DWD层宽表数据,按照指标需要进行计算,最终存储到Kudu表中,以便使用
- 技术:
Kudu -> SparkSQL -> Kudu
- 3)、主题报表计算思路
/*
如果加载全量数据,按照day日期划分数据进行每日快递单数据指标统计
如果是增量数据,也就是昨日数据,直接计算即可
TODO:无论是全量数据还是增量数据,直接按照全量数据处理,首先获取数据中day值,按照day划分数据,每天数据指标计算
*/
02-[了解]-第11天:内容提纲
1)、
Impala
内存分析引擎
- Impala与Kudu一对CP,Kudu属于快速
存储
引擎,Impala属于快速分析
引擎- Impala 框架发展史,框架架构和原理、安装部署启动服务(依赖
HiveMetastore
)、命令行使用
impala-shell
- Impala如何创建表、Impala与Hue集成
神策数据分析产品中,给用户提供自定义查询:
03-[理解]-即席查询之背景介绍及业务流程
即席查询(Ad Hoc)
是==用户根据自己的需求,灵活的选择查询条件==,系统能够根据用户的选择生成相应的统计报表。 即席查询与普通应用查询最大的不同是普通的应用查询是定制开发的,而==即席查询是由用户自定义查询条件的==。
在快递业务运营过程中,经常会收到用户的投诉或者咨询,用户向咨询服务人员提供账号信息,客服人员可以根据用户的账号查询出来该用户的画像,以便对该用户的情况作为了解,因此数据开发人员需要编写sql语句实现用户画像开发,sql语句的开发牵扯到多表的关联会比较复杂,所以需要开发者平台实现sql的编写,Hue即实现了sql的开发。
针对物流项目来说,即席查询使用
Impala
分析引擎实现,基于内存分析引擎,目前来说SQL on Hadoop查询最快的SQL查询引擎工具。当Kudu 存储引擎出现以后,Impala与Kudu搭档就是一对CP,一个存储,一个分析,2个框架都是C++编写
很多数据可视化框架都可以与Impala集成,比如Hue框架,比如DBeave,比如Superset,直接编写SQL语句查询分析,还可以可视化展示。
- 1)、Hue集成Impala,提供界面WEB UI编写SQL语句,使用最多
- 2)、DBeave集成Impala,提供SQL界面,分析数据库中
- 3)、Superset集成Impala,查询表的数据,可视化展示
针对即席查询(编写SQL分析数据)业务流程示意图如下所示:
==在Impala中创建表,映射到Kudu表(ODS层数据)中,在Hue提供界面上编写SQL语句,分析查询。==
04-[了解]-即席查询之SQL on Hadoop 发展史
在大数据框架Hadoop出现之后,第一个SQL on Hadoop框架就是
Apache Hive
,提供SQL语句,底层转换为MapReduce
程序,针对海量数据分析处理。Hive 框架依赖
MySQL
数据库,存储元数据:database、table、column、name、type、partition
等等
随着Google论文
Dremel
发表,新一代大数据SQL分析引擎框架出现,比如Impala
、Presto
、SparkSQL
、Drill
等。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2iPhDYSe-1641192152626)(img/1613894199216.png)]
其中Impala内存分析引擎框架,使用内存分析数据,采用MPP计算内模式,取代Hive框架底层MapReduce,示意图如下所示:
当Cloudera公司开发新一代存储引擎
Kudu
,主要集成HDFS和HBase存储优势以后,Impala天然集成Kudu,分析存储数据,更加的快速,结构示意图如下:
05-[理解]-即席查询之Impala集成Kudu即席查询
当Cloudera公司出现Kudu存储引擎以后,Impala紧跟与Kudu集成,为了更快分析数据。
Apache Impala:分析引擎,【native analytic database】本地分析数据库,不存储数据,仅仅将表的数据存储到其他存储引擎,比如HDFS、HBase或者Kudu。
- 1)、Kudu:存储数据,按照表的方式管理数据,往往采用数仓分层结构管理数据
- 2)、Impala:分析数据,表中数据隐射到Kudu表中,让Kudu存储数据
- 3)、Hue:为用户提供SQL语句,交给Impala分析引擎,从Kudu表加载数据,放到内存分析处理。
06-[了解]-即席查询之Impala 分析引擎介绍
Impala
是Cloudera提供的一款高效率的SQL查询工具
,提供实时的查询效果
,官方测试性能比Hive快10到100倍,其SQL查询比SparkSQL还要更加快速,号称是当前大数据领域最快的查询SQL工具。 Impala是
基于Hive并使用内存进行计算
,兼顾数据仓库
,具有实时,批处理,多并发等优点。
Kudu与Apache Impala (孵化)紧密集成,Impala天然就支持兼容Kudu,允许开发人员使用Impala的SQL语法从Kudu的tablets 插入,查询,更新和删除数据;
Hive与Impala比较:
Hive适合于长时间的批处理查询分析,而
Impala
适合于实时交互式SQL查询。
- 2)、Impala 与 Hive 异同
建议:Impala分析引擎,由于使用C++语言编写,使用系统内存,如果在分析数据时,内存不足,很容易查询就被终止,而且错误基本上都看不懂。
07-[理解]-即席查询之Impala 架构原理
Apache Impala 分析引擎,架构由四个部分组成:
1)、Hive MetaStore:由Hive MetaStore管理元数据(比如表、数据库、分区信息等)
2)、Impala Server服务:
守护进程,Impalad
- 在每台机器上都会安装服务进程,通常与存储引擎数据节点在一台机器上
- 比如,Impala分析Kudu表的数据,那么Kudu框架中数据节点Kudu TabletServer上都会安装Impalad
- 功能:分析数据,当每个数据节点上安装服务以后,可以进行数据本地化(
Local
)分析3)、
Impala StateStore
:状态服务
- 向所有Impalad服务同步信息
4)、
Catalogd
:元数据服务
- 向所有Impalad服务同步元数据,比如在Impala中创建表,将元数据告知所有Impalad服务
- 当Catalogd服务启动时,会从Hive MetaStore加载元数据信息,同步给Impalad服务
5)、Impala 命令行客户端:
- 类似hive命令行:
impala-shell
,用户可以使用连接任意一个Impalad服务,编写SQL语句和DDL语句,执行操作,返回结果。此外,由于历史原因,Impala开始诞生取代Hive,处理HDFS上数据,所以Impala服务启动之前,需要启动HDFS分布式文件系统,否则出错。
Impalad服务
(守护进程)内部三个部分组成:
- 第一部分、Query Planner 查询计划器
- 当Impalad服务接收客户端发送请求,比如SQL查询语句,将SQL转换为查询计划(任务)
- 第二部分、Query Coordinator查询协调器
- 将查询计划(任务),发送到所需的Impalad服务中QueryExecutor执行器
- 第三部分、Query Executor查询执行器
- 执行手动查询计划(执行任务)并将查询结果返回给查询协调器。
08-[理解]-即席查询之Impala 查询流程
Impala分析引擎,在进行查询分析数据时流程,前面已经提到Impalad服务有三部分组成:
Planner
、Coordinator
及Executor
。
当用户编写SQL提供给Impalad服务以后,就需要转换
SQL为查询计划
,分发查询计划任务到各个Impalad服务,进行查询分析操作,最后给用户返回结果。
具体流程如下所示:
- 1)、客户端通过ODBC、JDBC、或者Impala shell向Impala集群中的
任意节点发送SQL语句
,这个节点的impalad实例作为这个查询的协调器(coordinator)
- 2)、Impala解析和分析这个查询语句来决定集群中的
哪个impalad实例来执行某个任务
,HDFS和HBase给本地的impalad实例提供数据访问
- 3)、各个impalad向协调器impalad返回数据,然后由协调器impalad向client发送结果集
扩展:以前搜狐畅游游戏公司,对每个新的游戏数据分析,架构使用Impala分析
- 点赞
- 收藏
- 关注作者
评论(0)