January 22, 2020, Wednesday, 21

Spark

出自TYRC

跳轉到: 導覽, 搜尋

Spark運算網路異常流量偵測系統

桃園區網中心 許時準、周小慧

  • Spark運算網路異常流量偵測系統 (http://192.192.227.83/Fdns/ 需login: tyrc/ tanet_tyrc )
  • 論文發表於 TANET 2015 研討會

目錄

壹. 目的

桃園區網核心路由器匯集桃園市各大專院校及各高中職學校網路流量,日常網路流量中包含大量的異常網路攻擊封包,網管人員除了借助於IPS的阻擋異常網路攻擊,也希望能對於異常網路封包能進一步篩選過濾。

本研究提出,以處理巨量資料速度更快的Spark 架構結合原系統之Hadoop架構,彌補Hadoop MapReduce的緩慢,並將系統建置於OpenStack雲端運算平台,期能加快系統處理異常網路流量之效能。

貳. 系統架構

系統建置於中央大學OpenStack雲端運算平台,藉由OpenStack運算架構,系統具備自動縮放(Auto Scaling)與負載平衡(Load Balance)的能力。然後由OpenStack提供之API開啟CentOS虛擬機服務,並在CentOS虛擬機建置網路異常流量偵測系統。

每10分鐘的即時異常網路流量偵測處理由處理巨量資料速度擅長的的Spark 模組進行,而每小時的匯整異常流量分析則由Hadoop模組分析。系統的2個功能模組皆以HDFS作為資料處理輸入輸出的檔案系統。

參. Spark設計

異常網路流量偵測的任務分為2個階段,Stage1主要為RDD Transformation操作,Stage2 為RDD Action操作。

Resilient Distributed Dataset (RDD)是Spark中可以平行處理的容錯資料集,新建立RDD的資料來源可以是shared filesystem, HDFS, HBase, 或其他 Hadoop支援的輸入型態。

Spark模組Stage1 的Java 程式碼如下

....
   JavaSparkContext ctx = new JavaSparkContext(sparkConf);
    JavaRDD<String> lines = ctx.textFile(args[0],1);
    JavaRDD<String> words = lines  \
		.flatMap(new FlatMapFunction<String, String>() {
			@Override
			public Iterable<String> call(String s) {
				return Arrays.asList(NEWLINE.split(s));
			}
		});
    JavaPairRDD<String, long[]> mappedValues  = words   \
		.flatMapToPair(new ParseFlow());
											
....

Spark模組Stage2 的Java 程式碼如下


JavaPairRDD<String, long[]> counts = mappedValues    \
		.reduceByKey(new VectorSum());    
    JavaPairRDD<String, long[]> result = counts.filter(FloodFilter);
    JavaPairRDD<String, long[]> sort_output = result.sortByKey();
    List<Tuple2<String,long[]>> output = sort_output.collect();


肆. 系統測試結果

紀錄上可以看出Netflow 第一筆資料 379MB, Hadoop運算速度為101秒, Spark 運算速度為24秒, Spark比起Hadoop快了4倍以上。對於較大之累計網路流量,資料量達794MB、1.2GB、1.6GB時也能呈現3~4倍以上的速度。

No Netflow資料量 Hadoop(測試機1) Spark(測試機2)
1 379MB 101 sec 24 sec
2 794MB 156 sec 36 sec
3 1235MB 176 sec 49 sec
4 1652MB 215 sec 64 sec

伍. 結論

  本研究的網路異常流量偵測系統是結合Spark與Hadoop架構,並建置於OpenStack雲端運算平台,系統可於監測大量的網路流量中篩選出異常的流量及可疑主機,並將資料寫入Mongo 資料庫,提供網管工作人員透過 web 介面查詢每十分鐘、每小時、每天之異常之網路流量及可疑主機排行。 系統特點如下
(1) 使用Spark協同Hadoop架構偵測網路異常流量的平台。
(2) Spark模組負責即時的運算,可以充分利用 Spark in-memory computing特性,在大量的NetFlow Data中快速篩選出異常網路行為的主機。Hadoop模組則處理大量批次作業,以每小時進行大量資料分析作業。

參考文獻


[1] J Dittrich, JA Quiané-Ruiz, “Efficient big data processing in Hadoop MapReduce”, Proceedings of the VLDB Endowment, 2012.
[2] Apache_Spark Introduction, https://zh.wikipedia.org/wiki/Apache_Spark
[3] Spark wins Daytona Gray Sort 100TB Benchmark, http://spark.apache.org/news/spark-wins-daytona-gray-sort-100tb-benchmark.html9
[4] Moniruzzaman, A. B. M., and Syed Akhter Hossain, “Nosql database: New era of databases for big data analytics-classification, characteristics and comparison.” , International Journal of Database Theory and Application Vol. 6, No. 4. 2013
[5] Matei Zaharia, Mosharaf Chowdhury, Tathagata Das, Ankur Dave, Justin Ma, Murphy McCauley, Michael J. Franklin, Scott Shenker, Ion Stoica, “Resilient distributed datasets: A fault-tolerant abstraction for in-memory cluster computing”, Proceeding NSDI'12 Proceedings of the 9th USENIX conference on Networked Systems Design and Implementation.
[6] Zaharia, Matei, et al. “Fast and interactive analytics over Hadoop data with Spark.” USENIX; login 37.4 (2012).