我是美光科技的首席存储解决方案工程师Dennis Lattka。这个头衔的真正含义是,我要致力于确定如何利用闪存存储改善工作负载应用的性能和结果。为此,我决定对大数据生态系统中最常用的分布式消息传递系统之一的Apache Kafka进行评估,测试如何以最佳方式将美光固态存储应用于 Apache Kafka,以及将产生怎样的收益。
Apache Kafka介绍
通过对所涉及的各种资源(即 CPU、内存、磁盘活动和网络)进行监控,我发现主要的瓶颈因素依次为磁盘和网络。
一切取决于吞吐量
通过 Apache Kafka我发现,吞吐量决定一切。Kafka 开发人员在将写入数据直接传递到内核页面缓存方面做得非常出色,最大限度地减少了与 I/O 相关的问题。但是,无论这项开发功能如何出色,I/O 最终仍会转化为对 Kafka 分区(主题日志文件)的连续写入。因此所使用的磁盘的吞吐量越高,性能提升幅度就会越大。
在弄清楚了如何以最佳方式测试 Apache Kafka 以及使用哪些参数效果最好之后,我使用其内置的发生器测试脚本进行了一次简单的测试。3 个发生器共向一个 Kafka 代理发送了 6 亿条 100 字节的消息。
测试包括以下内容:(没有进行调整,仅采用默认配置。)
-总共产生了 600 个主题。
-为每个发生器分配了 200 个特定于该发生器的主题。
- 每个发生器为每个主题创建了 100 万条消息。
-采用的消息大小为每条消息 100 字节。
使用的硬件:
-每个服务器配备 1 个代理和 3 个发生器,采用相同配置。
-两个英特尔(R)至强(R) CPU E5-2690 v3 @ 2.60GHz 处理器。
-384GB 内存
-两个固定在 ALB 模式的 10Gb 网卡。
使用 6TB 7.2k 硬盘、美光5100 ECO 1920GB 固态硬盘和美光9100 Pro 3.2TB NVMe硬盘进行了对比。
在每次测试中,Apache Kafka 代理分区都位于进行测试的硬盘上。
结果如下:
从上表可以看出,吞吐量越高,每秒的 I/O 就越高,这对于 Apache Kafka 意味着每秒可以处理更多数量的连续消息(显示单位为 MB/s)。
结论
在 Apache Kafka 配置中采用吞吐量更高的磁盘设备(如美光5100 系列固态硬盘或美光 NVMe 固态硬盘)将显著提高 Apache Kafka 的性能。
全部0条评论
快来发表一下你的评论吧 !