spark streaming初體驗

spark streaming是建立在spark上的大規模實時流計算框架。通過閱讀官方文檔,做了一個本地的測試。

1.需要的工具

netcat:通過TCP和UDP在網絡中讀寫數據的工具
下載地址:http://sourceforge.net/projects/netcat/files/netcat/0.7.1/netcat-0.7.1.tar.gz

spark:編譯安裝並起動的spark,可以直接下載官方已經編譯好的包,解壓之後直接運行。(參考官方文檔)

主機:由於是在本地測試,只需要一臺計算機。

2.起動netcat的監聽端口
在“終端1”中輸入:nc -l -p 9999
[root@db1 netcat-0.7.1]# nc -l -p 9999
起動成功後,光標在下一行一直閃爍等待輸入數據。

3.測試netcat
另外打開一個終端,暫叫做“終端2”,在”終端2“中輸入:nc -l -p 9999
此時,”終端2“就等待”終端1“輸入數據。我們在”終端1“中輸入:12,後回車,在”終端2“中會看到“12”,表示收到數據。
停止”終端2“的netcat,進行下一步的streaming測試。

4.在”終端2“中運行spark作業
如果沒有配置環境變量,就切換目錄到spark/bin目錄下
[root@db1 bin]# pwd
/opt/spark/bin
[root@db1 bin]# ./run-example streaming.NetworkWordCount localhost 9999
(NetworkWordCount源代碼在:spark/examples/src/main/scala/org/apache/spark/examples/streaming/NetworkWordCount.scala
9999:是我們在”終端1“用netcat啓動的監聽端口)
會車之後,會看到已下信息:
.
.
.
-------------------------------------------
Time: 1447049226000 ms
-------------------------------------------

15/11/09 01:07:06 INFO scheduler.JobScheduler: Finished job streaming job 1447049226000 ms.0 from job set of time 1447049226000 ms
15/11/09 01:07:06 INFO scheduler.JobScheduler: Total delay: 0.052 s for time 1447049226000 ms (execution: 0.047 s)
15/11/09 01:07:06 INFO rdd.ShuffledRDD: Removing RDD 563 from persistence list
15/11/09 01:07:06 INFO storage.BlockManager: Removing RDD 563
15/11/09 01:07:06 INFO rdd.MapPartitionsRDD: Removing RDD 562 from persistence list
15/11/09 01:07:06 INFO storage.BlockManager: Removing RDD 562
15/11/09 01:07:06 INFO rdd.MapPartitionsRDD: Removing RDD 561 from persistence list
15/11/09 01:07:06 INFO storage.BlockManager: Removing RDD 561
15/11/09 01:07:06 INFO rdd.BlockRDD: Removing RDD 560 from persistence list
15/11/09 01:07:06 INFO storage.BlockManager: Removing RDD 560
15/11/09 01:07:06 INFO dstream.SocketInputDStream: Removing blocks of RDD BlockRDD[560] at socketTextStream at NetworkWordCount.scala:53 of time 1447049226000 ms
15/11/09 01:07:06 INFO scheduler.ReceivedBlockTracker: Deleting batches ArrayBuffer(1447049224000 ms)
.
.

5.在”終端1“中輸入數據
輸入測試數據並以空格分割,比如輸入:hi this is a test!
在”終端2“中會看到如下輸出:
-------------------------------------------
Time: 1447053798000 ms
-------------------------------------------
(this,1)
(is,1)
(a,1)
(hi,1)
(test!,1)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章