MemSQL 取代 HDFS 与 Spark 结合,性能大幅提升
MemSQL 取代 HDFS 与 Spark 结合,性能大幅提升
3,597 次阅读 - 基础架构Apache Spark是目前非常强大的分布式计算框架。其简单易懂的计算框架使得我们很容易理解。虽然Spark是在操作大数据集上很有优势,但是它仍然需要将数据持久化存储,HDFS是最通用的选择,和Spark结合使用,因为它基于磁盘的特点,导致在实时应用程序中会影响性能(比如在Spark Streaming计算中)。而且Spark内置就不支持事务提交(commit transactions)。

本文介绍的MemSQL 数据库号称是世界上最快的分布式内存数据库(The World’s Fastest In-Memory Database)!它是由Eric Frenkiel(前Facebook员工)和Nikita Shamgunov(前微软SQL Server高级工程师)创建的一款基于内存的分布式关系数据库,它通过将数据存储在内存中,并将SQL语句预编译为C++而获得极速的执行效率。它兼容MySQL,且速度要比MySQL快30倍,能实现每秒150万次事务。
最近在其官方发布的一个MemSQL Spark Connector可以很好地和Spark一起使用,使得Spark用户可以快速地读写数据库中的数据。MemSQL 天生就适合Spark,因为它可以高效地处理大量的读写,而Spark经常需要这样的操作,而且MemSQL可以提供大量的空间足以提供给Spark创建新的数据。

