在上篇文章《2.6倍!WhaleTunnel客户POC实景对弈DataX》发布之后,一个客户突然向我们控诉其苦DataX久矣,因为是在信创的鲲鹏ARM CPU上运行 ,每天同步需要很长时间,问我们可以不可以帮忙解决。

提起信创ARM CPU,大数据同仁们是又爱又恨,爱是因为价格真的便宜,恨是因为做大数据任务真的是不行,性能比X86系列慢不是1-2倍,所以搭建大数据平台一般都必选X86,避免使用ARM,要不用的机器个数远超过X86服务器。

ARM CPU真的处理大数据不行吗

ARM CPU 使用了RISC指令集(X86使用的是CISC),RISC有指令执行速度快和优化并行处理的特点,它非常适合于需要高吞吐量和并行处理的计算任务,而CISC架构由于其指令集的复杂性和灵活性,在某些特定应用中可能更适合处理复杂计算。所以在大数据复杂计算领域,X86服务器有天然的优势。

而在数据同步领域里,ARM架构反而有一些先天优势:

  • ARM处理器和南桥、网卡、SAS存储器集成在一起的,在内存带宽、IO带宽和网络带宽方面均有显著提升,内存通道数量,网络通道数量都会高于X86 CPU,而这在数据同步当中是很重要的计算参数。
  • RISC指令执行速度快,并行度高,在数据同步这种没有复杂数据计算的场景,理论效率要高于CISC。
  • CPU核数高于X86 CPU,一般一颗CPU都有32-64个内核,2颗CPU就有64-128个内核,结合RISC指令集的效果,在同步领域里反而瓶颈会在带宽、CPU通道这里。

综上,我们看到在同步领域,ARM CPU是有先天优势的,但是为什么在很多大数据场景下,相应的软件发挥不出来效果呢?主要是因为引擎核心没有针对ARM CPU的特性进行优化,利用传统的X86设计的引擎内核运行ARM的服务器上,效果一定不会好。

WhaleTunnel针对ARM CPU优化

《WhaleStudio 2.6正式发布,WhaleTunnel同步性能与连接器数量再创新高!》一文中可以看到,WhaleTunnel 2.6版本在ARM CPU环境下做了大量优化:

  1. 内存映射文件和零拷贝技术:为了最大限度地减少I/O开销,Zeta Engine采用了内存映射(mmap)技术和零拷贝(zero-copy)技术,直接在内存中操作文件数据。这样不仅加快了数据处理速度,还降低了系统资源的消耗。
  2. 内存对齐:Zeta Engine确保数据结构在内存中的对齐性,有效减少了内存访问的开销。内存对齐优化不仅提高了内存访问的效率,还提升了数据处理的整体性能。
  3. 高效算法:Zeta Engine使用了适合ARM架构的高效算法来适配RISC指令集,减少不必要的计算和数据移动。通过高效的排序和过滤算法,显著提升数据转换和处理的效率。Zeta Engine算法优化确保了在数据密集型任务中,系统能够保持卓越的性能。
  4. 多核架构利用:Zeta Engine充分利用ARM CPU的多核架构,将ETL任务分解为更小的任务,进行多线程或多进程并行执行。通过并行化处理,显著缩短了数据处理的时间,提升了系统的吞吐量。

在这个优化场景下,WhaleTunnel可以充分利用ARM CPU多核、内存、网络带宽大、处理简单数据场景效率高的优势。

WhaleTunnel在鲲鹏信创ARM CPU下的实测,快16.9倍!

回到开头的场景,我们直接在客户1台 1CPU的信创服务器下进行了部署。

在部署解压缩的时候,我们心凉了一半。 正常在X86环境下是需要2-3分钟就可以解压完成的包,但在这台ARM服务器上解压缩了1多个小时还没有完成,这个CPU效率真的让我们测试的擦把汗。

客户给出了这台机器做数据同步的DataX时间和同步速率如下,可以看到同步速率在2.46MB/s,12万条记录用了18.5分钟(感觉和我们在ARM环境下解压缩效率差不多):

