您的位置:首页 > 其它

SparkStreaming VS 单机

2014-05-12 21:31 267 查看

SparkStreaming VS 单机

由于要实现实时抠图,已经先后实现在hadoop和spark上的抠图,实时的话,还得靠streaming,要比较的话单机和streaming本来是不能比较的,但是刚刚出炉的数据,就先这么比较吧。

1. 单机

1.1 配置

操作系统:Windows 7 64bit

CPU:Intel(R) Core(TM)i7-2600 CPU @ 3.4GHz 3.70GHZ

内存: 6.00GB

IDE: VS2008

1.2 算法

抠图算法的代码是用C++写的,将输入的PNG图片进行抠图,输出PNG图片,运行在windows下,抠图的速度不是很快。

2. SparkStreaming

2.1 配置

操作系统:Centos Final 6.4 64bit

CPU:Intel(R) Core(TM)i7-2600 CPU @ 3.4GHz 3.70GHZ

内存: 6.00GB

Spark:0.9.0

Hadoop:2.3.0

Master:1个

测试Slave: 5个

2.2 算法

由于C++代码不能直接跑上Spark上,采用JNI的方式,调用windows下写好的C++代码,这样调用方式的速度是很慢的。在spark上用了broadcast的方式,将背景图片放在内存里,降低I/O的开销。

2.3 文件输入

采用hdfs的方式,将文件输入到hdfs上,然后由sparkStreaming自行读取,运行。

3. 实验结果

采用对同样的200张png图片进行抠图计时

3.1 单机

用了122.45秒。



3.2 Streaming

数量
时间(秒)
读写时间
count
lookup
collet
1
200
22.343
14.3
6.134
0
1.9
2
200
20.958
13.2
6.058
0
1.7
3
200
27.479
20.4
5.418
0
1.661
4
100
11.6
7.9
3.7
0
0
5
200
23.752
18.344
5.408
0
0
6
200
21.375
16.4
4.975
0
0
7
200
20.278
18.7
0
1.578
0
8
200
20.31
18.7
0
1.61
0
9
200
21.4
19.6
0
0
1.8

4 结论

Streaming在测试的时候最大的delay是12秒左右,但是1、2秒之后,delay立马就变成了0.8秒左右了,我猜大概是上传到hdfs的时候,一下子涌入的数据量有点大,等慢慢处理完了,延迟就立马下降了。



尽管集群调用了JNI方式,降低了速度,但是由于背景图片放在内存的缘故,实验数据中有些是还没有优化的时候测的,200张图片抠图的时间基本在21秒左右,参与运算的节点数是5个,这样21*5=105秒,略微比单机快一点,处理速度大概是10张/秒,但是随着集群数量的增加,SparkStreaming能够实时处理,这种优势是明显的。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: