案例動手實(shí)戰(zhàn)并在電光石火間理解其工作原理
? ? ? 流(Streaming)劈猿,在大數(shù)據(jù)時代為數(shù)據(jù)流處理畦幢,就像水流一樣坎吻,是數(shù)據(jù)流;既然是數(shù)據(jù)流處理宇葱,就會想到數(shù)據(jù)的流入瘦真、數(shù)據(jù)的加工、數(shù)據(jù)的流出黍瞧。
? ? ? 日常工作诸尽、生活中數(shù)據(jù)來源很多不同的地方。例如:工業(yè)時代的汽車制造印颤、監(jiān)控設(shè)備您机、工業(yè)設(shè)備會產(chǎn)生很多源數(shù)據(jù);信息時代的電商網(wǎng)站年局、日志服務(wù)器际看、社交網(wǎng)絡(luò)、金融交易系統(tǒng)某宪、黑客攻擊仿村、垃圾郵件、交通監(jiān)控等兴喂;通信時代的手機(jī)蔼囊、平板、智能設(shè)備衣迷、物聯(lián)網(wǎng)等會產(chǎn)生很多實(shí)時數(shù)據(jù)畏鼓,數(shù)據(jù)流無處不在。
在大數(shù)據(jù)時代SparkStreaming能做什么壶谒?
? ? ? 平時用戶都有網(wǎng)上購物的經(jīng)歷云矫,用戶在網(wǎng)站上進(jìn)行的各種操作通過Spark Streaming流處理技術(shù)可以被監(jiān)控,用戶的購買愛好汗菜、關(guān)注度让禀、交易等可以進(jìn)行行為分析。在金融領(lǐng)域陨界,通過Spark Streaming流處理技術(shù)可以對交易量很大的賬號進(jìn)行監(jiān)控巡揍,防止罪犯洗錢、財產(chǎn)轉(zhuǎn)移菌瘪、防欺詐等腮敌。在網(wǎng)絡(luò)安全性方面,黑客攻擊時有發(fā)生,通過Spark Streaming流處理技術(shù)可以將某類可疑IP進(jìn)行監(jiān)控并結(jié)合機(jī)器學(xué)習(xí)訓(xùn)練模型匹配出當(dāng)前請求是否屬于黑客攻擊糜工。其他方面弊添,如:垃圾郵件監(jiān)控過濾、交通監(jiān)控捌木、網(wǎng)絡(luò)監(jiān)控油坝、工業(yè)設(shè)備監(jiān)控的背后都是Spark Streaming發(fā)揮強(qiáng)大流處理的地方。
大數(shù)據(jù)時代钮莲,數(shù)據(jù)價值一般怎么定義免钻?
? ? ? ?所有沒經(jīng)過流處理的數(shù)據(jù)都是無效數(shù)據(jù)或沒有價值的數(shù)據(jù)彼水;數(shù)據(jù)產(chǎn)生之后立即處理產(chǎn)生的價值是最大的崔拥,數(shù)據(jù)放置越久或越滯后其使用價值越低。以前絕大多數(shù)電商網(wǎng)站盈利走的是網(wǎng)絡(luò)流量(即用戶的訪問量)凤覆,如今链瓦,電商網(wǎng)站不僅僅需要關(guān)注流量、交易量盯桦,更重要的是要通過數(shù)據(jù)流技術(shù)讓電商網(wǎng)站的各種數(shù)據(jù)流動起來慈俯,通過實(shí)時流動的數(shù)據(jù)及時分析、挖掘出各種有價值的數(shù)據(jù)拥峦;比如:對不同交易量的用戶指定用戶畫像贴膘,從而提供不同服務(wù)質(zhì)量;準(zhǔn)對用戶訪問電商網(wǎng)站板塊愛好及時推薦相關(guān)的信息略号。
SparkStreaming VSHadoopMR:
? ? ? Spark Streaming是一個準(zhǔn)實(shí)時流處理框架刑峡,而Hadoop MR是一個離線、批處理框架玄柠;很顯然突梦,在數(shù)據(jù)的價值性角度,Spark Streaming完勝于Hadoop MR羽利。
SparkStreaming VS Storm:
? ? ? Spark Streaming是一個準(zhǔn)實(shí)時流處理框架宫患,處理響應(yīng)時間一般以分鐘為單位,也就是說處理實(shí)時數(shù)據(jù)的延遲時間是秒級別的这弧;Storm是一個實(shí)時流處理框架娃闲,處理響應(yīng)是毫秒級的。所以在流框架選型方面要看具體業(yè)務(wù)場景匾浪。需要澄清的是現(xiàn)在很多人認(rèn)為Spark Streaming流處理運(yùn)行不穩(wěn)定皇帮、數(shù)據(jù)丟失、事務(wù)性支持不好等等户矢,那是因?yàn)楹芏嗳瞬粫{馭Spark Streaming及Spark本身玲献。在Spark Streaming流處理的延遲時間方面,DT_Spark大數(shù)據(jù)夢工廠即將推出的Spark定制版本,會將Spark Streaming的延遲從秒級別推進(jìn)到100毫秒之內(nèi)甚至更少捌年。
SparkStreaming優(yōu)點(diǎn):
1瓢娜、提供了豐富的API,企業(yè)中能快速實(shí)現(xiàn)各種復(fù)雜的業(yè)務(wù)邏輯礼预。
2眠砾、流入Spark Streaming的數(shù)據(jù)流通過和機(jī)器學(xué)習(xí)算法結(jié)合,完成機(jī)器模擬和圖計算托酸。
3褒颈、Spark Streaming基于Spark優(yōu)秀的血統(tǒng)。
SparkStreaming能不能像Storm一樣励堡,一條一條處理數(shù)據(jù)谷丸?
Storm處理數(shù)據(jù)的方式是以條為單位來一條一條處理的,而Spark Streaming基于單位時間處理數(shù)據(jù)的应结,SparkStreaming能不能像Storm一樣呢刨疼?答案是:可以的。
業(yè)界一般的做法是Spark Streaming和Kafka搭檔即可達(dá)到這種效果,入下圖:
Kafka業(yè)界認(rèn)同最主流的分布式消息框架鹅龄,此框架即符合消息廣播模式又符合消息隊(duì)列模式揩慕。
Kafka內(nèi)部使用的技術(shù):
1、??Cache
2扮休、??Interface
3迎卤、??Persistence(默認(rèn)最大持久化一周)
4、??Zero-Copy技術(shù)讓Kafka每秒吞吐量幾百兆玷坠,而且數(shù)據(jù)只需要加載一次到內(nèi)核提供其他應(yīng)用程序使用
外部各種源數(shù)據(jù)推進(jìn)(Push)Kafka蜗搔,然后再通過Spark Streaming抓取(Pull)數(shù)據(jù)侨糟,抓取的數(shù)據(jù)量可以根據(jù)自己的實(shí)際情況確定每一秒中要處理多少數(shù)據(jù)碍扔。
通過Spark Streaming動手實(shí)戰(zhàn)wordCount實(shí)例
這里是運(yùn)行一個Spark Streaming的程序:統(tǒng)計這個時間段內(nèi)流進(jìn)來的單詞出現(xiàn)的次數(shù). 它計算的是:他規(guī)定的時間段內(nèi)每個單詞出現(xiàn)了多少次。
1秕重、先啟動下Spark集群:
我們從集群里面打開下官方網(wǎng)站
接受這個數(shù)據(jù)進(jìn)行加工不同,就是流處理的過程,剛才那個WordCount就是以1s做一個單位溶耘。
剛才運(yùn)行的時候二拐,為什么沒有結(jié)果呢?因?yàn)樾枰獢?shù)據(jù)源凳兵。
2百新、獲取數(shù)據(jù)源:
新開一個命令終端,然后輸入:
$nc?-lk?9999
現(xiàn)在我們拷貝數(shù)據(jù)源進(jìn)入運(yùn)行:
然后按回車運(yùn)行
DStream和RDD關(guān)系:
沒有輸入數(shù)據(jù)會打印的是空結(jié)果:
但是實(shí)際上庐扫,Job的執(zhí)行是Spark Streaming框架幫我們產(chǎn)生的和開發(fā)者自己寫的Spark代碼業(yè)務(wù)邏輯沒有關(guān)系饭望,而且Spark Streaming框架的執(zhí)行時間間隔可以手動配置仗哨,如:每隔一秒鐘就會產(chǎn)生一次Job的調(diào)用。所以在開發(fā)者編寫好的Spark代碼時(如:flatmap铅辞、map厌漂、collect),不會導(dǎo)致job的運(yùn)行斟珊,job運(yùn)行是Spark Streaming框架產(chǎn)生的苇倡,可以配置成每隔一秒中都會產(chǎn)生一次job調(diào)用。
Spark Streaming流進(jìn)來的數(shù)據(jù)是DStream囤踩,但Spark Core框架只認(rèn)RDD旨椒,這就產(chǎn)生矛盾了?
Spark Streaming框架中堵漱,作業(yè)實(shí)例的產(chǎn)生都是基于rdd實(shí)例來產(chǎn)生综慎,你寫的代碼是作業(yè)的模板,即rdd是作業(yè)的模板怔锌,模板一運(yùn)行rdd就會被執(zhí)行寥粹,此時action必須處理數(shù)據(jù)变过。RDD的模板就是DStream離散流埃元,RDD之間存在依賴關(guān)系,DStream就有了依賴關(guān)系媚狰,也就構(gòu)成了DStream 有向無環(huán)圖岛杀。這個DAG圖,是模板崭孤。Spark Streaming只不過是在附在RDD上面一層薄薄的封裝而已类嗤。你寫的代碼不能產(chǎn)生Job,只有框架才能產(chǎn)生Job.
如果一秒內(nèi)計算不完數(shù)據(jù),就只能調(diào)優(yōu)了.
作者:王家林
王家林微博辨宠,每日都有驚人spark技術(shù)內(nèi)幕報出:http://weibo.com/ilovepains
資料來源于:DT_大數(shù)據(jù)夢工廠(IMF傳奇行動絕密課程)
更多私密內(nèi)容遗锣,請關(guān)注微信公眾號:DT_Spark
如果您對大數(shù)據(jù)Spark感興趣,可以免費(fèi)聽由王家林老師每天晚上20:00開設(shè)的Spark永久免費(fèi)公開課嗤形,地址YY房間號:68917580