Hadoop應用架構-OReilly 2015-讀書筆記

Hadoop Application Architectures-OReilly 2015-ReadingNotes.md

數據建模

  • p23 HBase基於TTL的舊數據清除(合併到新HFile時跳過)
  • p25 爲了能夠在Hive外部使用metastore,一個新項目HCatalog啓動了

數據移動

  • p32 HBase的掃描速度大約是HDFS的1/10-1/8,訪問單個記錄的時間爲毫秒級別
  • p36 Flume攔截器?
  • p40 小文件:
    • 使用Solr
    • 使用HBase
    • 使用容器格式,如SequenceFiles或Avro
  • 可掛載的HDFS
    • Fuse-DFS(會顯著影響性能,模型持續性較差?)
    • NFSv3
  • Sqoop:Hadoop與關係數據庫的批量傳輸
    • 可能的瓶頸:數據傾斜:Mapper對主鍵的劃分不均勻
    • 2種方法鑑別更新過的行:
      1. Sequence ID
      2. 時間戳
  • Flume架構:數據源 --> 攔截器 --> 選擇器 --> Channel --> Sink
  • p56 Camus: 從Kafka中批量加載數據

數據處理

  • MapReduce
  • Spark
    • RDD
  • 抽象層
    • Pig
    • Crunch
      • 核心:Pipeline對象,done()觸發流水線的執行
    • Cascading
  • Hive
    • 外部表導入:CREATE EXTERNAL TABLE ... FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION 'foo';
    • 收集統計信息(用於CBO?):ANALYZE TABLE foo COMPUTE STATISTICS
    • 支持各種不同的分佈式JOIN:
      • map關聯(hash關聯)
      • bucketed join
      • sorted buckted merge join
    • EXPLAIN(查詢計劃):用戶應該養成習慣,查看Hive究竟在背後做了什麼
  • Impala
    • DataNode:查詢規劃器 --> 查詢協調器 --> 查詢執行器
    • 分佈式MPP數據庫:(參考本書附錄)
      • broadcast hash join(將小表複製到所有大表數據所在的節點上,以hashtable形式加載到內存作過濾)
      • partitioned hash join(先hash分區,再分發,每個節點緩存數據集的一個子集)
    • 與Hive不同,Impala後臺服務是長期運行的進程
    • 用LLVM編譯查詢,將查詢用到的方法編譯爲優化的機器碼
    • p102 如果查詢需要掃描非常多的數據,節點故障不可以強制要求重啓恢復查詢,推薦使用Hive

通用範式

  • 依據主鍵去重
  • windowing分析
    • 注意SQL語句裏的OVER關鍵詞
  • 基於時間序列的更新
    • 利用HBase的版本特性
    • 使用RecordKey-StartTime作爲row key
    • 重寫HDFS更新整個表
    • 利用分區分開存儲當前記錄和歷史記錄

圖處理

  • BSP模型
  • Giraph
  • Spark GraphX

協調調度

  • Airbnb Chronos on Mesos?
  • OOzie
    • 工作流範式
      • 點對點
      • 扇出(fork-and-join)
      • 分支決策
    • 調度模式
      • 頻率
      • 時間/數據觸發

近實時處理

  • p170 lambda架構
  • Storm
    • 在要求“僅處理1次”時,2個選擇:(1)事務性拓撲;(2)Trident
  • Spark Streaming

點擊流分析

欺詐檢測

數據倉庫

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章