大数据场景中语言虚拟机的应用和挑战

本文分析了大数据场景下JVM和CLR两种主流语言虚拟机的应用,指出面临初始化、“热身”开销、垃圾回收、异构硬件支持及数据格式转换等挑战。现有解决方案包括跳过初始化、减少垃圾回收、异构内存支持优化和数据格式转换优化,但这些方案仍有局限性。未来研究需拓宽应用范围,提高可移植性和安全性,减少数据格式转换开销。
摘要由CSDN通过智能技术生成

点击上方蓝字关注我们

大数据场景中语言虚拟机的应用和挑战

吴明瑜1,2, 陈海波1,2, 臧斌宇1,2

1 领域操作系统教育部工程研究中心,上海 200240

2 上海交通大学软件学院并行与分布式系统研究所,上海 200240

  

摘要语言虚拟机为大数据应用提供了与平台无关的执行环境,简化了应用的开发和部署,因此在大数据场景中得到了较广泛的应用。主要分析了两种主流语言虚拟机——JVM和CLR在大数据场景中的应用,并阐述了使用语言虚拟机面临的4个挑战:初始化及“热身”开销、垃圾回收暂停、异构内存支持、数据格式转换。之后,分别针对4个挑战讨论了现有的解决方案,并分析了这些方案的不足之处及未来可能的优化方向。

关键词语言虚拟机 ; 垃圾回收 ; 异构内存

论文引用格式:

吴明瑜, 陈海波, 等.大数据场景中语言虚拟机的应用和挑战[J].大数据, 2020, 6(4):81-91.

WU M Y, CHEN H B, et al.Applications and challenges of language virtual machines in big data[J].Big Data Research, 2020, 6(4):81-91.


1 引言

随着大数据时代的到来,对数据分析和处理的需求催生出了一系列大数据处理系统,通过调度集群内的硬件资源,以高并发、分布式的方式处理数据。语言虚拟机(language virtual machine)也被称为管理运行时环境(managed runtime environment),它为应用进程提供了与平台无关的执行环境,使应用具有良好的可移植性,适合在分布异构的环境中使用。同时,语言虚拟机还为应用提供了类型检查、垃圾回收、即时编译等功能,减轻了应用的负担,使开发者能够专注于应用逻辑。由于语言虚拟机的良好特性,很多大数据处理系统使用具有语言虚拟机支持的程序语言编写,如Hadoop、Spark、Flink、DryadLINQ等。其中,为Java提供的Java虚拟机(Java virtual machine,JVM)和为.NET提供的公共语言运行时(common language runtime,CLR)是大数据处理系统的主要选择,其中JVM广泛用于开源的大数据系统,而CLR则主要部署于微软公司的实际生产系统中。

语言虚拟机在为大数据应用开发提供便利的同时,也带来了一系列挑战。语言虚拟机为了构建与平台无关的执行环境,需要经历初始化和“热身”过程,该过程耗时较长,且该过程中的执行效率较低。另外,语言虚拟机引入的垃圾回收(garbage collection)过程一般会要求暂停应用,使得应用执行的时间变长。此外,近年来硬件异构化趋势明显,以非易失性内存(non-volatile memory,NVM)为代表的新型硬件逐渐普及,而语言虚拟机缺乏对这些硬件的支持,因而无法充分利用硬件资源。最后,不同的语言虚拟机的数据存储格式不同,因此虚拟机之间的通信需要额外的格式转换开销。本文将详细阐述语言虚拟机在大数据场景中面临的挑战,并深入探讨已有的解决方案及其存在的不足。

2 大数据场景中语言虚拟机的应用

语言虚拟机的可移植性和安全性等特点为大数据应用的开发和部署提供了便利,因此在大数据场景中得到了广泛使用。本文主要讨论大数据场景中应用较为广泛的两种语言虚拟机:JVM和CLR。这两种虚拟机不仅具有上述优点,还进行了充分的性能优化,因而能为大数据应用提供较为高效的支持。

2.1 JVM

JVM主要是为Java应用提供的语言虚拟机。为了支持与硬件平台无关的执行模式,JVM提供了字节码(byte-code)这一中间表达形式,Java代码首先会被翻译为字节码,然后就可以在任意JVM上执行,从而具备“一次编译,处处执行”的可移植性。JVM提供了基于栈的执行模式,通过构建Java栈依次解释执行字节码,从而完成对Java应用的执行。由于解释执行效率较低,JVM提供了即时编译(just-in-time compilation)功能,会在运行时将频繁使用的代码进行编译优化,从而提高Java应用的整体性能。同时,JVM也提供了自动内存管理(即垃圾回收)以及安全检查功能,进一步提高了易用性和可靠性。

由于开发一个成熟高效的语言虚拟机成本较高(例如,著名的开源JVM实现OpenJDK源码超过1 000万行),很多程序语言没有开发语言虚拟机,而是直接被编译为字节码,在JVM上执行。这些程序语言被称为JVM语言,其进一步拓宽了JVM的应用范围,丰富了JVM的生态。

目前,在JVM上运行的大数据系统有很多,其中既包含Hadoop、Hive、Hyracks等完全使用Java语言编写的系统,也包含Spark、Flink、Storm等使用JVM语言编写的系统。可以说

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值