1. 程式人生 > >2. 大資料基礎

2. 大資料基礎

前言

幾個故事

  • 大資料都是騙人的,一頭豬悲催的豬
    • 資料不全不是大資料,不可信
    • 過去->將來
  • 啤酒尿布
    • 這個案例僅是一碗資料分析的“心靈雞湯”——聽起來很爽,但信不得!
  • GFT 預測 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的並行載入機制來統一線上和離線的訊息處理

大資料計算模式

批處理計算

  1. MapReduce,分散式並行處理,離線計算
  2. Spark,實時,記憶體

流式計算

  1. Scribe ,Flume,Storm,S4,SparkStreaming
  2. 實時查詢,秒級響應

迭代計算

  1. HaLoop ,iMapReduce,Twister,Spark
  2. 逐步逼近,xk+1 - x^ = ε

圖計算

  1. Pregel, PowerGrapg, GraphX
  2. 圖和鄰接矩陣,鄰接表

ELK

需求

通常日誌由伺服器生成,輸出到不同的檔案中,一般會有系統日誌、 應用日誌、安全日誌。這些日誌分散地儲存在不同的機器上。日誌資料在以下幾方面具有非常重要的作用:

  • 資料查詢:通過檢索日誌資訊,定位相應的 bug ,找出解決方案
  • 服務診斷:通過對日誌資訊進行統計、分析,瞭解伺服器的負荷和服務執行狀態
  • 資料分析:可以做進一步的資料分析,比如根據請求中的課程 id ,找出 TOP10 使用者感興趣課程。

以前做法

通常當系統發生故障時,工程師需要登入到各個伺服器上,使用 grep / sed / awk 等 Linux 指令碼工具去日誌裡查詢故障原因。在沒有日誌系統的情況下,首先需要定位處理請求的伺服器,如果這臺伺服器部署了多個例項,則需要去每個應用例項的日誌目錄下去找日誌檔案。每個應用例項還會設定日誌滾動策略(如:每天生成一個檔案),還有日誌壓縮歸檔策略等。

這樣一系列流程下來,對於我們排查故障以及及時找到故障原因,造成了比較大的麻煩。因此,如果我們能把這些日誌集中管理,並提供集中檢索功能,不僅可以提高診斷的效率,同時對系統情況有個全面的理解,避免事後救火的被動。

現在做法

針對這些問題,為了提供分散式的實時日誌蒐集和分析的監控系統,我們採用了業界通用的日誌資料管理解決方案 - 它主要包括 Elasticsearch 、 Logstash 和 Kibana 三個系統。通常,業界把這套方案簡稱為ELK,取三個系統的首字母。3個系統作用:

  • Logstash :資料收集處理引擎。支援動態的從各種資料來源蒐集資料,並對資料進行過濾、分析、豐富、統一格式等操作,然後儲存以供後續使用。
  • Kibana :視覺化化平臺。它能夠搜尋、展示儲存在 Elasticsearch 中索引資料。使用它可以很方便的用圖表、表格、地圖展示和分析資料。
  • Elasticsearch :分散式搜尋引擎。具有高可伸縮、高可靠、易管理等特點。可以用於全文檢索、結構化檢索和分析,並能將這三者結合起來。Elasticsearch 基於 Lucene 開發,現在使用最廣的開源搜尋引擎之一,Wikipedia 、StackOverflow、Github 等都基於它來構建自己的搜尋引擎。

其他

大資料,雲端計算,物聯網

  1. 大資料技術維度:資料採集,分析處理,儲存,隱私保護,視覺化處理
  2. 雲端計算的關鍵技術:虛擬化、分散式儲存、分散式計算、多租戶(資料隔離、客戶化配置、架構擴充套件、效能定製)等。
  3. 物聯網的技術架構:感知層、網路層、處理層、應用層。物聯網的關鍵技術:識別和感知技術、網路和通訊技術、資料探勘和融合技術。
  4. 區別,大資料側重對海量資料的儲存、處理、分析,發現價值,服務生活;雲端計算本質旨在整合和優化各種IT資源並通過網路以服務的方式,廉價地提供給使用者;物聯網的發展目標是實現物物相連,應用創新是物聯網發展的核心

參考文件