经过漫长的解压缩和安装步骤后,我们程序员战战兢兢进行了现场POC测试。惊喜来了!测试结果显示,在客户这个环境下,整个表平均同步速率是41.72MB/s,峰值达到62.23MB/s,同步数据20万条,平均速度是DataX的16.9倍!

瞬间,程序员们觉得过去几个月的加班没有白费,流下了激动的口水(我答应他们如果在客户实际场景下真的优化有效果,请大家吃大餐)。

小结:信创ARM能不能打还是看大数据引擎核心有没有做优化

WhaleTunnel的ARM场景下的实测给大数据平台工程师们带来了福音,在信创大趋势下,在数据集成和数据同步领域里,终于有一个可以放心大胆使用信创ARM CPU平台而不用担心性能拖后腿的工具了。

可以看到,使用WhaleTunnel+信创ARM CPU环境既可以满足国产信创的要求,又会大幅节约成本,还会得到强大的数据同步处理性能,一箭三雕!

如果您对数据集成和同步有需求,对WhaleTunnel感兴趣,欢迎咨询详情(V 177 4359 2110)。

白鲸开源

白鲸开源是一家开源原生的DataOps商业公司,是国家高新技术企业,由多个Apache Foundation Member成立,80%员工都是 Apache Committer,运营2个全球Apache开源项目(DolphinScheduler, SeaTunnel)。白鲸开源已根据全球最佳实践发布商业版产品WhaleStudio(含白鲸数据调度平台WhaleScheduler和白鲸数据集成平台WhaleTunnel)。我们致力于打造下一代开源原生的DataOps 平台,助力企业在大数据和云时代,智能化地完成多数据源、多云及信创环境的数据集成、调度开发和治理,以提高企业解决数据问题的效率,提升企业分析洞察能力和决策能力。

了解更多

公司网站: www.whaleops.com

邮箱: xiyan@whaleops.com

本文由 白鲸开源 提供发布支持!

