Spark Streaming連線Flume的兩種方式
阿新 • • 發佈:2018-12-26
Spark提供了兩種不同的接收器來接受Flume端傳送的資料。
推式接收器該接收器以 Avro 資料池的方式工作,由 Flume 向其中推資料。設定起來非常簡單,我們只需要將Fluem簡單配置下,將資料傳送到Avro資料池中,然後scala提供的FlumeUtils代理物件會把接收器配置在一個特定的工作節點的主機名和埠上。當然,這些配置需要和Flume保持一致。
雖然這種方式很簡潔,但缺點是沒有事務支援。這會增加執行接收器的工作節點發生錯誤 時丟失少量資料的機率。不僅如此,如果執行接收器的工作節點發生故障,系統會嘗試從 另一個位置啟動接收器,這時需要重新配置 Flume 才能將資料發給新的工作節點。這樣配 置會比較麻煩。
拉式接收器
a1.sinks = spark a1.sinks.spark.type = org.apache.spark.streaming.flume.sink.SparkSink a1.sinks.spark.hostname = receiver-hostname a1.sinks.spark.port = port-used-for-sync-not-spark-port a1.sinks.spark.channel = memoryChannel
等到資料已經在資料池中快取起來,就可以呼叫 FlumeUtils 來讀取資料了