遥遥领先!鲲鹏ARM架构下国产数据同步能力大幅提升16.9倍
在上篇文章《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环境下做了大量优化:
- 内存映射文件和零拷贝技术:为了最大限度地减少I/O开销,Zeta Engine采用了内存映射(mmap)技术和零拷贝(zero-copy)技术,直接在内存中操作文件数据。这样不仅加快了数据处理速度,还降低了系统资源的消耗。
- 内存对齐:Zeta Engine确保数据结构在内存中的对齐性,有效减少了内存访问的开销。内存对齐优化不仅提高了内存访问的效率,还提升了数据处理的整体性能。
- 高效算法:Zeta Engine使用了适合ARM架构的高效算法来适配RISC指令集,减少不必要的计算和数据移动。通过高效的排序和过滤算法,显著提升数据转换和处理的效率。Zeta Engine算法优化确保了在数据密集型任务中,系统能够保持卓越的性能。
- 多核架构利用: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倍的更多相关文章
- 化鲲为鹏,我有话说 ,鲲鹏ARM架构的优势
首先我在想为什么会用到鲲鹏,我个人认为最重要的还是要掌握自主研发的能力,打破国外关键技术的封锁.鲲鹏芯片完全是华为于自主设计内核,华为云Kunpeng服务器关键计算芯片全自研,提供产品可持续供应能力. ...
- ARM架构下的Docker环境,OpenJDK官方没有8版本镜像,如何完美解决?
为什么需要ARM架构下的OpenJDK8的Docker镜像? 对现有的Java应用,之前一直运行在x86处理器环境下,编译和运行都是JDK8,如今在树莓派的Docker环境运行(或者其他ARM架构电脑 ...
- 代码 or 指令,浅析ARM架构下的函数的调用过程
摘要:linux程序运行的状态以及如何推导调用栈. 1.背景知识 1.ARM64寄存器介绍: 2.STP指令详解(ARMV8手册): 我们先看一下指令格式(64bit),以及指令对于寄存机执行结果的影 ...
- Redis面试热点工程架构篇之数据同步
温馨提示 更佳阅读体验:[决战西二旗]|Redis面试热点之工程架构篇[2] 前言 前面用了3篇文章介绍了一些底层实现和工程架构相关的问题,鉴于Redis的热点问题还是比较多的,因此今天继续来看工程架 ...
- Windows下多线程数据同步互斥的有关知识
对于操作系统而言,在并行程序设计中难免会遇到数据同步和共享的问题,本文针对这个问题,以windows系统为例回顾一下资源同步的相关问题.要点如下: 1.同步和数据共享 数据征用 2.同步原语 ...
- Arm架构下VUE环境的安装
最近因为项目需要在arm环境下搭建vue环境,网上有基于Linux的 教程,路径略有不同,现整理如下 1.安装文件下载 1.下载地址:http://nodejs.cn/download/ 2.选择一个 ...
- ARM架构下linux设备树加载的方法
引入设备树后bootloader加载DTB方法: 1. 标准方法 将linux kernel放到内存地址为<kernel img addr>的内存中. 将DTB放到地址为<dtb a ...
- EF Core下利用Mysql进行数据存储在并发访问下的数据同步问题
小故事 在开始讲这篇文章之前,我们来说一个小故事,纯素虚构(真实的存钱逻辑并非如此) 小刘发工资后,赶忙拿着现金去银行,准备把钱存起来,而与此同时,小刘的老婆刘嫂知道小刘的品性,知道他发工资的日子,也 ...
- NanoPi arm架构下的程序 ./ 运行黑屏 Qt环境可运行
首先之所以QtCreator环境下可直接运行,但是在终端下 ./ 则不能运行(黑屏但是不报错),判断肯定不是程序或者是库的问题.于是猜想是环境问题,即终端环境与QtCreator环境不同. 然后就查看 ...
- 11. MGR技术架构及数据同步、认证机制 | 深入浅出MGR
GreatSQL社区原创内容未经授权不得随意使用,转载请联系小编并注明来源. GreatSQL是MySQL的国产分支版本,使用上与MySQL一致. 目录 1. MGR架构 2. 事务数据同步.认证过程 ...
随机推荐
- format( )函数
在Python中,DETAIL_URL.format(id=id) 是一个字符串格式化的表达式.它通常用于根据一个已定义的字符串模板 DETAIL_URL 来生成一个新的字符串.在这个模板中,会包含一 ...
- pytest_terminal_summary重写收集测试报告并发送邮件,报错"Argument(s) {'Config'} are declared in the hookimpl but can not be found in the hookspec"
步骤: 1.conftest.py文件,重写pytest_terminal_summary(terminalreporter, exitstatus, config) 2.run执行pytest.ma ...
- MYSQL-check管理
mysql这个东西对于管理员并不友好,看起来还没有成品.就拿亲儿子workbeanch来说吧,功能也不是很齐全,速度也一般般,否则sqlyog之类的早没有什么活路了. 社区版的支持非常薄弱(商业版不太 ...
- Numpy技巧: 由label获得相等矩阵
Numpy技巧: 由label获得相等矩阵 假设Label为: [ABAC] , 如何方便的得到一个矩阵, 其元素i,j表示第i位和第j位相等呢? 先把Label复制扩展成: m,m 的 ...
- Nginx配置以及热升级
目录 Nginx详解 1. Nginx关键特性 2. Nginx配置 2.1 event 2.2 http 2.2.1 log_format 2.2.2 sendfile 2.2.3 tcp_nopu ...
- Spring的三种依赖注入的方式
1.什么是依赖注入 依赖注入(Dependency Injection,简称DI),是IOC的一种别称,用来减少对象间的依赖关系. 提起依赖注入,就少不了IOC. IOC(Inversion of C ...
- Blazor Server App Cannot find the fallback endpoint specified by route values
github官方issues中提到的解决方案,CreateBuilder时指定项目绝对路径可以解决. 1 // 指定项目路径,也可以用Assembly.GetCallingAssembly获取 2 c ...
- 网易传媒基于 Arctic 的低成本准实时计算实践
网易传媒大数据实际业务中,存在着大量的准实时计算需求场景,业务方对于数据的实效性要求一般是分钟级:这种场景下,用传统的离线数仓方案不能满足用户在实效性方面的要求,而使用全链路的实时计算方案又会带来较高 ...
- 首届 DIVE 精彩回顾丨践行企业数字化,基础软件如何创新
"墙高基下,虽得必失."在构建数字企业大厦的工程中,基础软件的重要性不言而喻.但对于各行各业而言,面向传统经营模式设计的基础软件已经难以支撑数字业务的创新,唯有汲取专业团队的经验, ...
- WebGL加载本地模型
前言 大部分的webgl框架,比如threejs和babylon等,都可以加载obj和gltf模型. 我们的引擎,基于three封装,同样有加载模型的loader,因此加载obj和gltf模型也是很简 ...