<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      HBase性能優化方法總結(一):表的設計

      本文主要是從HBase應用程序設計與開發的角度,總結幾種常用的性能優化方法。有關HBase系統配置級別的優化,可參考:淘寶Ken Wu同學的博客

      下面是本文總結的第一部分內容:表的設計相關的優化方法。

      1. 表的設計

      1.1 Pre-Creating Regions

      默認情況下,在創建HBase表的時候會自動創建一個region分區,當導入數據的時候,所有的HBase客戶端都向這一個region寫數據,直到這個region足夠大了才進行切分。一種可以加快批量寫入速度的方法是通過預先創建一些空的regions,這樣當數據寫入HBase時,會按照region分區情況,在集群內做數據的負載均衡。

      有關預分區,詳情參見:Table Creation: Pre-Creating Regions,下面是一個例子:

      public static boolean createTable(HBaseAdmin admin, HTableDescriptor table, byte[][] splits)
      throws IOException {
      try {
      admin.createTable(table, splits);
      return true;
      } catch (TableExistsException e) {
      logger.info("table " + table.getNameAsString() + " already exists");
      // the table already exists...
      return false;
      }
      }

      public static byte[][] getHexSplits(String startKey, String endKey, int numRegions) {
      byte[][] splits = new byte[numRegions-1][];
      BigInteger lowestKey = new BigInteger(startKey, 16);
      BigInteger highestKey = new BigInteger(endKey, 16);
      BigInteger range = highestKey.subtract(lowestKey);
      BigInteger regionIncrement = range.divide(BigInteger.valueOf(numRegions));
      lowestKey = lowestKey.add(regionIncrement);
      for(int i=0; i < numRegions-1;i++) {
      BigInteger key = lowestKey.add(regionIncrement.multiply(BigInteger.valueOf(i)));
      byte[] b = String.format("%016x", key).getBytes();
      splits[i] = b;
      }
      return splits;
      }

      1.2 Row Key

      HBase中row key用來檢索表中的記錄,支持以下三種方式:

      • 通過單個row key訪問:即按照某個row key鍵值進行get操作;
      • 通過row key的range進行scan:即通過設置startRowKey和endRowKey,在這個范圍內進行掃描;
      • 全表掃描:即直接掃描整張表中所有行記錄。

      在HBase中,row key可以是任意字符串,最大長度64KB,實際應用中一般為10~100bytes,存為byte[]字節數組,一般設計成定長的

      row key是按照字典序存儲,因此,設計row key時,要充分利用這個排序特點,將經常一起讀取的數據存儲到一塊,將最近可能會被訪問的數據放在一塊。

      舉個例子:如果最近寫入HBase表中的數據是最可能被訪問的,可以考慮將時間戳作為row key的一部分,由于是字典序排序,所以可以使用Long.MAX_VALUE - timestamp作為row key,這樣能保證新寫入的數據在讀取時可以被快速命中。

      1.3 Column Family

      不要在一張表里定義太多的column family。目前Hbase并不能很好的處理超過2~3個column family的表。因為某個column family在flush的時候,它鄰近的column family也會因關聯效應被觸發flush,最終導致系統產生更多的I/O。感興趣的同學可以對自己的HBase集群進行實際測試,從得到的測試結果數據驗證一下。

      1.4 In Memory

      創建表的時候,可以通過HColumnDescriptor.setInMemory(true)將表放到RegionServer的緩存中,保證在讀取的時候被cache命中。

      1.5 Max Version

      創建表的時候,可以通過HColumnDescriptor.setMaxVersions(int maxVersions)設置表中數據的最大版本,如果只需要保存最新版本的數據,那么可以設置setMaxVersions(1)。

      1.6 Time To Live

      創建表的時候,可以通過HColumnDescriptor.setTimeToLive(int timeToLive)設置表中數據的存儲生命期,過期數據將自動被刪除,例如如果只需要存儲最近兩天的數據,那么可以設置setTimeToLive(2 * 24 * 60 * 60)。

      1.7 Compact & Split

      在HBase中,數據在更新時首先寫入WAL 日志(HLog)和內存(MemStore)中,MemStore中的數據是排序的,當MemStore累計到一定閾值時,就會創建一個新的MemStore,并且將老的MemStore添加到flush隊列,由單獨的線程flush到磁盤上,成為一個StoreFile。于此同時, 系統會在zookeeper中記錄一個redo point,表示這個時刻之前的變更已經持久化了(minor compact)

      StoreFile是只讀的,一旦創建后就不可以再修改。因此Hbase的更新其實是不斷追加的操作。當一個Store中的StoreFile達到一定的閾值后,就會進行一次合并(major compact),將對同一個key的修改合并到一起,形成一個大的StoreFile,當StoreFile的大小達到一定閾值后,又會對 StoreFile進行分割(split),等分為兩個StoreFile。

      由于對表的更新是不斷追加的,處理讀請求時,需要訪問Store中全部的StoreFile和MemStore,將它們按照row key進行合并,由于StoreFile和MemStore都是經過排序的,并且StoreFile帶有內存中索引,通常合并過程還是比較快的。

      實際應用中,可以考慮必要時手動進行major compact,將同一個row key的修改進行合并形成一個大的StoreFile。同時,可以將StoreFile設置大些,減少split的發生。

      posted on 2012-03-08 15:06  大圓那些事  閱讀(24183)  評論(2)    收藏  舉報

      導航

      主站蜘蛛池模板: 中文字幕成熟丰满人妻| 国产在线98福利播放视频| 欧美成人午夜在线观看视频| 伊人春色激情综合激情网| 九九re线精品视频在线观看视频| 国产偷自视频区视频| 国产精品免费无遮挡无码永久视频| 国产精品会所一区二区三区 | 综合在线 亚洲 成人 欧美| 广河县| 在线观看中文字幕国产码| 少妇人妻偷人精品免费| 亚洲欧美人成网站在线观看看| 麻豆久久天天躁夜夜狠狠躁| 国产极品嫩模在线观看91| 国产99久一区二区三区a片| 日日躁夜夜躁狠狠久久av | 国产精品中文一区二区| 在线欧美精品一区二区三区| 国产a在视频线精品视频下载| 蜜臀一区二区三区精品免费| 中文字幕在线日韩| 亚洲综合一区无码精品| 亚洲av永久无码精品水牛影视| 四虎www永久在线精品| 激情内射亚洲一区二区三区| 国产精品成人中文字幕| 亚洲精品美女久久7777777| 亚洲人成电影在线天堂色| 91色老久久精品偷偷蜜臀| 激情伊人五月天久久综合| 激情综合五月丁香亚洲| 国产高清在线男人的天堂| 亚洲欧美国产免费综合视频| 丁香五月天综合缴情网| 国产精品VA尤物在线观看| 人人妻人人狠人人爽天天综合网| 粉嫩国产av一区二区三区| 丝袜美腿诱惑之亚洲综合网| 极品人妻少妇一区二区三区| 亚洲一区二区三区久久受|