YCSB之HBase性能測試

来源:https://www.cnblogs.com/zhangwuji/archive/2018/06/08/9156609.html
-Advertisement-
Play Games

1、YCSB背景 YCSB,全稱為“Yahoo!Cloud Serving Benchmark”,是雅虎開發的用來對雲服務進行基礎測試的工具,其內部涵蓋了常見的NoSQL資料庫產品,如Cassandra、MongoDB、HBase、Redis等等。在運行YCSB的時候,可以配置不同的workload ...


1、YCSB背景

YCSB,全稱為“Yahoo!Cloud Serving Benchmark”,是雅虎開發的用來對雲服務進行基礎測試的工具,其內部涵蓋了常見的NoSQL資料庫產品,如Cassandra、MongoDB、HBase、Redis等等。在運行YCSB的時候,可以配置不同的workload和DB,也可以指定線程數&併發數等其他參數。

2、初探

首先在官網上下載源碼編譯或者直接下載軟體包:https://github.com/brianfrankcooper/YCSB/releases/tag/0.10.0

image

(編譯的話需要maven工程和其他資源包的依賴比較麻煩,建議直接下載軟體包,解壓後進行簡單的操作(下文介紹)後就能直接用。)

下載壓縮包後上傳到對應的主機,解壓tar –xvf ycsb-0.12.0.tar.gz後的文件夾內目錄結構如下:

image

 

所有文件可以分為以下幾種類型:

  • bin,logs,lib,LICENSENSE.txt

        是一般軟體安裝後都有的,作用不贅述

  • 紅框中的目錄:

命名規則均為NOSQL資料庫名+’-binding’尾碼。這些目錄也即表示了YCSB支持的所有的NOSQL資料庫類型,同時你也可以按照規範加入新的資料庫類型。每個bindings目錄內部都有lib子目錄,用於存放YCSB對訪問這些資料庫所需要的一些jar包依賴。將$HBASE_HOME/lib目錄下的所有jar包拷貝到$YCSB_HOME/hbase10-binding/lib中(lib文件夾本身存在,直接進行複製拷貝即可),同時將$HBASE_HOME/conf/hbase-site.xml拷貝到$YCSB_HOME/hbase10-binding/conf中(conf文件夾自己創建),這樣就算安裝成功了。

  • workloads目錄

        裡面包含一些壓力測試的場景文件。YCSB自帶了6中壓力測試場景,文件和相應場景的對應關係如下:

image

workloada:混合了50%的讀和50%的寫;
workloadb:Read mostly workload,混合了95%的讀和5%的寫,該workload側重於測試集群的讀能力;
workloadc:Read only,100%只讀;
workloadd:Read latest workload,插入數據,接著就讀取這些新插入的數據;
workloade:Short ranges,短範圍scan,不同於隨機讀,每個測試線程都會去scan一段數據;
workloadf:Read-modiy-wirte,讀改寫,客戶端讀出一個記錄,修改它並將被修改的記錄返回;

【workload文件說明】

這裡給出文件workloada的內容,看下其內容如下:

image

image

  • recordcound 是YCSB load(載入元數據)命令的參數,預設值1000表示預設載入的記錄條數,可以在命令行顯示修改該值(後面介紹)。
  • Operationcount 是YCSB run(運行壓力測試)命令的參數,預設值1000表示預設選取資料庫中的1000條數據進行壓力測試。對於workloada這種測試場景,就意味著讀數據在500左右,寫數據也在500左右
  • workload 指定了workload的實現類為 com.yahoo.ycsb.workloads.CoreWorkload
  • readallfields表示查詢時是否讀取記錄的所有欄位
  • readproportion表示讀操作的比例,該場景為0.5
  • updateproportion表示更新操作的比例,該場景為0.5
  • scanproportion表示掃描操作的比例
  • Insertproportion表示插入操作的比例
  • Requestdistribution表示請求的分佈模式,YCSB提供uniform, zipfian, latest三種分佈模式

更多的參數含義可參考:https://github.com/brianfrankcooper/YCSB/wiki/Core-Workloads。據此可以定製自己的壓力測試場景。

3、壓力測試流程

3.1環境初始化:

(1) 創建測試數據表
使用hbase shell命令創建測試數據表usertable,列簇family

create 'usertable', 'family'

image

(2) 將hbase依賴的lib的文件拷貝到相應的-bing文件中(我這裡是hbase10-binding/lib)【前面也已介紹】
(3) 將hbase配置文件拷貝到ycsb中。在$YCSB_HOME/hbase10-binding中新建conf目錄,並將$HBASE_HOME/conf/hbase-site.xml 拷貝到$YCSB_HOME/hbase10-binding/conf/中【前面也已介紹】

3.2載入數據:
切換到$ YCSB_HOME目錄,執行以下命令,載入1,000,000條記錄:

