您好,登錄后才能下訂單哦!
本期內容:
1、Spark Streaming 動手實戰演示
2、閃電般理解Spark Streaming原理
案例動手實戰并在電光石火間理解其工作原理
流(Streaming),在大數據時代為數據流處理,就像水流一樣,是數據流;既然是數據流處理,就會想到數據的流入、數據的加工、數據的流出。
日常工作、生活中數據來源很多不同的地方。例如:工業時代的汽車制造、監控設備、工業設備會產生很多源數據;信息時代的電商網站、日志服務器、社交網絡、金融交易系統、******、垃圾郵件、交通監控等;通信時代的手機、平板、智能設備、物聯網等會產生很多實時數據,數據流無處不在。
在大數據時代Spark Streaming能做什么?
平時用戶都有網上購物的經歷,用戶在網站上進行的各種操作通過Spark Streaming流處理技術可以被監控,用戶的購買愛好、關注度、交易等可以進行行為分析。在金融領域,通過Spark Streaming流處理技術可以對交易量很大的賬號進行監控,防止罪犯洗錢、財產轉移、防欺詐等。在網絡安全性方面,******時有發生,通過Spark Streaming流處理技術可以將某類可疑IP進行監控并結合機器學習訓練模型匹配出當前請求是否屬于******。其他方面,如:垃圾郵件監控過濾、交通監控、網絡監控、工業設備監控的背后都是Spark Streaming發揮強大流處理的地方。
大數據時代,數據價值一般怎么定義?
所有沒經過流處理的數據都是無效數據或沒有價值的數據;數據產生之后立即處理產生的價值是最大的,數據放置越久或越滯后其使用價值越低。以前絕大多數電商網站盈利走的是網絡流量(即用戶的訪問量),如今,電商網站不僅僅需要關注流量、交易量,更重要的是要通過數據流技術讓電商網站的各種數據流動起來,通過實時流動的數據及時分析、挖掘出各種有價值的數據;比如:對不同交易量的用戶指定用戶畫像,從而提供不同服務質量;準對用戶訪問電商網站板塊愛好及時推薦相關的信息。
SparkStreaming VS Hadoop MR:
Spark Streaming是一個準實時流處理框架,而Hadoop MR是一個離線、批處理框架;很顯然,在數據的價值性角度,Spark Streaming完勝于Hadoop MR。
SparkStreaming VS Storm:
Spark Streaming是一個準實時流處理框架,處理響應時間一般以分鐘為單位,也就是說處理實時數據的延遲時間是秒級別的;Storm是一個實時流處理框架,處理響應是毫秒級的。所以在流框架選型方面要看具體業務場景。需要澄清的是現在很多人認為Spark Streaming流處理運行不穩定、數據丟失、事務性支持不好等等,那是因為很多人不會駕馭Spark Streaming及Spark本身。在Spark Streaming流處理的延遲時間方面,DT_Spark大數據夢工廠即將推出的Spark定制版本,會將Spark Streaming的延遲從秒級別推進到100毫秒之內甚至更少。
SparkStreaming優點:
1、提供了豐富的API,企業中能快速實現各種復雜的業務邏輯。
2、流入Spark Streaming的數據流通過和機器學習算法結合,完成機器模擬和圖計算。
3、Spark Streaming基于Spark優秀的血統。
SparkStreaming能不能像Storm一樣,一條一條處理數據?
Storm處理數據的方式是以條為單位來一條一條處理的,而Spark Streaming基于單位時間處理數據的,SparkStreaming能不能像Storm一樣呢?答案是:可以的。
業界一般的做法是Spark Streaming和Kafka搭檔即可達到這種效果,入下圖:
Kafka業界認同最主流的分布式消息框架,此框架即符合消息廣播模式又符合消息隊列模式。
Kafka內部使用的技術:
1、 Cache
2、 Interface
3、 Persistence(默認最大持久化一周)
4、 Zero-Copy技術讓Kafka每秒吞吐量幾百兆,而且數據只需要加載一次到內核提供其他應用程序使用
外部各種源數據推進(Push)Kafka,然后再通過Spark Streaming抓取(Pull)數據,抓取的數據量可以根據自己的實際情況確定每一秒中要處理多少數據。
通過Spark Streaming動手實戰wordCount實例
這里是運行一個Spark Streaming的程序:統計這個時間段內流進來的單詞出現的次數. 它計算的是:他規定的時間段內每個單詞出現了多少次。
1、先啟動下Spark集群:
我們從集群里面打開下官方網站
接受這個數據進行加工,就是流處理的過程,剛才那個WordCount就是以1s做一個單位。
剛才運行的時候,為什么沒有結果呢?因為需要數據源。
2、獲取數據源:
新開一個命令終端,然后輸入:
$ nc -lk 9999
現在我們拷貝數據源進入運行:
然后按回車運行
DStream和RDD關系:
沒有輸入數據會打印的是空結果:
但是實際上,Job的執行是Spark Streaming框架幫我們產生的和開發者自己寫的Spark代碼業務邏輯沒有關系,而且Spark Streaming框架的執行時間間隔可以手動配置,如:每隔一秒鐘就會產生一次Job的調用。所以在開發者編寫好的Spark代碼時(如:flatmap、map、collect),不會導致job的運行,job運行是Spark Streaming框架產生的,可以配置成每隔一秒中都會產生一次job調用。
Spark Streaming流進來的數據是DStream,但Spark Core框架只認RDD,這就產生矛盾了?
Spark Streaming框架中,作業實例的產生都是基于rdd實例來產生,你寫的代碼是作業的模板,即rdd是作業的模板,模板一運行rdd就會被執行,此時action必須處理數據。RDD的模板就是DStream離散流,RDD之間存在依賴關系,DStream就有了依賴關系,也就構成了DStream 有向無環圖。這個DAG圖,是模板。Spark Streaming只不過是在附在RDD上面一層薄薄的封裝而已。你寫的代碼不能產生Job,只有框架才能產生Job.
如果一秒內計算不完數據,就只能調優了.
編寫人:姜偉及其IMF-Spark Steaming企業級開發實戰小組
主編輯:王家林
成員博客地址:
第一名:姜偉及其IMF-Spark Steaming企業級開發實戰小組 http://www.cnblogs.com/sparkbigdata/p/5403963.html
備注:
資料來源于:DT_大數據夢工廠(IMF傳奇行動絕密課程)
更多私密內容,請關注微信公眾號:DT_Spark
如果您對大數據Spark感興趣,可以免費聽由王家林老師每天晚上20:00開設的Spark永久免費公開課,地址YY房間號:68917580
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。