MemSQL Spark Connector提供了所有Spark和MemSQL交互的各种接口,而且其中做了许多的优化措施,比如并行地从MemSQL读取数据;当 MemSQL和Spark运行在一个物理节点上,Spark直接将数据写入其中。MemSQL提供了两个最主要的组建:MemSQLRDD和saveToMemsql。
MemSQLRDD用于存储从MemSQL查询的数据集;而saveToMemsql将Spark中的RDD数据写入到MemSQL表中。这两个接口和Spark内置的JDBC接口看起来很类似,而且使用方式也很类似(可以看这里《Spark与Mysql(JdbcRDD)整合开发》)。来看看如何使用MemSQLRDD。我们使用从MemSQL读取表数据,并存储在MemSQLRDD中:
01 |
import com.memsql.spark.connector.rdd.MemSQLRDD |
02 |
03 |
... |
04 |
05 |
val rdd = new MemSQLRDD( |
06 |
sc, |
07 |
dbHost, |
08 |
dbPort, |
09 |
dbUser, |
10 |
dbPassword, |
11 |
dbName, |
12 |
"SELECT * FROM iteblog" , |
13 |
(r : ResultSet) = > { r.getString( "test_column" ) }) |
14 |
rdd.first() // Contains the value of "test_column" for the first row |
如果你想将RDD写入到Memsql,可以使用saveToMemsql函数:
1 |
import com.memsql.spark.connector. _ |
2 |
3 |
... |
4 |
5 |
val rdd = sc.parallelize(Array(Array( "www" , "iteblog" ), Array( "com" , "qux" ))) |
6 |
rdd.saveToMemsql(dbHost, dbPort, dbUser, dbPassword, |
7 |
dbName, outputTableName, insertBatchSize = 1000 ) |
从上面的例子可以看出,使用Memsql和Spark结合是多么的容易。
转载自过往记忆(http://www.iteblog.com/)
本文链接地址: 《使用Spark和MemSQL Spark连接器运行实时应用》(http://www.iteblog.com/archives/1327)
MemSQL 取代 HDFS 与 Spark 结合,性能大幅提升的更多相关文章
- 【转载】Apache Spark Jobs 性能调优(二)
调试资源分配 Spark 的用户邮件邮件列表中经常会出现 "我有一个500个节点的集群,为什么但是我的应用一次只有两个 task 在执行",鉴于 Spark 控制资源使用的参数 ...
- Spark:性能调优
来自:http://blog.csdn.net/u012102306/article/details/51637366 资源参数调优 了解完了Spark作业运行的基本原理之后,对资源相关的参数就容易理 ...
- Apache Spark Jobs 性能调优
当你开始编写 Apache Spark 代码或者浏览公开的 API 的时候,你会遇到各种各样术语,比如transformation,action,RDD(resilient distributed d ...
- Spark的性能调优杂谈
下面这些关于Spark的性能调优项,有的是来自官方的,有的是来自别的的工程师,有的则是我自己总结的. 基本概念和原则 <1> 每一台host上面可以并行N个worker,每一个worke ...
- 采用alluxio提升MR job和Spark job性能的注意点
1. 介绍 2. 实验说明 2.1 实验环境 2.2 实验方法 2.3 实验负载 3. MapReduce on alluxio 3.1 读取10G文件(1G split) 3.2 读取20G文件(1 ...
- Spark实践 -- 性能优化基础
性能调优相关的原理讲解.经验总结: 掌握一整套Spark企业级性能调优解决方案:而不只是简单的一些性能调优技巧. 针对写好的spark作业,实施一整套数据倾斜解决方案:实际经验中积累的数据倾斜现象的表 ...
- Spark的性能调优
下面这些关于Spark的性能调优项,有的是来自官方的,有的是来自别的的工程师,有的则是我自己总结的. Data Serialization,默认使用的是Java Serialization,这个程序员 ...
- Hive数据分析——Spark是一种基于rdd(弹性数据集)的内存分布式并行处理框架,比于Hadoop将大量的中间结果写入HDFS,Spark避免了中间结果的持久化
转自:http://blog.csdn.net/wh_springer/article/details/51842496 近十年来,随着Hadoop生态系统的不断完善,Hadoop早已成为大数据事实上 ...
- Spark Streaming性能调优详解
Spark Streaming性能调优详解 Spark 2015-04-28 7:43:05 7896℃ 0评论 分享到微博 下载为PDF 2014 Spark亚太峰会会议资料下载.< ...
随机推荐
- 设计一种前端数据延迟加载的jQuery插件(2)
背景 最近看到很多网站都运用到了一种前端数据延迟加载技术,包括淘宝,新浪网等等,这样做的目的可以使得一些未显示的图片随 着滚动条的滚动进行延迟显示. 好处显而易见,可以减少前端对于图片的Http请求, ...
- C# List<T> To DataTable
public DataTable ConvertToDataTable<T>(IList<T> data) { PropertyDescriptorCollection pro ...
- AppCompatActivity工具栏的设置(返回操作)
<android.support.v7.widget.Toolbar android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionB ...
- mplayer最全的命令
前段时间做过qt内嵌mplayer的一个小程序,感觉mplayer还行不过不支持打开图片感觉有点无力.话不多说上代码: QString path="d:/1.mkv"; QWidg ...
- 河南多校大一训练赛 E 开餐馆
题目链接:http://acm.hust.edu.cn/vjudge/contest/125004#problem/E 密码:acm Description 北大信息学院的同学小明毕业之后打算创业开餐 ...
- JDBC的超时原理
1.什么是JDBC jdbc是业务系统连接数据的标准API.SUN公司一共定义了4中类型的JDBC:JDBC-ODBC桥:Native-API 驱动:Network-Protocol 驱动:Datab ...
- HTML元素分类:块级元素 内联元素和内联块状元素
在CSS中,html中的标签元素大体被分为三种不同的类型:块状元素.内联元素(又叫行内元素)和内联块状元素. 1,块状元素 常用的块状元素有: <div>.<p>.<h1 ...
- windbg 之 如何设置模块加载时断下
这里先介绍两个指令: sx指令: The sx* commands control the action that the debugger takes when an exception occur ...
- PHPer转战Android的学习过程以及Android学习
原文作者: eoeadmin原文地址: http://my.eoe.cn/shuhai/archive/19684.html-------------------------------------- ...
- storm的并发
1 storm并行的基本概念 storm集群中的一个机器可以运行一个或者多个worker,对应于一个或者多个topologies. 1个worker进程运行1个或多个excutor线程.每个worke ...