bin/ycsb load hbase10 -P workloads/workloada -p threads=10 -p table=usertable -p columnfamily=family -p recordcount=10000 -s > logs/load.log
(或 bin/ycsb load hbase10 -P workloads/workloada -p threads=10 -p table=usertable -p columnfamily=family -p recordcount=10000 )

參數解釋如下:
load 表示這是一次載入數據操作;
hbase10指明瞭所用的資料庫類型;
-P指明瞭所用的配置文件的路徑;
-p 可以顯示修改YCSB內置的預設配置,例如這裡配置recordcount=10000來覆蓋之前說過的workloada中預設的recordcount=1000;
-s一次載入數據或執行測試的過程實踐很長,YCSB客戶端需要定時(預設10s)發送狀態信息;> logs/load.log表示結果日誌寫入位置(若沒有logs文件夾就自己新建一個,也可以不加此參數,則運行結果直接列印到屏幕上);

image

image

3.3執行測試
以workloada測試場景為例,切換到$ YCSB_HOME目錄,執行以下命令進行壓力測試

bin/ycsb run hbase10 -P workloads/workloada -threads 10 -p operationcount=1000000 -p table=usertable -p columnfamily=family -p measurementtype=timeseries -p timeseries.granularity=2000 -s > logs/transaction-workloadAA.log

參數解釋如下:
-threads 10配置了併發線程個數
-p operationcount=1000000 覆蓋了workloada中operationcount=1000表示本次測試操作記錄數為1000000
-p measurementtype=timeseries -p timeseries.granularity=2000指明瞭YCSB客戶端多長時間彙總一次延時,timeseries.granularity屬性值的單位為1000milliseconds。所以這裡的配置就表示2000s記錄一次本2000s的平均延時。

image

image 

測試運行結果的各屬性含義相關說明如下:

image

 

 

 

參考資料(依次遞減):

https://blog.csdn.net/zhangchen2449/article/details/53126884

https://blog.csdn.net/zx8167107/article/details/78753283

https://blog.csdn.net/Fighingbigdata/article/details/79495251

https://wenku.baidu.com/view/65a07ac5a0c7aa00b52acfc789eb172ded6399b8.html

https://blog.csdn.net/hustsselbj/article/details/46540377

https://blog.csdn.net/huoyunshen88/article/details/38299481

https://wenku.baidu.com/view/b8363464284ac850ac0242b3.html


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • load average 的含義平均負載(load average)是指系統的運行隊列的平均利用率,也可以認為是可運行進程的平均數。 top命令中load average顯示的是最近1分鐘、5分鐘和15分鐘的系統平均負載。系統平均負載表示 系統平均負載被定義為在特定時間間隔內運行隊列中(在CPU上運 ...
  • linux 查看系統當前時間,修改時間1. 查看時間和日期命令 : "date"2.設置時間和日期例如:將系統日期設定成2018年6月8日的命令命令 : "date -s 06/08/2018"將系統時間設定成下午10點46分03秒的命令命令 : "date -s 10:46:03" ...
  • 一、列表 list 列表是有序的,列表元素可以被修改 list之灰魔法 1、列表格式: 中括弧括起來, 逗號分隔每個元素, 列表中的元素可以是數字、字元串、列表、布爾值、等所有的都能放進去 “集合“,”內部可以放置任何東西 li=['alex', '小名', [12, 23, 45], 23, 23 ...
  • RDD是spark的核心,先感性的先認識RDD,大體上對RDD進行了分類操作 ...
  • today,i'll have a test with the open source tool mysqlbinlog_flashback which is released by 58daojia,here's the github address:https://github.com/58da ...
  • 1. 下載mongodb資料庫:https://www.mongodb.com/download-center#community 2. 加壓tar.gz壓縮包,把解壓文件拷貝到程式目錄即可 3. 創建data目錄和logs目錄,建議不要和程式目錄相同 4. 創建mongodb.conf配置文件,修 ...
  • 死鎖概述 對於資料庫中出現的死鎖,通俗地解釋就是:不同Session(會話)持有一部分資源,並且同時相互排他性地申請對方持有的資源,然後雙方都得不到自己想要的資源,從而造成的一種僵持的現象。當然,在任何一種資料庫中,這種僵持的情況不會一直持續下去,因為一直持續下去雙方永遠都無法執行,沒有任何意義,在 ...
  • 數據過濾 WHERE組合子句 本章講授如何組合WHERE子句以建立功能更強的更高級的搜索條件。 我們還將學習如何使用NOT和IN操作符。 1.組合WHERE子句 上一章介紹的WHERE子句在過濾數據時使用的都是單一條件過濾。事實上為了數據的準確性我們還可以使用多個條件進行過濾,可以使用AND子句或者 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...