第一步:需求:數據的輸入和數據的產出,大數據技術項目好比一臺榨汁機,
數據輸入相當於例如蘋果、檸檬等,然後通過榨汁機產出果汁;
第二步:數據量、處理效率、可靠性、維護性、簡潔性
第三步:數據建模
第四步:架構設計:數據怎麼進來,輸出怎麼展示,最最重要的是處理流出的架構;
第五步:我會再次思考大數據系統和企業IT系統的交互;
第六步:最終確定的技術(例如Spark、Kafka、Flume、HBase)選擇、規範等
第七步:基於數據建模寫基礎服務代碼
第八步:正式編寫第一個模塊!編碼、測試、調試、改進等等
第九步:實現其它的模塊,並完成測試和調試等
第十步:測試和驗收
Data Source:
機器 和用戶的行爲記錄
Socket或者HTTP協議傳輸數據到服務端
Server:
第一步:服務器例如Apache,Nginx,Tomcat等接受到數據;
第二步:J2EE等技術處理接收到的數據,一般是通過日誌的方式 把數據保存在特定的目錄下面或者數據庫;
第三步:日誌放置的目錄是大數據組件中的Flume或者Kafka監控的目錄
日誌一般會經過Flume或者Kafka進行處理;
有時候數據比較複雜,需要我們使用定時系統或自己開發程序和腳本對數據進行初步處理,然後交給下游系統,一般是Flume
分佈式數據管理:
這一個步驟重點說Flume:
Flume會監控具體的目錄,當有數據來臨的時候會把數據Sink到下游系統中.
此時數據是直接交給HDFS?
還是交給數據倉庫系統Hive?
還是交給消息組件Kafka?
還是交給流處理系統呢?
流處理系統:
現在主要適用Storm和Spark Streaming
從Spark Streaming的角度考慮,我們在流處理的過程中可能用SparkSQL,ML,Graphx等;
當今大數據業界80%到90%都是基於Hive數據倉庫
Hive:
在數據倉庫中建表並獲取上游的日誌數據
數據的離線分析:
Hadoop和Spark,其實絕大多數據情況下都 是使用Hive本身中或者Spark SQL進行數據的多維度分析;
定時調度的問題:
其實離線數據分析的一個基本任務是進行數據清洗。