hbase效能測試對比分析

2021-06-18 22:57:15 字數 4153 閱讀 6036

資料庫讀寫效能分析

1、 單機模擬集群測試

測試環境:

由3臺伺服器組成的hadoop集群組成分布式檔案系統

由一台單獨的機器單機模擬hbase集群

由一台機器單機測試mysql

測試規模:50萬條記錄以上,單執行緒、多執行緒測試

測試結果:

hbase

mysql

單執行緒插入 100 條記錄

155 ms / 154ms

243 ms / 198ms

插入 1000 條記錄

740 ms / 884ms

1506 ms / 1554ms

插入 10000 條記錄

8304ms/ 6610ms

14110ms/ 12839m

插入 100000 條記錄

43090ms /64715ms

108082ms /110664ms

讀取 500000左右的條記錄

640 ms / 721ms

2779 ms / 2794ms?

100執行緒

插入 100 條記錄

5929ms / 3825ms / 4134ms

15352ms / 12912ms / 12853ms

插入 1000 條記錄

35684ms / 52677ms / 34208ms

135839ms / 161711ms / 119909ms

讀取 500000左右的條記錄

最快的 1104 ms/最慢的 110897 ms

如果不加limit,資料庫連線超時

1000執行緒

插入 100 條記錄

325907ms / 322465ms / 342163ms

17455ms / 18953ms / 15169ms

讀取500000左右的條記錄

最快的 717 ms

如果不加limit,資料庫連線超時

hbase不同於一般的關聯資料庫,它是乙個適合於非結構化資料儲存的資料庫.另乙個不同的是hbase基於列的而不是基於行的模式(字段內容都是char).

上面兩種 特性,導致hbase的資料表結構非常鬆散,字段內容單一,表與表之前沒有任何關聯,正因為這樣在查詢的時候效率非常高

hbase資料表的效能選項:

max_versions:每乙個單元儲存多少版本的資料(預設是3)

max_length:每個單元中的版本能夠儲存多少位元組的資料(預設位元組數是32比特有符號整數最大值)

compression:資料壓縮,有block壓縮和record壓縮

in_memory:將這個列組裝載資料到儲存器,加快讀寫速度,缺點耗費儲存器和干預hdfs的備份

bloomfilter:如果這個列組支援布隆過濾器(bloomfilter),那麼在儲存器中有個索引來快速地判斷要查詢的列是否存在這個行中,減少磁碟io操作.如

果在這個列組你擁有大量的列,每乙個列的資料報含的資料非常小,你可能需要在這個列組中應用布隆過濾器(bloomfilter)

2、 列族測試:

測試目標:測試列族增長對效能的影響

測試資料:建表時候定義列族數量,每個列族寫入1000位元組資料,讀取5000次,隨機讀取任意一列。

測試結果:

單機集群

列族數量

10

100

500

1000

建表時間

12.3

19.2

45.9

timeout

每秒寫入

164

323

419

timeout

每秒讀取

99

139

122

timeout

5機器集群

列族數量

10

100

500

1000

建表時間

12.2

18.7

46.4

timeout

每秒寫入

29

153

376

timeout

每秒讀取

119

111

120

timeout

測試結論:

hbase建表時間過長,對大列族的時候支援不好

寫入速度在多機集群的時候提高較快

3、排序測試

測試目標:hbase的行排序是根據主鍵排序,測試動態或者反序插入時候的效能。

測試資料:動態生成字母資料,zzzzz-aaaaa,還有隨機插入

測試結果:

單機集群(每秒多少行)

寫入行

10,000

100,000

1,000,000

順序

485

432

334

反序

451

477

354

隨機

462

421

334

5機集群(每秒多少行)

寫入行

10,000

100,000

1,000,000

順序

488

440

346

反序

522

387

343

隨機

468

441

370

測試結論:

採用b樹儲存和寫入快取,寫入數量和順序對速度影響並不大,應該只是cpu占用的不同。

主要瓶頸還是在網路傳輸速度上。

io對比分析

1 同步阻塞io 使用者執行緒通過系統呼叫read發起io讀操作,由使用者空間轉到核心空間。核心等到資料報到達後,然後將接收的資料拷貝到使用者空間,完成read操作。使用者執行緒使用同步阻塞io模型的偽 描述為 2同步非阻塞io 使用者執行緒系統系統呼叫read 後直接返回,然後通過不斷輪訓的方式,...

開源License對比分析

bsd開源協議 original bsd license freebsd license original bsd license bsd開源協議是乙個給於使用者很大自由的協議。基本上使用者可以 為所欲為 可以自由的使用,修改源 也可以將修改後的 作為開源或者專有軟體再發布。但 為所欲為 的前提當你...

開源License對比分析

bsd開源協議 original bsd license freebsd license original bsd license bsd開源協議是乙個給於使用者很大自由的協議。基本上使用者可以 為所欲為 可以自由的使用,修改源 也可以將修改後的 作為開源或者專有軟體再發布。但 為所欲為 的前提當你...