《BIG DATA大數據日知錄 架構和算法》讀書筆記

1.數據分片和路由

  • Hash
    • Hash
      • H(Key) = hash(key) mod K
    • 虛擬桶(Virtual Buckets)
      • 先hash到桶,在Hash,多加一層Hash便於擴展
    • 一致性Hash
      • 分佈式Hash表(DHT),P2P對等網絡,構成環,節點加入和離開自動調整
  • 範圍
    • 如HBase中的LSM樹

2.數據複製和一致性

  • 基本原則
    • CAP(強一致性、可用性和分區容忍性),CP、AP,涉及到網絡分區的(P),CAP不可兼得
    • ACID(原子、一致、隔離、持久)
    • BASE(基本可用B容許偶爾失敗、軟狀態Soft State、最終一致性Eventual Consistency)
      • BASE原則是犧牲一致性達到高可用
    • 冪等性(f(f(x)) = f(x)),反覆調用,狀態正確
  • 一致性模型
    • 強一致性
    • 最終一致性,一個時間窗口內數據容許不一致
    • 因果一致性
  • 副本更新策略 *
  • 一致性協議
    • 兩階段提交協議(2PC)
    • 向量時鐘(Vector Clock)
    • RWN協議(成功讀取R + 成功寫入W > 數據備份數N)
    • Paxos協議
      • 安全、可用
      • 副本狀態機、Log
      • Proposer、Acceptor、Learner
    • Raft協議
      • 可理解、肯定

3.經常使用算法和數據結構

  • Bloom Filter布隆過濾器
    • 用位表示元素是否存在,1到多個獨立的hash,空間效率極高
    • 改進,加入計數,用於刪除成員
  • Skip List跳躍表
    • 可替代平衡二叉樹,O(Log(n))
  • LSM樹
    • 大量隨機寫,轉化爲批量順序寫
  • Merkle哈希樹
    • 層級的hash樹
    • 快速定位數據變化部分
    • 比特幣
  • Snappy和LZSS壓縮算法
  • Cuckoo哈希
    • 採用交換解決hash衝突

4.集羣資源管理和調度

  • 要解決的基本問題
    • 資源異質性、工做負載異質性,即組成元素差別較大
    • 數據局部性
    • 搶佔式調度和非搶佔式調度
    • 資源分配粒度,Job仍是Task
    • Starvation和Dead Lock
    • 資源隔離
  • 資源管理和調度泛型
    • 集中式調度器、Borg
    • 兩級調度器,mesos、YARN
    • 狀態共享調度器、Omega
  • Mesos
  • YARN
    • RM,資源管理器,Resource Manager
    • AM,做業的應用服務器,Application Manager
    • NM,每一個機器的節點服務器,Node Manager

5.分佈式協調系統

  • Chubby,Google
    • 基於Paxos一致性協議
  • ZooKeeper
    • 可擴展、高吞吐、分佈式協調系統
    • 應用場景:領導選舉、配置管理、組成員管理、任務分配、鎖管理
    • HBase、Storm、Solr、Kafka...

6.分佈式通訊

  • 序列化、反序列化
    • Protocol Buffer
    • Thrift
    • Avro,json定義schema
  • 消息隊列
    • Kafka
  • 多播通訊(Application-Level Multi-broadcast)
    • Gossip協議,Epidemic Protocol感染協議,如Cassandra維護機器節點狀態

7.數據通道

  • Log採集
    • Chukwa,基於Hadoop
    • Scribe,Facebook
  • 數據總線,數據變化通知通道,通常基於數據庫日誌挖掘
    • Databus、LinkedIn
    • Wormhole、Facebook
  • 數據導入導出
    • Sqoop,hadoop和其餘關係或者nosql以前的導入導出

8.分佈式文件系統

  • GFS,Google
    • Colossus,下一次GFS
  • HDFS,Hadoop
  • HayStack,對象存儲系統,Facebook
  • Erasure Code 糾刪碼
    • 減小數據備份,提供可靠性
    • Reed-Solomon編碼
    • LRC編碼
    • HDFS-RAID架構

9.內存kv數據庫

  • RAMCloud
  • Redis
  • MemBase,CouchBase

10.列數據庫

  • BigTable
  • PNUTS
  • MegaStore
  • Spanner
  • BigTable在跨行、跨表的強一致性需求場景表現不佳,MegaStore必定程度上緩解,可是寫性能不佳,Spanner進一步升級,支持類SQL和事務

11.大規模批處理系統

  • MapReduce
    • 求和,Summarization Pattern
    • 過濾,Filtering Pattern,top10等
    • 組織數據,Data Organization Pattern,分片、排序
    • Join模式,Join Pattern,Reduce-Side、Map-Side Join
  • DAG計算模型
    • Dryad,微軟
    • FlumeJava,Google
    • Tez,Apache

12.流式計算

  • 架構
    • 主從,Store
    • P2P,S4
    • Samza

13.交互式數據分析

  • Hive系,Facebook
    • SQL-on-Hadoop
    • 耦合Hadoop致使效率低下
    • StingerIntiative,改進Hive
  • Shark系
    • 基於Spark
  • Dremel系,須要關注
    • Dremel、PowerDrill、Impala、Presto
  • 混合
    • Hadoop DB

14.圖數據庫:架構和算法

  • 圖挖掘問題
    • PageRank計算
    • 單源最短路徑
    • 二部圖最大匹配
  • 在線
    • TAO, Facebook
  • 離線
    • Pregel,Google
    • Giraph,基於Hadoop的開源版本
    • GraphChi
    • PowerGraph

15.機器學習:泛型和架構

  • 概念
    • 監督學習,分類、迴歸
    • 非監督學習,聚類
  • 分佈式學習泛型
    • 同步泛型
    • 異步泛型
    • 部分同步泛型
  • 計算模型
    • mapreduce迭代計算模型
    • BSP,總體同步並行計算
    • SSP,部分同步
  • 架構
    • Hadoop
      • 利用平臺,Oryx Cloudera, Mahout Apache
      • 改造平臺,Twister, Haloop
    • Spark及MLBase *
    • Parameter Server
      • DistBelief
      • Petuum

16.機器學習:分佈式算法

  • 計算廣告
    • 邏輯迴歸
    • 並行隨機梯度降低
    • 批學習並行邏輯迴歸
  • 推薦系統
    • 矩陣分解
    • ALS-WR算法
    • 並行ALS-WR算法
  • 搜索引擎
    • 機器學習排序
    • LambdaMART
    • 分佈式LambdaMART
  • 天然語言處理
    • 文檔類似性計算
  • 社交挖掘
    • 譜聚類
    • 並行譜聚類
  • 深度學習
    • DistBelief

17.增量計算

  • Percolator
  • Kineograph
  • DryadInc
相關文章
相關標籤/搜索