大数据物流项目:主题及指标开发之即席查询引擎Impala(分布式内存计算)(十一)

Maynor学长 发表于 2022/06/29 20:38:03 2022/06/29
【摘要】 theme: smartblue持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第15天,点击查看活动详情 Logistics_Day11:主题及指标开发 01-[复习]-上次内容回顾业务一:将业务数据实时增量存储至Kudu表,进行离线报表分析及即席查询分析,技术框架如下。1)、离线报表分析:1个主题报表【快递单tbl_express_bill主题报表开发】按照数据仓库...

theme: smartblue

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第15天,点击查看活动详情

Logistics_Day11:主题及指标开发

1613867341272

01-[复习]-上次内容回顾

业务一:将业务数据实时增量存储至Kudu表,进行离线报表分析即席查询分析,技术框架如下。

1613869812849

  • 1)、离线报表分析:1个主题报表【快递单tbl_express_bill主题报表开发】
    • 按照数据仓库分层结构管理数据
    • 使用SparkSQL DSL编程,所有分析数据来源:Kudu表,最终分析结果存储到Kudu表中
    • 分析报表:Java Client API读取报表结果进行展示;集成报表工具:Superset

1613870119993

  • 2)、离线报表分析:数据仓库分层结构,及按照主题开发离线报表

1613873267062

每个主题报表开发,分为三层管理数据,其中DWD层和DWS层需要编写SparkSQL程序,业务处理:

  • DWD层程序开发:
    • 从Kudu表加载ODS层事实表数据和维度表数据,按照关联字段,进行拉宽操作,最后存储到Kudu表
    • 技术:Kudu -> SparkSQL -> Kudu
  • DWS层程序开发:
    • 从Kudu表加载DWD层宽表数据,按照指标需要进行计算,最终存储到Kudu表中,以便使用
    • 技术:Kudu -> SparkSQL -> Kudu
  • 3)、主题报表计算思路
/*
    如果加载全量数据,按照day日期划分数据进行每日快递单数据指标统计
    如果是增量数据,也就是昨日数据,直接计算即可
    TODO:无论是全量数据还是增量数据,直接按照全量数据处理,首先获取数据中day值,按照day划分数据,每天数据指标计算
*/

1616287128600

02-[了解]-第11天:内容提纲

主要讲解内容:即席查询引擎Impala(分布式内存计算)

1)、Impala 内存分析引擎

  • Impala与Kudu一对CP,Kudu属于快速存储引擎,Impala属于快速分析引擎
  • Impala 框架发展史,框架架构和原理、安装部署启动服务(依赖HiveMetastore)、命令行使用
    • impala-shell
  • Impala如何创建表、Impala与Hue集成

1613870343136

神策数据分析产品中,给用户提供自定义查询:

1613870517307

03-[理解]-即席查询之背景介绍及业务流程

即席查询(Ad Hoc)是==用户根据自己的需求,灵活的选择查询条件==,系统能够根据用户的选择生成相应的统计报表。

​ 即席查询与普通应用查询最大的不同是普通的应用查询是定制开发的,而==即席查询是由用户自定义查询条件的==。

1613893454738

​ 在快递业务运营过程中,经常会收到用户的投诉或者咨询,用户向咨询服务人员提供账号信息,客服人员可以根据用户的账号查询出来该用户的画像,以便对该用户的情况作为了解,因此数据开发人员需要编写sql语句实现用户画像开发,sql语句的开发牵扯到多表的关联会比较复杂,所以需要开发者平台实现sql的编写,Hue即实现了sql的开发。

1613893814742

​ 针对物流项目来说,即席查询使用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分析数据)业务流程示意图如下所示:

1616314111934

==在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等等

1613894141601

​ 随着Google论文Dremel发表,新一代大数据SQL分析引擎框架出现,比如ImpalaPrestoSparkSQLDrill等。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2iPhDYSe-1641192152626)(img/1613894199216.png)]

​ 其中Impala内存分析引擎框架,使用内存分析数据,采用MPP计算内模式,取代Hive框架底层MapReduce,示意图如下所示:

1613894243740

