A load of Spark memory access behavior tracking method, including: in the implementation area, establish relationship between objects in UnsafeShuffleWriter hashcode, the first is to access the data and information of the ShuffleExternalSorter object RDD hashcode; access to relevant information is the first access address and the physical address of the virtual data, and according to the relationship between the UnsafeShuffleWriter object hashcode first, the data is accessed the RDD information and the ShuffleExternalSorter object hashcode, corresponding relationship between the relevant information RDD information, the virtual address of the first accessed data and related information of the physical address and stored in the file; in the storage area, when the MemoryStore maintain a hash table for executing stored or read operation, RDD information the virtual address, access storage or read operation corresponding to the second phase of the data being accessed Close the information and physical address related information, and then save the corresponding relationship between the above three in the file. The invention also provides a Spark load tracking device tracking device that can open three layers of Spark, JVM, and OS to extend the Spark semantics to the hardware layer.
【技术实现步骤摘要】
一种Spark负载访存行为追踪方法及装置
本专利技术涉及数据处理
,尤其涉及一种Spark负载访存行为追踪方法及装置。
技术介绍
Spark是专为大规模数据处理而设计的快速通用的计算引擎。内存计算是Spark的重要特征,即数据的存储和处理都在内存之中。因此,一款Spark应用程序的特征,很大程度反映在它对内存的使用行为上。与JVM(JavaVirtualMachine,Java虚拟机)一样,Spark也有着自己的内存管理机制。图1展示了Spark系统中各层的内存语义。如图1所示,Spark将所管理的内存分为Execution区(执行区)和Storage区(存储区)两部分。Execution区为中间数据结果的处理提供缓存,Storage区用于存储数据。Spark所管理的内存,可以来自JVM堆,也可以直接从操作系统获得。对Spark应用进行性能分析时,图1所示的每一层中都有追踪工具可以利用,但现有的追踪工具的结果之间是独立的,彼此之间无法建立联系。因此,无法系统地了解Saprk负载访存行为在Spark、JVM、OS(OperatingSystem,操作系统)三层的内在联系,从而较难对Spark应用进行性能分析。
技术实现思路
本专利技术的主要目的在于提供一种Spark负载访存行为追踪方法及装置,可打通Spark、JVM、OS三层,将Spark语义和各层性能指标建立联系,从而方便对Spark应用进行性能分析。为实现上述目的,本专利技术实施例第一方面提供了一种Spark负载访存行为追踪方法,Spark管理的内存包括执行区和存储区,所述方法包括:在所述执行区,当所 ...
【技术保护点】
一种Spark负载访存行为追踪方法,Spark管理的内存包括执行区和存储区,其特征在于,所述方法包括:在所述执行区,当所述Spark启动ShuffleMapTask线程对第一被访问数据进行处理时,在所述ShuffleMapTask线程调用的UnsafeShuffleWriter对象的哈希码值、所述第一被访问数据的RDD信息以及所述UnsafeShuffleWriter调用的ShuffleExternalSorter对象的哈希码值之间建立对应关系;获取所述ShuffleExternalSorter为所述第一被访问数据申请的虚拟地址的相关信息以及所述虚拟地址对应的物理地址的相关信息,并根据所述UnsafeShuffleWriter对象的哈希码值、所述第一被访问数据的RDD信息以及所述ShuffleExternalSorter对象的哈希码值之间的对应关系,得到所述第一被访问数据的RDD信息、虚拟地址的相关信息以及物理地址的相关信息之间的对应关系,并保存在文件中;在所述存储区,当对MemoryStore维护的哈希表执行存储或读取操作时,获取所述存储或读取操作的对象,并根据所述对象得到所述存储或 ...
【技术特征摘要】
1.一种Spark负载访存行为追踪方法,Spark管理的内存包括执行区和存储区,其特征在于,所述方法包括:在所述执行区,当所述Spark启动ShuffleMapTask线程对第一被访问数据进行处理时,在所述ShuffleMapTask线程调用的UnsafeShuffleWriter对象的哈希码值、所述第一被访问数据的RDD信息以及所述UnsafeShuffleWriter调用的ShuffleExternalSorter对象的哈希码值之间建立对应关系;获取所述ShuffleExternalSorter为所述第一被访问数据申请的虚拟地址的相关信息以及所述虚拟地址对应的物理地址的相关信息,并根据所述UnsafeShuffleWriter对象的哈希码值、所述第一被访问数据的RDD信息以及所述ShuffleExternalSorter对象的哈希码值之间的对应关系,得到所述第一被访问数据的RDD信息、虚拟地址的相关信息以及物理地址的相关信息之间的对应关系,并保存在文件中;在所述存储区,当对MemoryStore维护的哈希表执行存储或读取操作时,获取所述存储或读取操作的对象,并根据所述对象得到所述存储或读取操作对应的第二被访问数据的虚拟地址的相关信息以及所述第二被访问数据的虚拟地址对应的物理地址的相关信息,所述哈希表以BlockId为键,以MemoryEntry为值,所述对象包括所述第二被访问数据的BlockId和MemoryEntry;将所述第二被访问数据的RDD信息、虚拟地址的相关信息以及物理地址的相关信息之间的对应关系,保存在所述文件中,所述第二被访问数据的RDD信息包括获取的BlockId。2.如权利要求1所述的方法,其特征在于,所述在所述ShuffleMapTask线程调用的UnsafeShuffleWriter对象的哈希码值、所述第一被访问数据的RDD信息以及所述UnsafeShuffleWriter调用的ShuffleExternalSorter对象的哈希码值之间建立对应关系,具体包括:将所述ShuffleMapTask线程调用的UnsafeShuffleWriter对象的哈希码值和所述第一被访问数据的RDD信息传给追踪模块,通过所述追踪模块将所述UnsafeShuffleWriter对象的哈希码值和所述第一被访问数据的RDD信息写入第一哈希表,所述第一哈希表以所述UnsafeShuffleWriter对象的哈希码值为键,以所述第一被访问数据的RDD信息为值;将所述UnsafeShuffleWriter对象的哈希码值和所述UnsafeShuffleWriter调用的ShuffleExternalSorter对象的哈希码值传给所述追踪模块,通过所述追踪模块将所述UnsafeShuffleWriter对象的哈希码值和所述ShuffleExternalSorter对象的哈希码值写入第二哈希表,所述第二哈希表以所述ShuffleExternalSorter对象的哈希码值为键,以所述UnsafeShuffleWriter对象的哈希码值为值。3.如权利要求2所述的方法,其特征在于,所述第一被访问数据的虚拟地址的相关信息包括所述第一被访问数据的虚拟地址及其对应的虚拟页信息;所述获取所述ShuffleExternalSorter为所述第一被访问数据申请的虚拟地址的相关信息以及所述虚拟地址对应的物理地址的相关信息,并根据所述UnsafeShuffleWriter对象的哈希码值、所述第一被访问数据的RDD信息以及所述ShuffleExternalSorter对象的哈希码值之间的对应关系,得到所述第一被访问数据的RDD信息、虚拟地址的相关信息以及物理地址的相关信息之间的对应关系,并保存在文件中,具体包括:将所述ShuffleExternalSorter对象的哈希码值和为所述第一被访问数据申请的虚拟地址传给所述追踪模块;通过所述追踪模块,在所述第二哈希表中查找与所述ShuffleExternalSorter对象的哈希码值对应的所述UnsafeShuffleWriter对象的哈希码值;通过所述追踪模块,在所述第一哈希表中查找与所述UnsafeShuffleWriter对象的哈希码值对应的所述第一被访问数据的RDD信息;通过所述追踪模块,访问操作系统页表,得到与所述虚拟地址对应的虚拟页信息以及物理地址的相关信息;通过追踪模块,将所述第一被访问数据的RDD信息、虚拟地址、虚拟页信息以及物理地址的相关信息合成一条记录,并保存在所述文件中。4.如权利要求1所述的方法,其特征在于,所述第二被访问数据的虚拟地址的相关信息包括所述第二被访问数据的虚拟地址及其对应的虚拟页信息;所述当对MemoryStore维护的哈希表执行存储或读取操作时,获取所述存储或读取操作的对象,并根据所述对象得到所述存储或读取操作对应的第二被访问数据的虚拟地址的相关信息以及所述第二被访问数据的虚拟地址对应的物理地址的相关信息,具体包括:当对MemoryStore维护的哈希表执行存储或读取操作时,将存储或读取的所述哈希表中的BlockId和MemoryEntry传给所述追踪模块;通过所述追踪模块,获取所述MemoryEntry的成员变量ByteBuffer数组;通过所述追踪模块,利用Unsafe类提供的接口,获取所述ByteBuffer数组中每一个ByteBuffer对象的成员变量hb的值,所述成员变量hb的值为字节数组在JVM堆中的起始地址;将所述成员变量hb的值与所述JVM堆的头信息的长度相加,得到所述第二被访问数据的虚拟地址;通过访问操作系统页表,得到所述第二被访问数据的...
【专利技术属性】
技术研发人员:毛睿,陆敏华,陆克中,罗秋明,刘刚,李荣华,廖好,周明洋,王利,王晶,隋秀峰,
申请(专利权)人:深圳大学,
类型:发明
国别省市:广东,44
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。