前言幾個故事大數據都是騙人的,一頭豬悲催的豬數據不全不是大數據,不可信過去->將來啤酒尿布這個案例僅是一碗數據分析的“心靈雞湯”——聽起來很爽,但信不得!GFT 預測 H1N1搜索詞和H1N1敏感性關聯“預測即干涉”悖論和“菜農種菜”,過度擬合數據並非越大越好:谷歌流感趨勢錯在哪兒了?更準確的預測模... ...
前言
幾個故事
- 大數據都是騙人的,一頭豬悲催的豬
- 數據不全不是大數據,不可信
- 過去->將來
- 啤酒尿布
- 這個案例僅是一碗數據分析的“心靈雞湯”——聽起來很爽,但信不得!
- GFT 預測 H1N1
- 搜索詞和H1N1敏感性關聯
- “預測即干涉”悖論和“菜農種菜”,過度擬合
- 數據並非越大越好:谷歌流感趨勢錯在哪兒了?
- 更準確的預測模型
特性
- 4V,有價值的,海量的,多樣化的,快速的(產生,處理)
挑戰
- 對現有資料庫管理技術的挑戰
- 經典資料庫並沒有考慮數據的多類別
- 實時性的技術挑戰
- 網路架構、數據中心、運維的挑戰。
- 系統瓶頸:存儲容量、讀寫速度、計算效率
- 其他挑戰:數據隱私、數據源的複雜多樣等
技術基礎
涉及數據採集、數據存儲、數據處理/分析/挖掘、可視化。學習上可以看書、博客、網站。
系統&語言
- Linux
- Shell
- Java
- Python
- Scala - 多範式(multi-paradigm)的編程語言,設計初衷是要集成面向對象編程和函數式編程的各種特性
- R - 用於統計分析,圖形表示和報告的編程語言和軟體環境
框架
- Hadoop/Yarn - Apache基金會所開發的分散式系統基礎架構
- HDFS - 分散式存儲系統,包含NameNode,DataNode
- Hbase - 資料庫。非常適合用來做大數據的實時查詢。Facebook用Hbase存儲消息數據併進行消息實時的分析
- Hive - 數據倉庫 可以用SQL查詢,可以運行Map/Reduce程式。用來計算趨勢或者網站日誌,不應用於實時查詢,需要很長時間返回結果。
- Spark - Scala語言中實現的類似於Hadoop MapReduce的通用並行框架,除了Hadoop MapReduce所具有的優點,但不同於MapReduce的是job中間輸出結果可以保存在記憶體中,從而不需要讀寫HDFS,因此Spark能更好的適用於數據挖掘與機器學習等需要迭代的MapReduce演算法。
- Kafka - 高吞吐量的分散式發佈訂閱消息系統,可以處理消費者規模的網站中的所有動作流數據(瀏覽,搜索等)。相對Hadoop的日誌數據和離線分析,可以實現實時處理。目前通過Hadoop的並行載入機制來統一線上和離線的消息處理
大數據計算模式
批處理計算
- MapReduce,分散式並行處理,離線計算
- Spark,實時,記憶體
流式計算
- Scribe ,Flume,Storm,S4,SparkStreaming
- 實時查詢,秒級響應
迭代計算
- HaLoop ,iMapReduce,Twister,Spark
- 逐步逼近,xk+1 - x^ = ε
圖計算
- Pregel, PowerGrapg, GraphX
- 圖和鄰接矩陣,鄰接表
ELK
需求
通常日誌由伺服器生成,輸出到不同的文件中,一般會有系統日誌、 應用日誌、安全日誌。這些日誌分散地存儲在不同的機器上。日誌數據在以下幾方面具有非常重要的作用:
- 數據查找:通過檢索日誌信息,定位相應的 bug ,找出解決方案
- 服務診斷:通過對日誌信息進行統計、分析,瞭解伺服器的負荷和服務運行狀態
- 數據分析:可以做進一步的數據分析,比如根據請求中的課程 id ,找出 TOP10 用戶感興趣課程。
以前做法
通常當系統發生故障時,工程師需要登錄到各個伺服器上,使用 grep / sed / awk 等 Linux 腳本工具去日誌里查找故障原因。在沒有日誌系統的情況下,首先需要定位處理請求的伺服器,如果這台伺服器部署了多個實例,則需要去每個應用實例的日誌目錄下去找日誌文件。每個應用實例還會設置日誌滾動策略(如:每天生成一個文件),還有日誌壓縮歸檔策略等。
這樣一系列流程下來,對於我們排查故障以及及時找到故障原因,造成了比較大的麻煩。因此,如果我們能把這些日誌集中管理,並提供集中檢索功能,不僅可以提高診斷的效率,同時對系統情況有個全面的理解,避免事後救火的被動。
現在做法
針對這些問題,為了提供分散式的實時日誌搜集和分析的監控系統,我們採用了業界通用的日誌數據管理解決方案 - 它主要包括 Elasticsearch 、 Logstash 和 Kibana 三個系統。通常,業界把這套方案簡稱為ELK,取三個系統的首字母。3個系統作用:
- Logstash :數據收集處理引擎。支持動態的從各種數據源搜集數據,並對數據進行過濾、分析、豐富、統一格式等操作,然後存儲以供後續使用。
- Kibana :可視化化平臺。它能夠搜索、展示存儲在 Elasticsearch 中索引數據。使用它可以很方便的用圖表、表格、地圖展示和分析數據。
- Elasticsearch :分散式搜索引擎。具有高可伸縮、高可靠、易管理等特點。可以用於全文檢索、結構化檢索和分析,並能將這三者結合起來。Elasticsearch 基於 Lucene 開發,現在使用最廣的開源搜索引擎之一,Wikipedia 、StackOverflow、Github 等都基於它來構建自己的搜索引擎。
其他
大數據,雲計算,物聯網
- 大數據技術維度:數據採集,分析處理,存儲,隱私保護,可視化處理
- 雲計算的關鍵技術:虛擬化、分散式存儲、分散式計算、多租戶(數據隔離、客戶化配置、架構擴展、性能定製)等。
- 物聯網的技術架構:感知層、網路層、處理層、應用層。物聯網的關鍵技術:識別和感知技術、網路和通信技術、數據挖掘和融合技術。
- 區別,大數據側重對海量數據的存儲、處理、分析,發現價值,服務生活;雲計算本質旨在整合和優化各種IT資源並通過網路以服務的方式,廉價地提供給用戶;物聯網的發展目標是實現物物相連,應用創新是物聯網發展的核心
參考文檔
- 關於大數據的10個小故事 - 入門理解
- 怎樣進行大數據的入門級學習? - 階段學習簡要說明
- 從 ELK 到 EFK 演進 - 幾個演進圖
- 大規模圖計算系統綜述 - 圖計算概念理解
- 大數據關鍵技術、及計算模式介紹,以及大數據與雲計算、物聯網的關係 - 概念理解
- 大數據基礎知識 - 基礎概念