​ 当Cloudera公司开发新一代存储引擎Kudu,主要集成HDFS和HBase存储优势以后,Impala天然集成Kudu,分析存储数据,更加的快速,结构示意图如下:

1613894374147

目前来说,企业中如果使用Kudu存储数据,一定使用Impala分析数据,很有可能使用Spark集成使用。

05-[理解]-即席查询之Impala集成Kudu即席查询

当Cloudera公司出现Kudu存储引擎以后,Impala紧跟与Kudu集成,为了更快分析数据。

1613894606751

​ Apache Impala:分析引擎,【native analytic database】本地分析数据库,不存储数据,仅仅将表的数据存储到其他存储引擎,比如HDFS、HBase或者Kudu。

1613894695588

image-20210531155846910

06-[了解]-即席查询之Impala 分析引擎介绍

Impala是Cloudera提供的一款高效率的SQL查询工具,提供实时的查询效果,官方测试性能比Hive快10到100倍,其SQL查询比SparkSQL还要更加快速,号称是当前大数据领域最快的查询SQL工具。

​ Impala是基于Hive并使用内存进行计算,兼顾数据仓库,具有实时,批处理,多并发等优点。

Impala分析引擎,不管理元数据,交给Hive MetaStore管理

1613895088465

网站:https://impala.apache.org/

​ Kudu与Apache Impala (孵化)紧密集成,Impala天然就支持兼容Kudu,允许开发人员使用Impala的SQL语法从Kudu的tablets 插入,查询,更新和删除数据;

Impala 与 Hive 关系

1616315168360

Hive与Impala比较:

1616315182814

Hive适合于长时间的批处理查询分析,而Impala适合于实时交互式SQL查询。

  • 2)、Impala 与 Hive 异同

1616315259048

1616315259048

建议:Impala分析引擎,由于使用C++语言编写,使用系统内存,如果在分析数据时,内存不足,很容易查询就被终止,而且错误基本上都看不懂。

当使用Impala分析数据时,无论是HDFS、HBase还是Kudu,都应该分配多一点内存。

07-[理解]-即席查询之Impala 架构原理

Apache Impala 分析引擎,架构由四个部分组成:

  • 1)、Hive MetaStore:由Hive MetaStore管理元数据(比如表、数据库、分区信息等)

  • 2)、Impala Server服务:守护进程,Impalad

    image-20210531164850621

  • 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分布式文件系统,否则出错。

1613896374570

Impalad服务(守护进程)内部三个部分组成:

  • 第一部分、Query Planner 查询计划器
    • 当Impalad服务接收客户端发送请求,比如SQL查询语句,将SQL转换为查询计划(任务)
  • 第二部分、Query Coordinator查询协调器
    • 将查询计划(任务),发送到所需的Impalad服务中QueryExecutor执行器
  • 第三部分、Query Executor查询执行器
    • 执行手动查询计划(执行任务)并将查询结果返回给查询协调器。

08-[理解]-即席查询之Impala 查询流程

​ Impala分析引擎,在进行查询分析数据时流程,前面已经提到Impalad服务有三部分组成:PlannerCoordinatorExecutor

1613897852722

​ 当用户编写SQL提供给Impalad服务以后,就需要转换SQL为查询计划,分发查询计划任务到各个Impalad服务,进行查询分析操作,最后给用户返回结果。

1613898057072

具体流程如下所示:

  • 1)、客户端通过ODBC、JDBC、或者Impala shell向Impala集群中的任意节点发送SQL语句,这个节点的impalad实例作为这个查询的协调器(coordinator)

1616317232100

  • 2)、Impala解析和分析这个查询语句来决定集群中的哪个impalad实例来执行某个任务,HDFS和HBase给本地的impalad实例提供数据访问

1616317273428

  • 3)、各个impalad向协调器impalad返回数据,然后由协调器impalad向client发送结果集

1616317315506

扩展:以前搜狐畅游游戏公司,对每个新的游戏数据分析,架构使用Impala分析

image-20210531171555613

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区),文章链接,文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件至:cloudbbs@huaweicloud.com进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容。
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。