利用wal把資料寫入到hdfs中
步驟一:設定checkpoint目錄
streamingcontext.setcheckpoint(hdfsdirectory)
步驟二:開啟wal日誌
sparkconf.set("spark.streaming.receiver.writeaheadlog.enable", "true")
步驟三:需要reliable receiver當資料寫完了wal後,才告訴資料來源資料已經消費,對於沒有告訴資料來源的資料,可以從資料來源中重新消費資料。
步驟四:取消備份
使用storagelevel.memory_and_disk_ser來儲存資料來源,不需要字尾為2的策略了,因為hdfs已經是多副本了。
reliable receiver : 當資料接收到,並且已經備份儲存後,再傳送回執給資料來源
unreliable receiver : 不傳送回執給資料來源
wal使用在檔案系統和資料庫中用於資料操作的永續性,先把資料寫到乙個持久化的日誌中,然後對資料做操作,如果操作過程中系統掛了,恢復的時候可以重新讀取日誌檔案再次進行操作。
對於像kafka和flume這些使用接收器來接收資料的資料來源。接收器作為乙個長時間的任務執行在executor中,負責從資料來源接收資料,如果資料來源支援的話,向資料來源確認接收到資料,然後把資料儲存在executor的記憶體中,然後在exector上執行任務處理這些資料。
如果wal啟用了,所有接收到的資料會儲存到乙個日誌檔案中去(hdfs), 這樣儲存接收資料的永續性,此外,如果只有在資料寫入到log中之後接收器才向資料來源確認,這樣driver重啟後那些儲存在記憶體中但是沒有寫入到log中的資料將會重新傳送,這兩點保證的資料的無丟失。
開啟推測機制:
spark.speculation=true,每隔一段時間來檢查有哪些正在執行的task需要重新排程(spark.speculation.interval=100ms),假設總的task有10個,成功的task的數量 > 0.75 * 10(spark.speculation.quantile=0.75),正在執行的task的執行時間 > 1.5 * 成功執行task的平均時間(spark.speculation.multiplier=1.5),則這個正在執行的task需要重新等待排程。
注意:
在分布式環境中導致某個task執行緩慢的情況有很多,負載不均、程式bug、資源不均、資料傾斜等,而且這些情況在分布式任務計算環境中是常態。speculative task這種以空間換時間的思路對計算資源是種壓榨,同時如果speculative task本身也變成了slow task會導致情況進一步惡化。
大資料 什麼是大資料
1.什麼是資料 資料是事實或觀察的結果,是對客觀事物的邏輯歸納,是用於表示客觀事物的未加工的原始材料。資料經過加工之後就成為資訊。2.大資料的定義 麥肯錫給出的大資料定義是 大資料是指大小超過常規的資料庫工具獲取 儲存 管理和分析能力的資料集。但它同時強調,並不是說一定要超過特定的tb值的資料才能是...
大資料 什麼是大資料?
海量的資料 tb pb zb。高增長率 資料的形成速度 使用爬蟲 多樣化 資料是結構化 非結構化 半結構化。電商行業 電商行業是最早利用大資料進行精準營銷,它根據客戶的消費習慣提前生產資料 物流管理等,有利於精細社會大生產。由於電商的資料較為集中,資料量足夠大,資料種類較多,因此未來電商資料應用將會...
大資料之大資料時代
下面,開啟第一講 大資料之大資料時代 講大資料一定脫離不開乙個大的背景。下面先從大資料背景講起。縱觀整個it發展史,也不過短短幾十年,在這幾十年裡,我們這個資訊化社會經歷了三次大的資訊化浪潮。第一次浪潮是在上個世紀90年代前,1980年前後,pc機進入市場,ibm公司制定了全球的pc標準,即一台電腦...