Spark Tungsten揭秘 Day1 jvm下的性能优化
Spark Tungsten揭秘 Day1
jvm下的性能优化
今天开始谈下Tungsten,首先我们需要了解下其背后是符合了什么样的规律。
jvm对分布式天生支持
整个Spark分布式系统是建立在分布式jvm基础上的,jvm非常伟大的一点在于把不同机器的计算能力联合起来了,jvm也把不同机器的存储能力连接起来了。
jvm是怎么做到这一点的,jvm本身就是一个软件,有自己的通讯方式以及自己的一套协议,在进行java或者scala开发的时候,就支持了一个最重要的设计模式:代理模式,基于代理模式可以使用其他的进程,这些进程可以在同一个OS,或者不同的OS上,可以使用其他地方的进程,像使用本地进程一样。
jvm一个基本特征是,代理端和实现端看起来是完全一样的接口,因为我们编程时是面向接口的,所以代理模式是一个近乎完美的设计模式,既实现了面向接口编程,又能把不同的功能组合起来。
关于不同机器之间通讯的细节,这个是jvm帮我们处理掉了。所以jvm的口号是网络即OS。屏蔽掉了不同机器的区别。这个带来的影响非常的深远。jvm正在从技术的角度实现"共产主义"目标。
Scala的函数天然是可序列化与可反序列化的。这两者结合起来,导致数据和算法都可以在机器之间传输。这个就构建出了整个分布式。
一般大数据系统都是运行在jvm上的,完成不同机器之间沟通的代价最小。jvm有一个天然的特性,是数据序列化和反序列化的能力,这个就为不同机器传输数据打下了良好的基础,jvm的提供这种能力可以让我们根据接口进行数据的自定义,数据的自定义达到的好处是我们可以随意进行数据建模实现我们数据的业务逻辑,并这个建模在不同机器间进行传输。
GC是jvm头上的乌云
jvm是一个应用程序而已,运行在一个user space进程中,从OS角度讲,进程分为两种,一种是user space,一种是kernel space。从kernel space角度讲,并没有进程之间的差异,内核空间看用户空间的一切,只是一个又一个的句柄。用户空间进程只是注册下,需要进行内存映射。
内存映射是一种算法,用户空间的某个地址和内核空间会进行某种公式的缓存,因为内核空间不是那么大,但是用户空间越来越大,从内核空间讲,用户空间的jvm进程是计算资源的代表,例如对core和内存的使用。
jvm当初重要的目标是跨平台,是一种标准,提供统一的编程,底层来适配不同的硬件。jvm的推出,让我们可以仅关心对象的使用,让我们在对象的三阶段中解放操作,不用关心分配和销毁。学习者和开发者的角度讲简单了很多。从整个分布式角度考虑,jvm提供了很多的便利。类似吃自助餐,直接吃就可以,会有服务员补餐和收餐。
但是,这个是有代价的,jvm会有自己的一套机制来分配和清理,但是这里有个很大的问题,因为程序运行和gc是两套东西,有时候会有冲突,一般gc时都要停止工作,会影响程序的运行,对实时性要求特别高的程序就特别麻烦。这个就是jvm头上的那朵乌云。
Tungsten缘起
为了既享受jvm的好处,又摆脱弊端,就展开了Tungsten,Tungsten在最开始时候使用native级别的存储空间,从而不受jvm gc的影响,而只是被我们程序的逻辑所控制,分配和销毁全由程序说了算。
jvm管理的空间受gc影响和native空间完全是两码事。Tungsten第一阶段,就是这个思路,从jvm走向native。就是把一部分的空间转移到native级别。
第二阶段是程序有效运行的问题,java是后来出现的,是C和C++的一层封装,但这个封装是有代价的,弊端是从语言级别,效率更为低下,因为有一部分时间浪费在处理语言的流程和空间的使用。Tungsten做的是分析代码,看哪些是真正有效的计算,把CPU的有效使用效率最大化。
内存、CPU没问题了,下一步还有什么,是磁盘和内存的切换,所以第三阶段就是使用NIO的方式进行优化。
把这几点都完成后,就可以把机器运用到极致。
欲知后事如何,且听下回分解!
DT大数据每天晚上20:00YY频道现场授课频道68917580
Spark Tungsten揭秘 Day1 jvm下的性能优化的更多相关文章
- Spark Tungsten揭秘 Day3 内存分配和管理内幕
Spark Tungsten揭秘 Day3 内存分配和管理内幕 恭喜Spark2.0发布,今天会看一下2.0的源码. 今天会讲下Tungsten内存分配和管理的内幕.Tungsten想要工作,要有数据 ...
- Spark Tungsten揭秘 Day2 Tungsten-sort Based Shuffle
Spark Tungsten揭秘 Day2 Tungsten-sort Based Shuffle 今天在对钨丝计划思考的基础上,讲解下基于Tungsten的shuffle. 首先解释下概念,Tung ...
- Spark Tungsten揭秘 Day4 内存和CPU优化使用
Spark Tungsten揭秘 Day4 内存和CPU优化使用 今天聚焦于内存和CPU的优化使用,这是Spark2.0提供的关于执行时的非常大的优化部分. 对过去的代码研究,我们会发现,抽象的提高, ...
- Oracle在Linux下的性能优化
Oracle数据库内存参数的优化 Ø 与oracle相关的系统内核参数 Ø SGA.PGA参数设置 Oracle下磁盘存储性能优化 Ø 文件系统的选择(ext2 ...
- [转帖]etcd 在超大规模数据场景下的性能优化
etcd 在超大规模数据场景下的性能优化 阿里系统软件技术 2019-05-27 09:13:17 本文共5419个字,预计阅读需要14分钟. http://www.itpub.net/2019/ ...
- spark生成大宽表的parquet性能优化
1. 背景介绍 将一份数据量很大的用户属性文件解析成结构化的数据供查询框架查询剖析,其中用户属性包含用户标识,平台类型,性别,年龄,学历,兴趣爱好,购物倾向等等,大概共有七百个左右的标签属性.为了查 ...
- Linux 下网络性能优化方法简析
概述 对于网络的行为,可以简单划分为 3 条路径:1) 发送路径,2) 转发路径,3) 接收路径,而网络性能的优化则可基于这 3 条路径来考虑.由于数据包的转发一般是具备路由功能的设备所关注,在本文中 ...
- 《Java虚拟机JVM故障诊断与性能优化》读书笔记(未完待续)
前言: 对于JVM学习用处的理解:我们程序员写的代码,虽说是放在服务器(linux)系统上的.但是很多时候,受JVM的影响,其实程序并没有发挥出服务器的最大性能.这时候,JVM就成为了瓶颈了.有瓶颈就 ...
- etcd 在超大规模数据场景下的性能优化
作者 | 阿里云智能事业部高级开发工程师 陈星宇(宇慕) 概述 etcd是一个开源的分布式的kv存储系统, 最近刚被cncf列为沙箱孵化项目.etcd的应用场景很广,很多地方都用到了它,例如kuber ...
随机推荐
- Debian7.7 wheezy 中源码安装emacs24
我用的是ARM版本,竟然没有最新的emacs 24,很多第三方插件不能用,果断重新编译个1.追加软件源 deb-src http://ftp.cn.debian.org/debian/ wheezy ...
- 在vs环境中跑动sift特征提取(原理部分)
/* 如果给两张图片,中间有相似点.要求做匹配.怎么做.我现在能讲么? 比如给了两幅图片,先求出sift点. 尺度空间极值检测.高斯模糊 关键点定位 关键点方向确定 关键点描述 kdtre ...
- python(1) -文件操作
很多时候我们需要对文件进行一些操作,比如读取并分析日志文件,写入日志文件等等.显然python也内置了对文件进行操作的函数. 读文件: >>> f = open('a.log','r ...
- 如果将WCF服务发布为rest模式
WCF是支持多种协议的,其中basicHttpBinding是基础协议绑定,类似于传统的webservice. 如果要将WCF发布成rest,绑定协议要使用webHttpBinding,并且在终结点的 ...
- sequence 作为序列插入值不是第一个
CREATE SEQUENCE seq_test INCREMENT BY 1 START WITH 1 ; 创建表时 或执行 ALTER SYSTEM SET deferred_segment_c ...
- trigger,triggerhandler模拟事件
常用模拟 有时候,需要通过模拟用户操作,来达到单击的效果.例如在用户进入页面后,就触发click事件,而不需要用户去主动单击. 在JQuery中,可以使用trigger()方法完成模拟操作.例如可以使 ...
- Spring(3.2.3) - Beans(11): depends-on
大多数情况下,Bean 之间的依赖非常直接:被依赖的 Bean 作为属性.在 XML 配置文件中最常见的就是使用 <ref/> 元素.在一些特殊情况下,Bean 之间的依赖不够直接.比如, ...
- Android 快捷方式相关操作
尽管现在少数手机不支持快捷方式,但是仍然有大部分手机是支持的.创建快捷方式,可以减少用户在应用列表繁多的应用程序中查找应用的时间,快速进入应用:或是应用中的某个功能使用频率较高,创建快捷方式,可以快速 ...
- 第六十五篇、OC_iOS7 自定义转场动画push pop
自定义转场动画,在iOS7及以上的版本才开始出现的,在一些应用中,我们常常需要定制自定义的的跳转动画 1.遵守协议:<UIViewControllerAnimatedTransitioning& ...
- Cocos2d-x优化中图片优化
在2D游戏中图片无疑是最为重要的资源文件,它会被加载到内存中转换为纹理,由GPU贴在精灵之上渲染出来.它能够优化的方面很多,包括:图片格式.拼图和纹理格式等,下面我们从这几个方面介绍一下图片和纹理的优 ...