Impala 在网易大数据的优化和实践

这篇具有很好参考价值的文章主要介绍了Impala 在网易大数据的优化和实践。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

导读: 网易大数据平台的底层数据查询引擎,选用了 Impala 作为 OLAP 查询引擎,不但支撑了网易大数据的交互式查询与自助分析,还为外部客户提供了商业化的产品与服务。今天将为大家分享下 Impala 在网易大数据的优化和实践。

01 Impala 的定位及优势

Impala 有哪些优势,让我们选择 Impala 作为网易内部的 OLAP 查询引擎?

1. Impala 在数据处理中的角色

先来看一下 Impala 在数据处理中的角色。

Impala 在网易大数据的优化和实践

对于数据量较少的场景,例如百万数据以下的情况,可以采用传统的关系型数据库,如 MySQL 或者 PostgreSQL 等,或者一些文档数据库,比如 MongoDB 等。随着数据量的增大,达到上亿级别时,一般选择分析型数仓来存储,并使用 OLAP 引擎来查询。此等规模的数据查询,对响应时间的要求虽然比关系型数据库要低,但一般也要求在秒级返回查询结果,不能有太大的延迟。Impala、Presto、Greenplum 等都在此列。当规模继续扩大到上百亿以上时,则会选择批处理引擎,如 Hive、Spark 来进行数据处理。

今天分享的 Impala 就是针对分析型数仓的查询引擎。分析型数仓有很多种建模方式。

Impala 在网易大数据的优化和实践

以 Druid 和 Click House 为代表的宽表模型,还有以 Impala 等为代表的星型/雪花型的建模方式。我们将 Impala 作为通用的查询引擎,比较典型的应用场景有自助数据分析、BI 报表等。在分享的第三部分,有关于 Impala 在网易大数据平台“猛犸”中的介绍,以及在网易云音乐中的实际使用场景的说明。

2. Impala 的优势

网易为什么选择 Impala 作为 OLAP 查询引擎,Impala 到底有哪些优势?Impala 的优势,总结起来包括:

  • MPP 架构,去中心化

  • 优秀的查询性能

  • 友好的 WebUI 界面

  • 完全兼容 Hive 元数据

  • Apache 顶级项目,社区活跃度高

  • 支持多种数据格式( Parquet/ORC 等)

  • 与 Kudu 结合使用,实时数仓

① 去中心化的 MPP 并行架构

Impala 在网易大数据的优化和实践

相比于传统的关系型数据库,MPP 架构可以充分发挥多服务器的特点,将数据量比较大的操作,分散在多台服务器上并行处理。这些复杂的大数据量的操作,对于单台服务器来说是无法完成的任务。

Impala 还区别于其他 MPP 架构的引擎的一点,是 Impala 有多个 Coordinator 和 Executor,多个 Coordinator 可以同时对外提供服务。多 Coordinator 的架构设计让 Impala 可以有效防范单点故障的出现。

② 优秀的查询性能

Impala 在网易大数据的优化和实践

Impala 支持 CBO(基于代价的执行优化),除此之外,Impala 还对 Catalog 进行了缓存。缓存的信息包括:库和表的信息、HDFS 数据库、统计信息等。元数据都缓存在了 Impala 内部,在做 CBO 时,能够发挥更大的优势,做出更优的选择。除此之外,Impala 同时具有典型的 OLAP 引擎应有的特征:静态代码生成支持 LLVM、JIT;支持 HDFS 本地读区,减少访问 NameNode、DataNode 和数据网络传输的开销,对性能有比较大的提升;还有算子下推,runtime filter 在 Join 时,对与 join 条件之外的列可以进行动态过滤。

从我们实际使用效果来说,Impala 性能优势非常明显。前段时间我们对 Impala、presto 和 spark3.0 进行了对比测试。测试用例选择 tpcds,并行节点 8 个。

Impala 在网易大数据的优化和实践

总的来说,Impala 相比 Presto 有明显的优势,相比 Spark 3.0 也有一定的优势。Spark 3.0 对性能做了很多优化和改进,相比之下 Impala 性能有一些优势,不过 Impala 因为支持的 SQL 类型少一些,有一些 tpcds 的测试用例并不能完成。

③ 友好的 WebUI 界面

Impala 在网易大数据的优化和实践

一般来说,大数据查询引擎的查询计划,比关系型数据库的查询计划复杂的多。Impala 提供了一个比较友好的 WebUI,在这个界面上,能看到完整的执行计划、内存使用情况、异常查询分析,也可以通过界面终止查询语句。

