大数据运算系统(4)--- 内存计算系统
2017-05-30 16:23
309 查看
内存计算系统
一、内存数据库
1、起源发展
(1)体系结构和硬件技术的巨大发展:GPU多核芯片+多级高速缓存+大容量内存+大容量硬盘SSD。
(2)内存处理优点:去除硬盘读写开销,提高处理速度。
(3)关系型内存数据库:
Memory-resident:可能在buffer pool中。
MMDB:可能彻底不用buffer pool,改变了系统内部设计。
2、关键技术
Sorting优化:使用quick sort而不是replacement selection
Hash join优化
B+ trees
Vectorization;处理器加速;压缩
3、MonetDB
SQL -> MAL -> BAT;内存列式存储,数据在类似数组的结构中。
4、在商用数据库中的实现
SAP HANA:所有数据存为列,变长数据存在dictionary,列中存dictionary的位置;Main
data为了读,过段时间更新,Delta data为了写;热点数据放在内存里;目标:OLTP和OLAP放在一个系统。
二、内存键值系统
1、Memcached
单机的内存的key-value syore;数据在内存中以hash table的形式存储;支持最基础的<key, value>数据模型;通常被用于前端的cache;可以使用多个memcached+sharding建立一个分布式系统。
2、Redis
提供更加丰富的类型;key可以包含hashes,lists,sets和sorted sets;支持副本和集群。
3、Memcached内部结构
![](https://img-blog.csdn.net/20170531101207272?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMzcxMDI2NQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
(1)单机系统
(2)实现自定义的协议,支持Get/Put等请求和响应。<文本方式的协议,二进制协议>
(3)采用多个链表管理内存。采用多个链表,每个链表内存块大小相同。
(4)key-value采用一个全局的Hash Table进行索引。
(5)多线程并发互斥访问。
三、内存MapReduce
Spark:面向大数据分析的内存系统
1、原理
可以从HDFS中读数据,但是运算中数据存放在内存中,不使用Hadoop,而是新实现了分布式的处理。
目标是低延迟的分析操作。
![](https://img-blog.csdn.net/20170531102428274?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMzcxMDI2NQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
2、运算和数据的表达
目标:高效、容错
RDD(resilient distributed data sets):一个数据集;只读,整个数据集创建后不能修改;通常进行整个数据集的计算。
优点:并发控制被简化了;可以记录lineage(数据集上的运算序列),可以重新计算。并不需要把RDD存储在stable storage 上。
3、RDD运算
(1)Transformation:RDD->RDD
(2)Action:RDD->计算结果
4、编程
Spark支持的语言:Scala,Java,Python
流程:建立SparkContext -> 读文本文件生成一个RDD -> 进行RDD操作
(1)Java RDD的类型
Class JavaRDD<T>:元素类型为T的RDD
Class JavaPairRDD<K,V>:元素包含一个K和一个V
(2)RDD输入
Class JavaSparkContext中函数
JavaSparkContext.textFile(path):从文本文件读入,每一行是一个元素,元素类型为String;返回JavaRDD<String>。
JavaSparkContext.wholeTextFiles(path):读一个目录,每个文件称为一个元素;key是文件路径,value是文件内容。返回JavaRDD<String,String>
(3)RDD transformation and RDD action
![](https://img-blog.csdn.net/20170531105020506?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMzcxMDI2NQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
5、实现
(1)运算过程
读入内存一次,在内存中可以多次处理。
(2)系统结构
![](https://img-blog.csdn.net/20170531105427759?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMzcxMDI2NQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
每个应用程序包含:
一个SparkContext(driver主程序创建,协调多个worker运行,发出RDD操作要求),多个Executor(在不同worker node上,执行并行运算,存储数据)(多个应用程序的SparkContext隔离,无法共享数据,必须通过外部的文件系统进行数据共享)。
(3)Spark中RDD存储方式
内存缓存、内存Serialized(顺序化)、多个内存副本、硬盘保存、多种组合
(4)Spark运算的运行
Transformation(仅记录不运算,lazy);Action(遇到Action时才执行之前记录的运算)。
容错/内存缓冲替换:当内存缓冲的RDD丢失时,可重新执行记录的运算,重新计算该RDD。
一、内存数据库
1、起源发展
(1)体系结构和硬件技术的巨大发展:GPU多核芯片+多级高速缓存+大容量内存+大容量硬盘SSD。
(2)内存处理优点:去除硬盘读写开销,提高处理速度。
(3)关系型内存数据库:
Memory-resident:可能在buffer pool中。
MMDB:可能彻底不用buffer pool,改变了系统内部设计。
2、关键技术
Sorting优化:使用quick sort而不是replacement selection
Hash join优化
B+ trees
Vectorization;处理器加速;压缩
3、MonetDB
SQL -> MAL -> BAT;内存列式存储,数据在类似数组的结构中。
4、在商用数据库中的实现
SAP HANA:所有数据存为列,变长数据存在dictionary,列中存dictionary的位置;Main
data为了读,过段时间更新,Delta data为了写;热点数据放在内存里;目标:OLTP和OLAP放在一个系统。
二、内存键值系统
1、Memcached
单机的内存的key-value syore;数据在内存中以hash table的形式存储;支持最基础的<key, value>数据模型;通常被用于前端的cache;可以使用多个memcached+sharding建立一个分布式系统。
2、Redis
提供更加丰富的类型;key可以包含hashes,lists,sets和sorted sets;支持副本和集群。
3、Memcached内部结构
(1)单机系统
(2)实现自定义的协议,支持Get/Put等请求和响应。<文本方式的协议,二进制协议>
(3)采用多个链表管理内存。采用多个链表,每个链表内存块大小相同。
(4)key-value采用一个全局的Hash Table进行索引。
(5)多线程并发互斥访问。
三、内存MapReduce
Spark:面向大数据分析的内存系统
1、原理
可以从HDFS中读数据,但是运算中数据存放在内存中,不使用Hadoop,而是新实现了分布式的处理。
目标是低延迟的分析操作。
2、运算和数据的表达
目标:高效、容错
RDD(resilient distributed data sets):一个数据集;只读,整个数据集创建后不能修改;通常进行整个数据集的计算。
优点:并发控制被简化了;可以记录lineage(数据集上的运算序列),可以重新计算。并不需要把RDD存储在stable storage 上。
3、RDD运算
(1)Transformation:RDD->RDD
(2)Action:RDD->计算结果
4、编程
Spark支持的语言:Scala,Java,Python
流程:建立SparkContext -> 读文本文件生成一个RDD -> 进行RDD操作
(1)Java RDD的类型
Class JavaRDD<T>:元素类型为T的RDD
Class JavaPairRDD<K,V>:元素包含一个K和一个V
(2)RDD输入
Class JavaSparkContext中函数
JavaSparkContext.textFile(path):从文本文件读入,每一行是一个元素,元素类型为String;返回JavaRDD<String>。
JavaSparkContext.wholeTextFiles(path):读一个目录,每个文件称为一个元素;key是文件路径,value是文件内容。返回JavaRDD<String,String>
(3)RDD transformation and RDD action
5、实现
(1)运算过程
读入内存一次,在内存中可以多次处理。
(2)系统结构
每个应用程序包含:
一个SparkContext(driver主程序创建,协调多个worker运行,发出RDD操作要求),多个Executor(在不同worker node上,执行并行运算,存储数据)(多个应用程序的SparkContext隔离,无法共享数据,必须通过外部的文件系统进行数据共享)。
(3)Spark中RDD存储方式
内存缓存、内存Serialized(顺序化)、多个内存副本、硬盘保存、多种组合
(4)Spark运算的运行
Transformation(仅记录不运算,lazy);Action(遇到Action时才执行之前记录的运算)。
容错/内存缓冲替换:当内存缓冲的RDD丢失时,可重新执行记录的运算,重新计算该RDD。
相关文章推荐
- 统计系统剩余的内存、数据类型转换计算(计算mac地址)、数据类型转换(列表与字典相互转换)
- 大数据运算系统(2)--- 图计算系统
- 大数据计算:如何仅用1.5KB内存为十亿对象计数
- Spark 介绍(基于内存计算的大数据并行计算框架)
- 计算密集型分布式内存存储和运算平台架构
- 第15周-小学生计算题(0-10的随机数乘法运算记分系统)
- 06大数据内存计算spark系列贴-mllib 机器学习
- 系统的学习大数据分布式计算spark技术
- 数据科学家如何优雅的运行R在spark内存计算引擎上
- ZOJ 1205题解本来是一道大数运算水题,可是却纠结了很久,原因是没能真正读懂题意,要求的计算必须是一一对应输出即使前面出现几个0最后也要把前面的0输出,看别人用C++自己还是两个都提交了结果还是C占的内存少。
- 大数据学习笔记之三十二 Storm流计算系统的关键特性
- 正确计算linux系统内存使用率
- 学生信息管理系统V0.1(字符界面、内存中存储数据)【MVC模式】
- 磁盘已死?内存计算的数据时代已全面降临
- Kemaswill 机器学习 数据挖掘 推荐系统 Shell之数学计算
- Laxcus大数据管理系统2.0(6)- 第四章 数据计算
- MVC4.0系统开发新手历程(三)---数据导入计算
- 正确计算linux系统内存使用率 (我今天刚好碰到这个问题, 故转载一下)
- 大数据计算:如何仅用1.5KB内存为十亿对象计数
- 统计单日计算节点系统负荷、内存利用率和磁盘利用率 平均值和峰值