上海启嘟渡科技商贸有限公司
SEARCH

与我们合作

我们专注提供互联网一站式服务,助力企业品牌宣传多平台多途径导流量。
主营业务:网站建设、移动端微信小程序开发、营销推广、基础网络、品牌形象策划等

您也可通过下列途径与我们取得联系:

微 信: wxyunyingzhe

手 机: 15624122141

邮 箱:

Spark的tungsten是什么

更新时间:2025-01-08 05:10:44

Tungsten项目在2015年启动,针对数据处理中CPU和内存限制问题进行优化。它主要分为以下几个部分:

1. 内存管理和二进制处理:Tungsten项目对内存管理进行了优化,以解决Java对象占用内存空间大和JVM垃圾回收开销大的问题。它使用了紧凑的二进制格式Unsafe Row数据结构,用于存储数据。Unsafe Row是一种字节数组,可以存储按Schema顺序排列的数据,减少了对象生成,降低了内存占用和GC压力。同时,Tungsten项目引入了基于内存页的内存管理模式,统一管理堆内和堆外内存,进一步提升了数据存储效率和GC效率。

2. 缓存敏感计算:Tungsten项目设计了缓存优化的数据结构,提高缓存命中率和缓存局部性,主要应用在UnsafeExternalSorter和UnsafeInMemorySorter的实现上。通过将键值对与记录指针放在一起存储,避免了内存的随机访问,提高了缓存的效率。

3. 动态代码生成:Tungsten项目的动态代码生成分为两个部分,一是基本表达式的代码生成,二是全阶段代码生成(WSCG)。WSCG将同一Stage内操作符之间的调用关系捏合成一个统一的函数,减少虚函数分派,内存中的中间数据与CPU寄存器交互,利用循环展开和SIMD指令优化代码执行效率。编译器和CPU能够更有效地优化动态生成的代码。

Tungsten项目的优化策略主要集中在内存管理和二进制处理、缓存敏感计算和动态代码生成三个方面,以解决Spark中CPU和内存的性能瓶颈问题。通过这些优化措施,Tungsten项目提高了Spark的执行效率,实现了对CPU和内存使用的优化,达到了最初的优化目标。

多重随机标签

猜你喜欢文章

QQ客服 电话咨询