此外,Impala 的优势还体现在:完全兼容 Hive 元数据、Apache 顶级项目有较高的社区活跃度、支持多种数据格式(Parquet、ORC 等)、可以与 Kudu 结合使用等。

02 对 Impala 的一些增强和优化

在我们生产实践中,也发现了 Impala 的一些不足,因此网易大数据团队对 Impala 进行了一些优化和增强。包括以下几个方面:

  • Impala 管理服务器

  • 元数据同步增强

  • 基于 zookeeper 的服务高可用

  • 支持更多存储后端

  • 其他增强和优化

1. Impala 管理服务器

Impala 已经提供了 WebUI 的情况下,为什么需要一个管理服务器?

其中一个原因,是社区版的 WebUI 是非持久化的,一旦 Impalad 异常退出,这些信息都会丢失。

Impala 在网易大数据的优化和实践

我们通过 MySQL 存储 WebUI 上的信息,将统计信息、执行信息等重要信息保存到 MySQL 数据库中,实现持久化保存。在此基础上,管理平台给我们带来许多增值收益。相比于原生的 WebUI,增强版的 WebUI 可以汇总各个 coordinator 执行的 SQL 语句,直观展示当前执行的 SQL。

还可以作为集群持续优化的平台。因为记录了历史执行的 SQL,可以为后续 SQL 优化提供依据,比如集群 SQL 的性能指标、随时间变化的性能表现,以及大部分 SQL 的执行时间。通过统计 SQL 执行失败的次数,出错 SQL,为定位和回溯问题提供帮助。

Impala 在网易大数据的优化和实践

2. 元数据同步增强

Impala 对元数据的缓存,一方面大幅提升了查询性能,但另一方面,元数据更新也带来了新的问题。因为数据可以不通过 Impala 客户端,而通过其他组件比如 Hive 进行更新,这就让 Impala 无法感知到元数据的更新。而老旧的元数据会导致查询失败或者性能下降。因此,需要一个机制能够让 Impala 及时感知元数据的更新。社区版提供了 INVALIDATE METADATA 这一命令,可以手动刷新元数据。不过如果一些用户不熟悉这个操作,没有更新 Impala 缓存的元数据,就会导致查询的问题。怎么解决这样的问题?

Impala 在网易大数据的优化和实践

网易对此进行优化,引入了元数据自动同步机制:在 Hive 进行 DDL 相关操作时,记录操作日志,Impala 通过消费操作日志,进行必要的 Invalidate Metadata 的操作,无须人工操作,大大提高了元数据缓存的可用性和实时性。对于提升 Impala 的查询性能,降低查询错误都有很大的帮助。

另外一个是元数据的黑白名单机制,配合 Impala 不同的元数据加载方式。对于启动时加载元数据的,配置黑名单,屏蔽不需要通过 Impala 查询的表;对于延迟加载元数据的,配置白名单,即刻加载元数据,避免首次查询时延迟过大。

另外需要提醒的是,Impala 3.x 版本在元数据缓存管理上有了极大的改进,网易大数据团队也在调研中,准备从 2.12 升级到 3.4 版本。

3. 基于 ZK 的服务高可用

虽然每一个 Impalad 都可以作为 Coordinator,对外提供访问服务,接受客户端请求,但是缺乏一个路由机制。当一个 client 连接的特定 coordinator 失效之后,就无法在进行查询了。

Impala 在网易大数据的优化和实践

网易大数据团队参考 Hive 的实现,引入 zookeeper 作为访问代理,客户端首先通过 zookeeper 找到可用的 coordinator 节点,然后再提交 SQL 查询请求。通过这种方式,提供了更健壮的查询服务模式。

4. 支持更多存储后端

对于后端存储的支持,网易团队增加了对 iceberg 表的创建和查询的支持。已经在云音乐业务上使用,并且贡献给了 Impala 社区。

Impala 在网易大数据的优化和实践

其他后端还包括对 Alluxio 的支持,使用 Alluxio 作为 Impala 和 HDFS 之间的二级缓存。这方面的详细信息,可以搜索《网易严选:基于 Alluxio+Impala 深度融合架构的 BI 系统性能优化实践》。

此外对接 Elastic Search 查询,充分发挥了 ES 倒排索引的优势。

5. 其他增强和优化

Impala 在网易大数据的优化和实践

其他的增强还有:权限的优化、Hive 多版本适配、支持 JSON,以及社区版的一些 Bug 修正。