遥遥领先!鲲鹏ARM架构下国产数据同步能力大幅提升16.9倍的更多相关文章

  1. 化鲲为鹏,我有话说 ,鲲鹏ARM架构的优势

    首先我在想为什么会用到鲲鹏,我个人认为最重要的还是要掌握自主研发的能力,打破国外关键技术的封锁.鲲鹏芯片完全是华为于自主设计内核,华为云Kunpeng服务器关键计算芯片全自研,提供产品可持续供应能力. ...

  2. ARM架构下的Docker环境,OpenJDK官方没有8版本镜像,如何完美解决?

    为什么需要ARM架构下的OpenJDK8的Docker镜像? 对现有的Java应用,之前一直运行在x86处理器环境下,编译和运行都是JDK8,如今在树莓派的Docker环境运行(或者其他ARM架构电脑 ...

  3. 代码 or 指令,浅析ARM架构下的函数的调用过程

    摘要:linux程序运行的状态以及如何推导调用栈. 1.背景知识 1.ARM64寄存器介绍: 2.STP指令详解(ARMV8手册): 我们先看一下指令格式(64bit),以及指令对于寄存机执行结果的影 ...

  4. Redis面试热点工程架构篇之数据同步

    温馨提示 更佳阅读体验:[决战西二旗]|Redis面试热点之工程架构篇[2] 前言 前面用了3篇文章介绍了一些底层实现和工程架构相关的问题,鉴于Redis的热点问题还是比较多的,因此今天继续来看工程架 ...

  5. Windows下多线程数据同步互斥的有关知识

     对于操作系统而言,在并行程序设计中难免会遇到数据同步和共享的问题,本文针对这个问题,以windows系统为例回顾一下资源同步的相关问题.要点如下: 1.同步和数据共享  数据征用 2.同步原语 ...

  6. Arm架构下VUE环境的安装

    最近因为项目需要在arm环境下搭建vue环境,网上有基于Linux的 教程,路径略有不同,现整理如下 1.安装文件下载 1.下载地址:http://nodejs.cn/download/ 2.选择一个 ...

  7. ARM架构下linux设备树加载的方法

    引入设备树后bootloader加载DTB方法: 1. 标准方法 将linux kernel放到内存地址为<kernel img addr>的内存中. 将DTB放到地址为<dtb a ...

  8. EF Core下利用Mysql进行数据存储在并发访问下的数据同步问题

    小故事 在开始讲这篇文章之前,我们来说一个小故事,纯素虚构(真实的存钱逻辑并非如此) 小刘发工资后,赶忙拿着现金去银行,准备把钱存起来,而与此同时,小刘的老婆刘嫂知道小刘的品性,知道他发工资的日子,也 ...

  9. NanoPi arm架构下的程序 ./ 运行黑屏 Qt环境可运行

    首先之所以QtCreator环境下可直接运行,但是在终端下 ./ 则不能运行(黑屏但是不报错),判断肯定不是程序或者是库的问题.于是猜想是环境问题,即终端环境与QtCreator环境不同. 然后就查看 ...

  10. 11. MGR技术架构及数据同步、认证机制 | 深入浅出MGR

    GreatSQL社区原创内容未经授权不得随意使用,转载请联系小编并注明来源. GreatSQL是MySQL的国产分支版本,使用上与MySQL一致. 目录 1. MGR架构 2. 事务数据同步.认证过程 ...

随机推荐

  1. mysql删除主键索引,删除索引语法

    mysql删除主键索引,删除索引语法 ### Incorrect table definition; there can be only one auto column and it must be ...

  2. Diffusers实战

    Smiling & Weeping ---- 一生拥有自由和爱,是我全部的野心 1. 环境准备 %pip install diffusers from huggingface_hub impo ...

  3. .NET8操作Mysql,Pomelo.EntityFrameworkCore.MySql版本目前最高只有7.0解决办法

    Pomelo.EntityFrameworkCore.MySql7.0是不支持.NET8的,但现在Pomelo.EntityFrameworkCore.MySql的最新版本只有7.0 因为 Pomel ...

  4. navicat 连接oracle 失败

    问题: 1.使用Navicat连接Oracle数据库时,报错ORA-12504: TNS:listener was not given the SERVICE_NAME in CONNECT_DATA ...

  5. python logging日志没有写入到指定文件,写到其他项目的日志文件

    背景: 项目A为主框架项目,使用到了项目B的方法 项目A.B均有封装好的日志方法,且均在封装好的日志文件里面,增加了logger = MyLogger().info,其他文件要使用日志时,引入logg ...

  6. AGC044C Strange Dance

    在2020年A卷省选day2t2有类似操作trie的技巧. 题目链接 显然是建一棵三叉trie树,代表0/1/2 对这棵trie树,我们需要支持子树交换和全局加1 考虑第一个操作怎么做?直接打个懒标记 ...

  7. Linux Driver : i2c-gpio

    # Linux Driver : i2c-gpio https://www.cnblogs.com/haoxing990/p/4718834.html https://blog.csdn.net/ji ...

  8. QT学习:02 界面布局管理

    --- title: framework-cpp-qt-02-界面布局管理 EntryName: framework-cpp-qt-02-ui-layout-manage date: 2020-04- ...

  9. 金蝶云·苍穹追光者开发大赛,点燃高校AI应用创新之火

    在 2024 年的政府工作报告中,"人工智能 +" 行动被提出,标志着人工智能成为推动我国新质生产力发展的关键力量.与此同时,今年的高考作文有一道题目也聚焦于人工智能,再次凸显了这 ...

  10. 什么是JS执行上下文?

    我们都知道,JS代码的执行顺序总是与代码先后顺序有所差异,当先抛开异步问题你会发现就算是同步代码,它的执行也与你的预期不一致,比如: function f1() { console.log('听风是风 ...