我的要求是從多臺機器上讀取日誌數據。LogStash - 據我所知,在所有機器上安裝LogStash代理和LogStash可以在數據到達時將數據推送到Kafka,即,即使將新行添加到文件中,LogStash也只讀取並非整個文件再次。用Spark Streaming替換LogStash
問題
現在我可以實現與星火流一樣嗎?
如果是這樣,使用Spark Streaming優於 LogStash的優勢和劣勢是什麼?要在所有的機器上安裝
我的要求是從多臺機器上讀取日誌數據。LogStash - 據我所知,在所有機器上安裝LogStash代理和LogStash可以在數據到達時將數據推送到Kafka,即,即使將新行添加到文件中,LogStash也只讀取並非整個文件再次。用Spark Streaming替換LogStash
問題
現在我可以實現與星火流一樣嗎?
如果是這樣,使用Spark Streaming優於 LogStash的優勢和劣勢是什麼?要在所有的機器上安裝
LogStash代理
是的,你需要在所有的機器一些代理。 ELK堆棧中的解決方案實際上是FileBeat,而不是Logstash代理。在這種情況下,Logstash更多地是服務器/消息總線。
同樣,某些Spark作業需要運行才能讀取文件。就個人而言,我會有其他任何東西尾隨一個日誌文件(即使只是從網絡套接字管道輸出tail -f file.log
)。需要編寫和分發Spark JAR +配置文件明顯是缺點。尤其是當您需要在每臺正在收集日誌的計算機上安裝Java時。
水槽或Fluentd是分佈式日誌收集其他廣泛使用的選項與卡夫卡目的地
LogStash可以把數據卡夫卡
The Beats framework has a Kafka Output,但你也可以先運到Logstash。
目前還不清楚您是否純粹使用LogStash作爲Kafka或在此處使用ElasticSearch,但Kafka Connect提供了文件源(和Elasticsearch輸出)。
只讀取不再
無論您使用的工具(包括星火流的文件源)通常會看文件的目錄(整個文件,因爲如果你不旋轉的日誌文件, '做錯了)。當文件進入或寫入文件的字節時,該框架將需要在內部提交某種類型的標記以指示到目前爲止消耗了哪些元素。要重置代理,此元數據應該能夠從頭開始刪除/重置
爲什麼要使用Spark Streaming? –