一種HBase表資料遷移方法的優化

2022-05-02 00:00:12 字數 901 閱讀 8069

1.背景調研:

目前存在的hbase資料遷移主要分如下幾類:

根據上圖,可以看出:

其實主要分為兩種方式:(1)hadoop層:因為hbase底層是基於hdfs儲存的,所以可以通過把hdfs上的資料拷貝的方式來實現,即:distcp。

(2)hbase層:主要是基於hbase資料層的

copytable:需要scan全表資料,效率比較低下

export/import:scan全表資料到檔案然後再import其他集群上

snapshot:通過快照的方式,只對元資料進行轉殖,不拷貝實際資料,因此效能比較好

2.方案優化

基於hadoop層的資料拷貝是拷貝了表中的全部資料,而基於hbase層操作其中部分也是拷貝全表資料,當需要寫部分列資料或者部分時間段資料的時候就會存在問題,而且一次性掃瞄全部資料,會對hbase效能影響很大,在此基礎上,本文主要針對hbase表資料部分列資料遷移,以及對全表掃瞄的問題做了優化。

3.步驟

(1)選擇需要遷出的hbase表

(2)輸入需要遷移的列

(3)選擇需要遷入的hbase表

(4)設定rowkey:字段需要為遷出的hbase表中的列或者rowkey

掃瞄表的資料時的優化處理:每次設定固定掃瞄行數n(n建議設定200-300間比較合適,切記一次性讀取到記憶體中過多,會導致記憶體溢位),每掃瞄一次向新錶寫入一次,接下來從上一次結束處開始掃,依次類推進行迴圈。當最後一次掃瞄到的資料小於n或者達到設定的rowkey即可停止掃瞄。

採用掃瞄一部分寫入一部分的方式,解決一次性掃瞄全表的效能問題,同時也避免一次性取出太多資料,導致程式記憶體溢位等問題。

hbase 資料遷移,表count

小表 count shell count tablename 大表hbase row count hbase org.apache.hadoop.hbase.mapreduce.rowcounter tablename 2 離線匯出。匯出hbase org.apache.hadoop.hbase.m...

一種深度學習方法 遷移學習

接下來我會介紹關於遷移學習的以下內容。它是什麼?它是如何工作的?為什麼使用它?什麼時候使用?轉移學習的方法 訓練模型 使用預先訓練的模型 和特徵提取 遷移學習 遇到乙個新問題,不是從頭訓練乙個網路模型,而是在現有的預訓練模型上,再次訓練或者直接使用。因為他可以用較少的資料來訓練深度神經網路,如果你資...

HBase的資料遷移(含HDFS的資料遷移)

1.啟動兩個hdfs集群 hadoop0,hadoop1,都是偽分布式的集群 2.啟動hadoop3的zookeeper與hbase 注意點 需要開啟yarn服務,因為distcp需要yarn。3.在hdfs上可以看到hadoop3上有表s1.4.拷貝hadoop3上的s1到hadoop0 5.刪除...