SparkStreaming VS 单机

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能够实时处理,这种优势是明显的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值