spark 的方式
- sparkStreaming簡介
- spark Streaming和Storm區別
- Spark Streaming運算元
-
Spark checkpointing
- Spark和kafka整合
- SparkStreaming是一種流式處理框架,是SparkAPI的擴充套件,支援可擴充套件、高吞吐、容錯的
準實時資料處理,實時資料的來源可以事:
- Kafka、Flume、Twitter,zeroMQ或者TCP sockets;
- 並且可以使用高階功能的複雜運算元來處理流資料,例如:map,reduce,jion,window;最終處理後的資料可以來存放在檔案系統,資料庫,方便實時展現;
- Storm是純實時的流式處理框架,SparkStreaming是準實時的處理框架(微批處理);因為微批處理,SparkStreaming的吞吐量比Storm要高;
- Storm的事務機制要比SparkStreaming的要完善;
- Storm支援的動態資源排程(Spark1.2及以後也支援)
- SparkStreaming擅長複雜的業務處理,Storm不擅長複雜的業務處理,擅長簡單的彙總計算
Spark的各個子框架,都基於核心Spark的,SparkStreaming在內部的機制如下:SparkStreaming接收到實時input資料流,並將資料分批成batch,然後由Spark Engine進行處理最後生成batch的輸出結果流
任何作用於DStream的運算元,其實都會被轉化為對其內部RDD的操作。例如,我們將 lines 這個DStream轉成words DStream物件,其實作用於lines上的flatMap運算元,會施加於lines中的每個RDD上,並生成新的對應的RDD,而這些新生成的RDD物件就組成了words這個DStream物件。其過程如下圖所示
- 基礎資料來源:在StreamingContext API中可以直接使用源:如檔案系統,套接字連線或者Akka actor
- 高階資料來源:需要依賴額外工具類的源,如:Kafka、Flume;
因為SparkStream是7*24小時執行的,Driver只是一個簡單的程式,有可能掛掉,所以實現Driver的HA就又必要(如果使用Client模式就無法實現DriverHA)Yarn平臺cluster模式提交任務,AM(AplicationMaster)相當於Driver,如果掛掉會自動啟動AM。這裡所說的DriverHA針對的是Spark standalone和Mesos資源排程的情況下。實現Driver的高可用有兩個步驟:
- receiver模式採用了Receiver接收器模式,需要一個執行緒一直接受資料,將資料接收到Executor中,預設儲存級別是MEMORY_AND_DISK_SER_2
- receiver模式自動使用zookeeper管理消費者offset
- receiver模式底層讀取kafka採用High Level Consumer API實現,這種模式不關心offset,只要資料;
- receiver模式當Driver掛掉時有資料丟失問題,可以開啟WAL機制,避免丟失資料,但是開啟後加大資料延遲,並存在資料重複消費等風險;
- receiver模式並行度由spark.stream.blockInterbal=200ms,可以減少這個引數增大並行度,最小不能低於50ms;
- Receiver模式不被使用
- 被動將資料接受到Executor,當有任務堆積實,資料存在問題
- 這種模式不能手動維護消費者offset
推薦閱讀:
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69949806/viewspace-2906587/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Spark的四種部署方式概括Spark
- 15、Spark Sql(一),生成DataFrame的方式SparkSQL
- Spark(16) -- 資料讀取與儲存的主要方式Spark
- Spark Streaming讀取Kafka資料兩種方式SparkKafka
- Java微服務:用Spark替代SpringBoot才是正確的方式 - Christian LusardiJava微服務SparkSpring Boot
- spark-streaming-kafka透過KafkaUtils.createDirectStream的方式處理資料SparkKafka
- Spark入門(四)--Spark的map、flatMap、mapToPairSparkAPTAI
- Spark in action on Kubernetes - Spark Operator的原理解析Spark
- Spark SQL:4.對Spark SQL的理解SparkSQL
- Spark入門(五)--Spark的reduce和reduceByKeySpark
- 【Spark篇】---Spark中Shuffle檔案的定址Spark
- Spark之spark shellSpark
- Spark記錄(二):Spark程式的生命週期Spark
- Spark RDD的預設分割槽數:(spark 2.1.0)Spark
- Spark RDD在Spark中的地位和作用如何?Spark
- spark三種清理資料的方式:UDF,自定義函式,spark.sql;Python中的zip()與*zip()函式詳解//及python中的*args和**kwargsSpark函式SQLPython
- Spark的工作原理Spark
- spark 的簡介Spark
- spark sql在scala中使用的兩種方式,以及其他一些知識點SparkSQL
- Spark系列 - (3) Spark SQLSparkSQL
- Spark on Yarn 和Spark on MesosSparkYarn
- Spark面試題(八)——Spark的Shuffle配置調優Spark面試題
- Spark流教程 :使用 Apache Spark 的Twitter情緒分析SparkApache
- Spark學習進度-Spark環境搭建&Spark shellSpark
- 【Spark】Spark容錯機制Spark
- Hive on Spark 和 Spark sql on Hive,你能分的清楚麼HiveSparkSQL
- Hive on Spark和Spark sql on Hive,你能分的清楚麼HiveSparkSQL
- Spark SQL | 目前Spark社群最活躍的元件之一SparkSQL元件
- Spark入門(三)--Spark經典的單詞統計Spark
- 《深入理解Spark》之Spark的整體執行流程Spark
- elasticsearch-spark的用法ElasticsearchSpark
- spark的pom.xmlSparkXML
- Spark 的核心概念 RDDSpark
- Spark建立空的DataFrameSpark
- docker下的spark使用DockerSpark
- Spark的執行原理Spark
- spark_home的配置Spark
- sparkSpark