科多大数据培训
全国24小时免费热线
15328019568
联系QQ
3048661160
开班时间
当前位置:首页 > 学习资讯 > 大数据内容 >

大数据开发学习之spark内存模型

科多大数据小课堂之spark内存模型 1、1.6.0版本之前 1. 1、ExecutionMemory(执行时内存) 该内存区域是为了解决 shuffles,joins, sorts and aggregations 等过程中,避免频繁的IO需要的buffer。配置参数sp

科多大数据小课堂之spark内存模型
1、1.6.0版本之前
1. 1、ExecutionMemory(执行时内存)
该内存区域是为了解决 shuffles,joins, sorts and aggregations 等过程中,避免频繁的IO需要的buffer。配置参数spark.shuffle.memoryFraction(默认 0.2)
1. 2、StorageMemory (存储内存)
此区域为了解决block cache,当通过RDD显示调用cache, persist以及task results的存储。配置参数spark.storage.memoryFraction(默认0.6)
【cache, persist的区别(http://blog.csdn.net/houmou/article/details/52491419)】
1.3、OtherMemory (剩余内存)
系统预留,用于程序本身运行所需要的内存。
1.4、OOM处理
引入safetyFraction(保险),eg: ExecutionMemory
真正的可用内存是 spark.shuffle.memoryFraction * spark.shuffle.safetyFraction
= 0.8 * 0.2即只有16%内存可用。
带来的问题:这种内存分配机制,让各内存部分都不能超过设置的上限,导致有空闲的内存不能被利用,对于StorageMemory 和 ExecutionMemory消耗内存较多的部分,这样的问题愈加突出。
2、1.6.0版本之后
 
2.1、Reserved Memory
该内存部分是预留给系统内存使用,固定不变的。默认为
300MB(RESERVED_SYSTEM_MEMORY_BYTES = 300 * 1024 * 1024)
2.2 、User Memory
分配Spark Memory剩余的内存,用户可以根据需要使用。可以存储RDD transformations需要的数据结构。eg:重写spark aggregation,使用mapPartition transformation,通过hash table来实现aggregation,这使用的就是User Memory。
在1.6.0中,计算方法为(Java Heap - Reserved Memory) * (1.0 - spark.memory.fraction),默认为(Java Heap - 300M) * 0.25,比如4GB的heap大小,那么User Memory的大小为949MB。
2.3、Spark Memory
计算方式为:(Java Heap – Reserved Memory) * spark.memory.fraction,在1.6.0中,默认为(Java Heap - 300M) * 0.75。Spark Memory又分为Storage Memory和Execution Memory两部分。两个边界由spark.memory.storageFraction设定,默认为0.5。但是两部分可以动态变化,相互之间可以借用,如果一方使用完,可以向另一方借用。
2.3.1、Storage Memory
用来存储spark cached data. 可作为临时空间存储序列化unroll,broadcast variables,作为cached block存储。(broadcast variables大部分存储级别为MEMORY_AND_DISK。)
2.3.2、Execution Memory
存储Spark task执行过程中需要的对象。例如,Shuffle中map端中间数据的存储,以及hash aggregation中的hash table。如果内存不足,该空间也容许spill到磁盘。
说明:可以从Storage Memory中清除出内存块,但Execution Memory则不行。
Execution Memory内存池从Storage Memory中借取内存的条件。
Storage Memory还有free空间, Execution Memory初始的分区大小并用完了所有空间, 会导致从Storage Memory中借取空间。
初始的Storage Memory分区大小是通过Spark Memory * spark.memory.storageFraction = (Java Heap - Reserved Memory)* spark.memory.fraction * spark.memory.storageFraction,默认大小是(Java Heap - 300M) * 0.75 * 0.5 = (Java Heap - 300M) * 0.375。比如Heap有4G,那初始Storage Memory分区就有1423.5M。

区块链是什么?区块链能做什么?

区块链是当下最热门的一个技术,可区块链究竟是什么,有什么作用。未来的发展趋势会怎么样呢?下面,科多大数据给大家简单介绍一下区块链。
一、区块链的本质
区块链是什么?一句话,它是一种特殊的分布式数据库。
 
首先,区块链的主要作用是储存信息。任何需要保存的信息,都可以写入区块链,也可以从里面读取,所以它是数据库。
其次,任何人都可以架设服务器,加入区块链网络,成为一个节点。区块链的世界里面,没有中心节点,每个节点都是平等的,都保存着整个数据库。你可以向任何一个节点,写入/读取数据,因为所有节点最后都会同步,保证区块链一致。
二、区块链的最大特点
分布式数据库并非新发明,市场上早有此类产品。但是,区块链有一个革命性特点。
区块链没有管理员,它是彻底无中心的。其他的数据库都有管理员,但是区块链没有。如果有人想对区块链添加审核,也实现不了,因为它的设计目标就是防止出现居于中心地位的管理当局。
正是因为无法管理,区块链才能做到无法被控制。否则一旦大公司大集团控制了管理权,他们就会控制整个平台,其他使用者就都必须听命于他们了。
但是,没有了管理员,人人都可以往里面写入数据,怎么才能保证数据是可信的呢?被坏人改了怎么办?请接着往下读,这就是区块链奇妙的地方。
三、区块
区块链由一个个区块(block)组成。区块很像数据库的记录,每次写入数据,就是创建一个区块。
 
每个区块包含两个部分:
1、区块头(Head):记录当前区块的元信息
2、区块体(Body):实际数据
区块头包含了当前区块的多项元信息:
1、生成时间
2、实际数据(即区块体)的 Hash
3、上一个区块的 Hash
4、...
这里,你需要理解什么叫 Hash,这是理解区块链必需的。
 
所谓 Hash 就是计算机可以对任意内容,计算出一个长度相同的特征值。区块链的 Hash 长度是256位,这就是说,不管原始内容是什么,最后都会计算出一个256位的二进制数字。而且可以保证,只要原始内容不同,对应的 Hash 一定是不同的。
举例来说,字符串123的 Hash 是a8fdc205a9f19cc1c7507a60c4f01b13d11d7fd0(十六进制),转成二进制就是256位,而且只有123能得到这个 Hash。
因此,就有两个重要的推论。
推论1:每个区块的 Hash 都是不一样的,可以通过 Hash 标识区块。
推论2:如果区块的内容变了,它的 Hash 一定会改变。
四、Hash 的不可修改性
区块与 Hash 是一一对应的,每个区块的 Hash 都是针对"区块头"(Head)计算的。
Hash = SHA256(区块头)
上面就是区块 Hash 的计算公式,Hash 由区块头唯一决定,SHA256是区块链的 Hash 算法。
前面说过,区块头包含很多内容,其中有当前区块体的 Hash(注意是"区块体"的 Hash,而不是整个区块),还有上一个区块的 Hash。这意味着,如果当前区块的内容变了,或者上一个区块的 Hash 变了,一定会引起当前区块的 Hash 改变。
这一点对区块链有重大意义。如果有人修改了一个区块,该区块的 Hash 就变了。为了让后面的区块还能连到它,该人必须同时修改后面所有的区块,否则被改掉的区块就脱离区块链了。由于后面要提到的原因,Hash 的计算很耗时,同时修改多个区块几乎不可能发生,除非有人掌握了全网51%以上的计算能力。
正是通过这种联动机制,区块链保证了自身的可靠性,数据一旦写入,就无法被篡改。这就像历史一样,发生了就是发生了,从此再无法改变。
 
每个区块都连着上一个区块,这也是"区块链"这个名字的由来。

修改tomcat项目的图标

修改tomcat项目的图标,科多大数据带你来学习:
我们在查看网页的时候很多网站都有自己的小图标,系统读取这个标志的时候先从你的项目的根目录下读看有没有favicon.ico文件,如果有直接显示这个图标,如果没有,则会去webapps/root/下找这个文件,如果这两个地方都没有,则就显示IE图标。
 
方式一(不推荐)
找到已经安装的tomcat目录
 
打开tomcat目录,进入
D:\tomcat\apache-tomcat-7.0.50-1\webapps\ROOT
 
找到favicon.ico图标
 
将自己的小图标覆盖tomcat默认图标
 
重新启动Tomcat服务器即可。
方式二(推荐使用)
该方式比较灵活,所以建议使用。
另一种形式是修改页面
<link rel="shortcut icon" href="favicon.ico" type="image/x-icon" />
 
其中 href 的值就是地址栏图标的路径,当然这个可以是相对的,也可是绝对的
现在科多大数据更新区块链、数据分析、python爬虫等试听视频,小伙伴们可上科多大数据官网咨询领取哦~
最新资讯更多+
内容推荐更多+
在线课堂
猜你喜欢