03 Impala 在网易的使用案例分析

1. Impala 的部署和使用

Impala 两种部署方式:混合部署与独立部署。混合部署是指 Impala 和其他大数据组件共用 HDFS。而独立部署则是为 Impala 配置独立的 HDFS。独立部署的优势在于 IO 和网络通信都有保障,对性能和稳定性的提升有帮助。但是代价也十分明显:成本上升。

Impala 在网易大数据的优化和实践

Impala 与 Kudu 结合,可以用来构建实时数仓。Kudu 增量写入,定期保存到 HDFS。Kudu 的使用一方面提供了更新数据和删除数据的能力,另一方面也解决了 HDFS 上小文件的问题。而 Impala 可以同时查询 Kudu 和 HDFS 上的数据。

Impala 在网易大数据的优化和实践

网易内部对集群的监控,对接了网易内部的哨兵服务。可以提供准实时的告警能力。运维人员通过设置阈值,订阅告警信息,从而了解集群的监控程度。

此外,对于 Impala 集群的部署和使用,还有几点需要注意:

  • 按照大业务划分不同的集群

  • 按照不同的子业务或者 SQL 类型划分队列

  • coordinator 节点与 executor 节点分开部署

  • 对于机器数比较少的集群,机器上可部署多个节点,增加并发

  • 业务方重试机制,以免 impalad 节点挂掉导致 SQL 失败

  • 通过 impala hint 改变表的 join 方式

  • 结合实际情况参考是否设置 mem_limit ,设置多大 mem_limit

2. 网易大数据中的 Impala

在网易大数据平台“猛犸”中,Impala 位于数据计算层,提供交互式查询的能力,对应的应用场景是自助分析。

Impala 在网易大数据的优化和实践

在网易对外提供的产品和服务中,复杂报表和自助取数,都用到了 Impala。其中自助分析服务适用于有一定 SQL 基础的用户,通过自己写 SQL 语句,查询数据。灵活性比较大,同时门槛也比较高。

Impala 在网易大数据的优化和实践

网易有数的自助取数服务(easyFetch)可以通过拖拽维度和度量,方便的获取数据,并生成图表报告。后端对接的是网易有数的 API。非常适合非专业人员使用数据,发挥出数据的生产力。

Impala 在网易大数据的优化和实践

网易现在内部有 8 个 Impala 集群,超过 200 个节点,最大集群规模超过 60 个节点。除了内部服务外,对外的商业化服务,已经有超过 20 个 Impala 集群。

3. Impala 在云音乐的使用实践

网易云音乐,有 2 个 Impala 集群,超过 60 个节点的规模。主要的应用场景包括:有数报表、自助分析、音乐版权、A/B 测试,easyFetch 等等。绝大部分应用场景下,Impala 的查询时间不超过 2 秒。

Impala 在网易大数据的优化和实践

云音乐 A/B 测试早期使用 Spark 按照小时粒度,完成从 ODS 到 DWD 层的数据清洗工作,之后生成用户分流表和指标统计表,再使用 Spark 关联这两张表的结果写入到 Kudu 中,最后使用 Impala 对接数据,供用户查询。这样数据延迟至少 1~2 小时,有些结果甚至在第二天才能看到。但是对于 A/B 测试,能够实时看到结果才是最好的。

Impala 在网易大数据的优化和实践

对此云音乐团队基于 Flink 做了实时性改造。将 DWS 变成流表,这样 Impala 可以同时查询 T+1 的结果表和流表中的实时数据。A/B 测试的效果就可以近实时的看到了。

今天的分享就到这里,谢谢大家。

作者介绍

温正湖,网易杭研高级数据库技术专家

杭研大数据产品中心 OLTP&OLAP 内核团队负责人。10 年数据库和存储开发经验,专注于数据库、数仓技术和分布式系统架构;累计申请 10+技术发明专利 ( 已授权 8 个 ),《MySQL 内核:InnoDB 存储引擎 卷 1》作者之一。文章来源地址https://www.toymoban.com/news/detail-423825.html

