遥遥领先!鲲鹏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. 事务数据同步.认证过程 ...
随机推荐
- restful接口返回JSONObject和父类抽象实现类设计,请求头获取sign和支付宝RSA签名验签工具类方法
restful接口返回JSONObject和父类抽象实现类设计,请求头获取sign和支付宝RSA签名验签工具类方法 1.JSONObject可以通用数据的灵活性,类似Map数据,数据字段不清晰.具体返 ...
- mysql删除主键索引,删除索引语法
mysql删除主键索引,删除索引语法 ### Incorrect table definition; there can be only one auto column and it must be ...
- 漏洞复现之CVE-2012-1823(PHP-CGI远程代码执行)
关于CGI知识点 `CGI模式下的参数: -c 指定php.ini文件的位置 -n 不要加载php.ini文件 -d 指定配置项 -b 启动fastcgi进程 -s 显示文件源码 -T 执行指定次该文 ...
- Spring之webMvc异常处理
异常处理可以前端处理,也可以后端处理. 从稳妥的角度出发,两边都应该进行处理. 本文专门阐述如何在服务端进行http请求异常处理. 一.常见的异常类型 当我们做http请求的时候,会有各种各样的可能错 ...
- 在Linux驱动中使用regmap
背景 在学习SPI的时候,看到了某个rtc驱动中用到了regmap,在学习了对应的原理以后,也记录一下如何使用. 介绍 在Linu 3.1开始,Linux引入了regmap来统一管理内核的I2C, S ...
- 一文搞懂到底什么是 AQS
前言 日常开发中,我们经常使用锁或者其他同步器来控制并发,那么它们的基础框架是什么呢?如何实现的同步功能呢?本文将详细讲解构建锁和同步器的基础框架--AQS,并根据源码分析其原理. 一.什么是 AQS ...
- Quarkus初体验:动态加载和原生部署
在前面的文章<尝试官方的第一个SpringNative 0.11程序>中提到过Quarkus这门技术.这里就简单演示一下它的两个主要功能:Live Coding和Native Build. ...
- WPF实现TextBlock呼吸灯效果
实现代码 <TextBlock Text="录像中" FontSize="48" Foreground="#ED4646" Horiz ...
- AOP模板
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.sp ...
- 洛谷P2864
来一发在洛谷的第一篇题解 解析 首先从原点出发回到原点会形成一个环 要计算在环上的路程,首先我们要破环 利用建墙法破环 可以选取任意一个边缘上的树,往上或者往下或者往左往右建立一堵墙'|' 这样利用b ...