其他分享
首页 > 其他分享> > Flink 1.10 和 Hive 3.0 性能对比(附 Demo 演示 PPT)

Flink 1.10 和 Hive 3.0 性能对比(附 Demo 演示 PPT)

作者:互联网

作者:李劲松(之信)
如今的大数据批计算,随着 Hive 数仓的成熟,普遍的模式是 Hive metastore + 计算引擎。常见的计算引擎有 Hive on MapReduce、Hive on Tez、Hive on Spark、Spark integrate Hive、Presto integrate Hive,还有随着 Flink 1.10 发布后生产可用的 Flink Batch SQL。
Flink 作为一个统一的计算引擎,旨在提供统一的流批体验以及技术栈。Flink 在 1.9 合并了 Blink 的代码,并在 1.10 中完善了大量的功能以及性能,可以运行所有 TPC-DS 的查询,性能方面也很有竞争力,Flink 1.10 是一个生产可用的、批流统一的 SQL 引擎版本。
在搭建计算平台的过程中,性能和成本是选取计算引擎的很关键的因素。为此,Ververica 的 flink-sql-benchmark [1] 项目提供了基于 Hive Metastore 的 TPC-DS Benchmark 测试的工具,为了测试更靠近真正的生产作业:

我们在 20 台机器上测试了三种引擎:Flink 1.10、Hive 3.0 on MapReduce、Hive 3.0 on Tez,从两个维度测试了引擎的成绩:

结果摘要:

 

 

运行总时间的对比成绩是:


Queries 几何平均的对比成绩是:


本文只测试了上述引擎和 10TB 的数据集,读者可以根据自己的集群规模,选取特定的数据集,使用 flink-sql-benchmark 工具来运行更多引擎的对比测试。
Benchmark 详情
Benchmark 环境
具体环境及调优说明:

Benchmark 步骤
■ 环境准备

  1. 准备 Hadoop (HDFS + YARN) 环境
  2. 准备 Hive 环境

■ 数据集生成

  1. 分布式生成 TPC-DS 数据集,并加载 TEXT 数据集到 Hive,原始数据是 Csv 的格式。建议分布式生成数据,这也是个比较耗时的步骤。(flink-sql-benmark 工具中集成了 TPC-DS 的工具)
  2. Hive TEXT 表转换为 ORC 表,ORC 格式是常见的 Hive 数据文件格式,行列混合的存储有利于后续的快速分析,也有很高的压缩比。执行 Query:create table NAMEstoredas{FILE} as select * from SOURCE.{NAME};


如图,生成了 TPC-DS 官方说明的 7 张事实表和 17 张维表。

  1. 分析 Hive 表,统计信息对于分析作业的查询优化非常重要,对于复杂的 SQL,Plan 的二手游戏账号购买平台地图执行效率有很大的差异。Flink 不但支持读取 Hive 的 Table 统计信息,也支持读取 Hive 的分区统计信息,根据统计信息进行 CBO 的优化。执行命令:analyze table ${NAME} compute statistics for columns;


■ Flink 运行 Queries

  1. 准备 Flink 环境,搭建 Flink Yarn Session 环境,推荐使用 Standalone 或者 Session 模式,可以复用 Flink 的进程,加快分析型作业的速度。
  2. 编写代码运行 Queries,统计执行时间等相关信息,具体代码可以直接复用 flink-sql-benchmark 里的 flink-tpcds 工程。
  3. FLINK_HOME/flink run 运行程序,执行所有 queries,等待执行完毕,统计执行时间。


■ 其它引擎运行 Queries

  1. 根据其它引擎的官网提示,搭建环境。
  2. 得益于标准的 Hive 数据集,可以方便的使用其它引擎来读取 Hive 数据。
  3. 在运行时,值得注意的是需要达到集群的瓶颈,比如 Cpu、比如 Disk,一定是有瓶颈出现,才能证明运行方式和参数是比较合理的,为此,需要一些性能调优。

Benchmark 分析
Flink 1.10
Flink 1.9 在合并 Blink 代码的时候,就已经完成了很多工作:深度 CodeGeneration、Binary 存储与计算、完善的 CBO 优化、Batch Shuffler,为后续的性能突破打下了扎实的基础。
Flink 1.10 继续完善 Hive 集成,并达到了生产级别的 Hive 集成标准,其它也在性能和开箱即用方面做了很多工作:

 

Flink 参数分析
Flink 1.10 做了很多参数的优化,提高用户的开箱即用体验,但是由于批流一体的一些限制,目前也是需要进行一些参数设置的,这里本文粗略分析下。
■ Table 层参数:

■ TaskManager 参数分析:

■ 网络参数分析

■ 调度参数分析

其它 timeout 相关参数是为了避免调度和运行过程中,大数据量导致的网络抖动,进而导致作业失败的问题。
Flink 1.11 及后续规划
后续 Flink 社区会在完善功能的同时进一步夯实性能:

标签:1.10,Demo,性能,Flink,Hive,引擎,内存
来源: https://www.cnblogs.com/qiucunxin/p/15392599.html