到了这里,关于Impala 在网易大数据的优化和实践的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【大数据入门核心技术-Impala】(一)Impala简介

    目录 一、Impala介绍 二、Impala优势 三、Impala主要功能         Impala是Cloudera公司主导开发的新型查询系统,它提供SQL语义,能查询存储在Hadoop的HDFS和HBase中的PB级大数据。已有的Hive系统虽然也提供了SQL语义,但由于Hive底层执行使用的是MapReduce引擎,仍然是一个批处理过程

    2024年02月16日
    浏览(35)
  • 【网易云信】音画同步测试方法的研究与实践

    随着移动互联网的普及和网络带宽的提高,音视频通话越来越成为人们生活和工作中不可或缺的一部分。音画同步是音视频体验的一个重要指标,在音视频传输过程中,由于不同的传输策略因为网络的干扰,音频和视频往往难以同时到达,即使在网络层面对齐后在设备侧音频

    2024年02月09日
    浏览(37)
  • impala元数据自动刷新

    一.操作步骤 进入CM界面 Hive 配置 搜索 启用数据库中的存储通知(英文界面搜索:Enable Stored Notifications in Database),并且勾选,注意一定要勾选,配置后面的配置不生效。数据库通知的保留时间默认为2天,意味着如果事件通知没有更新超过2天事件将会丢失 二.hive配置参数 hive

    2024年01月20日
    浏览(36)
  • 大数据之 impala教程

    一、什么是Impala? Impala是用于处理存储在Hadoop集群中的大量数据的MPP(大规模并行处理)SQL查询引擎。 它是一个用C ++和Java编写的开源软件。 与其他Hadoop的SQL引擎相比,它提供了高性能和低延迟。 换句话说,Impala是性能最高的SQL引擎(提供类似RDBMS的体验),它提供了访问

    2024年02月15日
    浏览(44)
  • Impala:大数据交互查询工具

    Impala是由Cloudera公司开发的一款开源的大数据交互查询工具,能够对存储在HDFS、HBase上的数据进行快速的交互式SQL查询。Impala可以实现对PB级别的数据的实时分析,其查询速度比基于MapReduce的Hive高出3到90倍。Impala使用了类似于传统的MPP数据库技术,避免了MapReduce引擎的启动开

    2023年04月14日
    浏览(31)
  • 大数据学习:haproxy实现impala的负载均衡

    1.1 在集群中选择一个节点,使用yum方式安装HAProxy服务 1.2 启动与停止HAProxy服务,并将服务添加到自启动列表 3.HAProxy配置Impala负载均衡 1.将 /etc/haproxy 目录下的 haproxy.cfg 文件备份,新建 haproxy.cfg 文件,添加如下配置 主要配置了HAProxy的http状态管理界面、impalashell和impalajdbc的负

    2024年02月10日
    浏览(36)
  • 数据仓库内容分享(十七):Doris实践分享:它做了哪些架构优化和场景优化?

    Apache Doris是一款开源的实时数据仓库,由百度旗下的技术团队开发。它具有高性能、高可靠性、易扩展等特点,能够满足大规模数据实时查询和分析的需求。目前,Apache Doris已经成为国内外众多企业的首选数据仓库解决方案,包括阿里巴巴、美团、京东、滴滴等知名企业。

    2024年02月21日
    浏览(55)
  • 读数据压缩入门笔记01_数据压缩导读

    1.3.2.1. 1972年11月《花花公子》杂志中莱娜•瑟德贝里(Lena Söderberg) 1.4.2.1. MP3 1.4.2.1.1. Napster音乐共享平台 1.4.2.1.2. iPod 1.4.2.1.2.1. iTunes 1.4.2.1.2.2. iPhone 1.5.2.1. MOV 1.7.1.1. 同样的数据传输所需的时间会变短,相应的费用也会减少 1.7.1.2. 分发者的分发成本会降低,消费者的支

    2024年02月06日
    浏览(34)
  • 字节跳动面试题目大数据计算引擎:impala对比hive,Python开发自学技巧

    数据流: 内存使用: 调度: 容错: 适用面: Impala相对于Hive所使用的优化技术 Impala的优缺点 Impala****与Hive的异同 ====================== 数据存储 使用相同的存储数据池都支持把数据储于HDFS, HBase。 元数据 两者使用相同的元数据。 SQL解释处理 比较相似都是通过词法分析生成执

    2024年04月10日
    浏览(49)
  • 千万级数据深分页查询SQL性能优化实践

    如何在Mysql中实现上亿数据的遍历查询?先来介绍一下系统主角:关注系统,主要是维护京东用户和业务对象之前的关注关系;并对外提供各种关系查询,比如查询用户的关注商品或店铺列表,查询用户是否关注了某个商品或店铺等。但是最近接到了一个新需求,要求提供查

    2024年02月11日
    浏览(59)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包