日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

HBase 权威指南笔记

發布時間:2023/12/10 编程问答 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 HBase 权威指南笔记 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

HBase 權威指南筆記

hadoop

  • core-site.xml
  • hdfs-site.xml
  • mapred-site.xml
  • yarn-site.xml
$ ./sbin/start-dfs.sh $ ./sbin/stop-dfs.sh

hbase

  • hbase-site.xml
$ ./bin/start-hbase.sh $ ./bin/hbase shell $ ./bin/stop-hbase.sh
  • scan
    • scan withStartRow withEndRow 的參數類型與 ID 必須一致
  • 緩存是面向行的操作,批量是面向列的操作
    • RPC 個數=(行數*每行列數)/min(每行列數,批量大小)/緩存大小+1次打開scan+1次關閉scan
  • filter 作用與 Get、Scan setFilter 185頁
    • 謂詞下推
    • 比較器
      • BinaryComparator
      • BinaryPrefixComparator
      • NullComparator
      • BitComparator 只能是 EQUAL NOT_EQUAL
      • RegexStringComparator 只能是 EQUAL NOT_EQUAL
      • SubstringComparator 只能是 EQUAL NOT_EQUAL
    • 過濾器
      • RowFilter 行鍵 ID 過濾器
      • FamilyFilter 列族名過濾器
      • ValueFilter 值過濾器,但是不能指定某列,只會返回匹配到列值
      • QualifierFilter 列名過濾器
      • DependentColumnFilter 參與列過濾器,某列值相等后按時間戳查找合并其它列,某個列必須大于小于等于某個值
    • 專用過濾器
      • SingleColumnValueFilter 值過濾,默認會返回每匹配的
      • SingleColumnValueExcludeFilter 單列排除過濾器,默認會返回每匹配的,參考列不會包括到結果中,只有這個不支持 setBatch,如果加入 FilterList 則 FilterList 不支持 setfBatch
      • PrefixFilter 前綴過濾器
      • PageFilter 分頁過濾器
      • KeyOnlyFilter 行鍵過濾器,有參數設置值返回列名不返回值
      • FirstKeyOnlyFilter 首次行鍵過濾器,訪問一行中第一列
      • IncludsiveStopFilter 包含結束到過濾器
      • TimestampsFilter 時間戳過濾器,具體時間列表或時間范圍
      • ColumnCountGetFilter 列計數過濾器,超過列數就停止掃描,不適合 scan 適合 get
      • ColumnPaginationFilter 列分頁過濾器,對列而不是行
      • ColumnPrefixFilter 列前綴過濾器
      • RandomRowFilter 隨機行過濾器,指定種子產生隨機數過濾
    • 附加過濾器
      • SkipFilter 跳轉過濾器,如果匹配列值,則忽略該行數據
      • WhileMatchFilter 全匹配過濾器,如果發現匹配,就直接返回結果并停止掃描
    • FilterList 默認 and,可以往 FilterList 添加 FilterList 實現括號功能,添加順序會影響執行效率
    • 自定義過濾器
      • 實現 Filter 或繼承 FilterBase
  • 計數器:讀取并修改,原子操作
    • 初始值 0,類型必須是 long
  • 協處理器
    • observer 可以實現 HBase DML DDL DCL DQL 監控
      • RegionObserver
      • MasterObserver
      • WALObserver
    • endpoint 可以實現在直接在每個 Region 計算,而后返回每個結果給客戶端由客戶端歸并結果,減少數據傳輸
    • 可以被鏈接起來,就像過濾器
    • 分為 SYSTEM(高)和 USER(低),可以有序號
  • HTablePool
  • 刪除表、修改表結構需要先禁用表
    • enable 啟用
    • disable 禁用
    • avaliable 物理狀態的可用
  • 存儲
    • 同一個列族的數據存在同一個文件
    • 最新的數據會最先讀取到
    • 先按行鍵升序存儲
    • 再按列鍵升序存儲
    • 最后按時間降序存儲
    • 不存 null 的數據
    • 通過時間戳查詢會很快,但是通過特定列或值查詢則性能一般
    • 查詢性能:行鍵 > 列族 > 列限定符鍵 > 時間戳鍵 > 值
    • HBase 只能按行分片,高表更有優勢
    • 高表(空列限定符鍵)、寬表
      • 高表的數據鍵左移,查詢性能更好
      • 寬表的數據鍵右移,查詢性能一般
    • 高表一行記錄分多行,寬表一行記錄仍然是一行,所以高表不能保證原子性
    • 解決某個熱點數據導致集群數據分布不均的方法之一:(這里前綴和集群 Region 數匹配)Long.hashCode(Time)+"-"+Time(這樣可以防止某天數據過多都落在同一個 Region)
    • HBase 只保證行級原子性
    • 輔助索引不能保證數據添加的原子性,但是可以先添加輔助索引,再添加數據,如果數據失敗,可以通過定時任務(或 HBASE 支持的 MapReduce)刪除輔助索引
    • 降序索引需要反轉存儲,如:Long.MAX_VALUE - Time
    • 布隆過濾器
      • 如果根據行鍵掃描,使用行加列級的布隆過濾器沒有任何幫助
      • 反之如果是根據行加列的讀操作,則使用行級的布隆過濾器可以減少需要檢查的文件數量
      • 如果一行記錄在所有文件中都有分布,行加列級布隆過濾器很有用,但是如果每次查詢修改都包含整行記錄,這個過濾器仍然很難起到作用
      • 行級比行加列級布隆過濾器占用空間小
      • 布隆過濾器可容納元素數量有一個最大值
      • 盡量使用行級布隆過濾器
      • 單元格如果較小可以不使用布隆過濾器
    • 版本控制
      • 可以指定版本,也可以由 HBase 服務器隱式指定,但要注意 HBase 服務器之間的時間同步問題
      • 如果設置服務器只保存最新的 3 個版本數據,則插入 6 條數據,再刪除最新的 2 條,可能第2、3條數據仍存在,因為 HBase 可能延后刪除老數據(只會出現在 Major 合并被執行之前)(要避免的話用戶可以刪除后立即強制執行 Major 合并)
      • 用戶可以不使用時間戳,而是自定義一個單調遞增的數字(不能是負數),但這樣必須每次 put 都必須指定這個數據作為版本,否則服務器會使用時間戳
  • 優化
    • master 通常不會出現垃圾回收問題,因為 master 沒處理過重的負載,并且實際的數據服務并不經過它
    • HBase_OPTS JVM 參數針對:master + region
    • HBase_RegionServer_OPTS JVM 參數針對:region
    • region 如果垃圾回收停頓時間過長,master 會認為其不可用,會拋棄之,此時 region 垃圾回收后發現自己被拋棄會自行關閉
    • 壓縮
      • CPU 壓縮、解壓時間比磁盤讀、寫能耗費更短時間
      • 定義列族時可以指定壓縮算法
    • region 可分割、合并、移動、壓縮
    • 批量操作 setAutoFlush(false) flushCommits()
    • 垃圾回收時間要比 zk 會話超時時間短
    • 推薦 region 使用壓縮
    • 自帶了性能測試,第一次安裝時建議測試一下
    • HBase 默認日志為 debug 級別
    • 故障處理 hbck

總結

以上是生活随笔為你收集整理的HBase 权威指南笔记的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。