1、大資料專案處理流程和步驟
第一步:需求:
資料的輸入和資料的產出,大資料技術專案好比一台榨汁機,資料輸入相當於例如蘋果、檸檬等,然後通過榨汁機產出果汁;
第二步:資料量、處理效率、可靠性、維護性、簡潔性
第三步:資料建模
第四步:架構設計:資料怎麼進來,輸出怎麼展示,最最重要的是處理流出的架構;
第五步:我會再次思考大資料系統和企業it系統的互動;
第六步:最終確定的技術(例如spark、kafka、flume、hbase)選擇、規範等
第七步:基於資料建模寫基礎服務**
第八步:正式編寫第乙個模組!編碼、測試、除錯、改進等等
第九步:實現其它的模組,並完成測試和除錯等
第十步:測試和驗收
2、大資料專案的技術架構流程圖
1)後台系統產生資料:機器或者使用者的行為資料。
2)通過socket或者http協議,傳輸資料到服務端。
第一步:在伺服器端,例如apache、nginx、tomcat等web系統負責接收到資料;
第二步:web系統由j2ee等技術實現,負責處理接收到的資料,一般是通過日誌的方式把資料儲存在特定的目錄下面或者資料庫;
第三步:日誌放置的目錄是大資料元件中的flume或者kafka監控的目錄。
3)日誌一般會經過flume或者kafka進行處理,有時候資料比較複雜,需要使用定時系統或者開發程式對資料進行初步處理,然後交給下游系統,一般是flume。
4)這乙個步驟重點說flume:
flume會監控具體的目錄,當有資料來臨的時候會把資料sink到下游系統中:
- 此時資料是直接交給hdfs呢?
- 還是交給資料倉儲系統hive呢?
- 還是交給訊息元件kafka呢?
- 還是直接交給流處理系統呢?
4.1) 方案1:資料交給kafka
kafka會對資料進行高效的分布式儲存, 流處理系統消費kafka的資料, 流處理系統:現在主要適用storm和spark streaming,從spark streaming的角度考慮,我們在流處理的過程中可能使用spark sql、ml、graphx等;
4.2) 方案2:flume把資料交給hive,在hive中建表並獲取上游的日誌資料。
然後基於hive,進行資料的離線分析:
hadoop和spark,其實絕大多數情況下都是使用hive本身或者spark sql進行資料的多維度分析。
其實離線資料分析的乙個基本任務是進行資料清洗。
當今大資料業界80%到90%都是基於hive資料倉儲的資料分析。
3、附錄
flume和kafka有什麼區別及聯絡
這兩個差別很大,使用場景區別也很大。
1) flume:日誌採集。
線上資料一般主要是落地檔案或者通過socket傳輸給另外乙個系統。
這種情況下,很難讓線上已有的應用去修改介面,直接向kafka裡寫資料。
這時候就需要flume這樣的系統幫你去做傳輸。
2) kafka:更應該定位為中介軟體系統。3) kafka+flume 典型用法:
線上資料 ==> flume ==> kafka ==> hdfs ==>mr離線計算
或者 線上資料 ==> flume ==> kafka ==> spark streaming / storm
spark2 0 用socket接收資料並處理
假如你想監聽乙個資料伺服器上的tcp socket來獲取源源不斷的資料流,同時你想要實時的計算單詞的數量。object socketcomplete output可以定義不同的儲存方式,有如下3種 1 complete mode 整個更新的結果集都會寫入外部儲存。整張表的寫入操作將由外部儲存系統的聯...
Spark2 0以下讀取csv資料並轉化為RDD
當spark 版本低於2.0.0時,以及不借助與其他包的情況下,可以用如下方法將csv資料轉化成rdd sc sparkcontext 獲取rdd csvfile sc.textfile csv 逗號分隔 all csvfile.map lambda line line.split 當有標題的時候,...
第12課 spark高可用 HA 框架
worker管理資源 記憶體,cpu 只有standby模式的master變成active模式時才能想集群提交任務,master切換過程不會影響程式的執行 原因 程式在具體執行之前已經向集群申請過資源,這些資源已經提交給driver了,也就是說已經分配好資源了,這是粗粒度分配,一次性分配資源後不需要...