版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、YCSB安裝與初步使用整理:岳凱 2016年4月29日1 什么是YCSB1.1 簡介YCSB英文全稱:Yahoo! Cloud Serving Benchmark。是 Yahoo 公司的一個用來對云服務(wù)(cloud serving)/NoSQL/Key-Value Store進行基礎(chǔ)測試的工具,代碼開源。目標(biāo)是促進新一代云數(shù)據(jù)服務(wù)系統(tǒng)的性能比較。1.2 YCSB客戶端架構(gòu)隨著cloud serving的流行,傳統(tǒng)數(shù)據(jù)庫不能滿足Avalability、Scalabilty等要求,簡化了功能(表連接等)、一致性(事務(wù)處理)的NoSQL數(shù)據(jù)庫開始流行。這類數(shù)據(jù)庫數(shù)量很多,各有tradeoff(rea
2、d and write,latency and durability,sync and async等),開發(fā)人員和用戶很難根據(jù)應(yīng)用的特點選擇合適的解決方案。YCSB的目的是提供一個公平的舞臺。上圖是YCSB的結(jié)構(gòu),可以看成是一個數(shù)據(jù)庫客戶端。暗色的模塊是可以替換的,Workload Executor是產(chǎn)生應(yīng)用負(fù)載的,DB Interface Layer是將特定數(shù)據(jù)庫的API轉(zhuǎn)為YCSB的API,用戶可以自定義負(fù)載和數(shù)據(jù)庫。目前YCSB自帶了6種負(fù)載(workloads/目錄下),其中五種如下表。用戶可以自定義操作(read、update、insert和scan)的比例,以及選擇操作目標(biāo)記錄的分
3、布:Uniform(等概率隨機選擇記錄)、Zipfian(隨機選擇記錄,存在熱紀(jì)錄)和Latest(近期寫入的記錄是熱記錄)。YCSB目前支持多種數(shù)據(jù)庫,如:HBase、Hypertable、Cassandra、Couchbase、Voldemort、MongoDB、OrientDB、Infinispan、Redis、GemFire、DynamoDB、Tarantool、 Memcached等。用戶可以用任意負(fù)載測試任意數(shù)據(jù)庫。YCSB有很好的擴展性,只要按要求實現(xiàn)DB抽象類,就可以添加新的數(shù)據(jù)庫支持。1.3 當(dāng)前版本當(dāng)前版本:YCSB 0.8.0, 發(fā)布時間:Apr 13, 2016源代碼地
4、址:當(dāng)前版本對各種數(shù)據(jù)庫的測試情況(Tested Databases):Tested supportThe following datastore bindings have been verified as working as of this release: Apache Accumulo 1.6.0 (via accumulo binding). Apache Cassandra 2.5.5 (via cassandra2-cql binding). Couchbase 4.1 (via couchbase binding). DynamoDB using AWS SDK 1.10.4
5、8 (via dynamodb binding). Elasticsearch 2.0.2, 2.1.2, 2.2.2, 2.3.1 (via elasticsearch binding). Apache Geode (incubating) 1.0.0-incubating.M1 (via geode binding). Apache HBase 1.0.0 (CDH5.5.2) (via hbase10 bindings). MongoDB 1.8.5(async only), 2.0.9, 2.2.7, 2.4.14, 2.6.12, 3.0.11, 3.2.4 (via mongodb
6、 and mongodb-async bindings). Amazon S3 (via s3 binding). Tarantool 1.6.6-249, 1.6.8, 1.7-alpha (via tarantool binding).Supported Aerospike (via aerospike binding). Apache HBase 0.9.8 (via hbase098 binding). Apache Kudu (incubating) (via kudu binding). Apache Solr 5.4.0 (via solr binding). Google Cl
7、oud Datastore (via googledatastore binding). JDBC on MySQL 5.1.73 (via jdbc binding). Memcached 1.4.4 (via memcached binding).Untested Apache Cassandra versions prior to 2.0 (via cassandra-7, cassandra-8, cassandra-10 bindings). Apache Cassandra versions 3+ (via cassandra2-cql bindings). Apache HBas
8、e (via hbase094 binding). HyperTable (via hypertable binding). Infinispan (via infinispan and infinispan-cs bindings) Mapkeeper (via mapkeeper binding) NoSQLDB (via nosqldb binding) OrientDB 2.1.2 (via orientdb binding).2 YCSB安裝YCSB的編譯和安裝依賴Maven、JRE、和Python。2.1 Maven下載與安裝1、Maven官網(wǎng):官網(wǎng):http:/maven.apa
9、/最新版本:2015-11-18,Maven 3.3.9下載地址:2、下載及安裝1)進入opt目錄,創(chuàng)建/opt/modules/目錄# cd /opt# mkdir modules# cd modules/2)下載Maven,并解壓# wget # unzip apache-maven-3.3.9-bin.zip3)追加路徑到/etc/profile環(huán)境變量中# vi /etc/profileexport MAVEN_HOME=/opt/modules/apache-maven-3.3.9PATH=$MAVEN_HOME/bin:$PATHexport PATH使環(huán)境變量生效#
10、 source /etc/profile4)使用mvn -version驗證安裝安裝成功。5)JAVA安裝Maven需要調(diào)用JRE,如果沒有安裝JDK,需要單獨安裝JDK。2.2 YCSB下載與安裝源代碼地址:1)下載源代碼并解壓縮進入/usr/local# cd /usr/local # wget # unzip master解壓后的YCSB-master目錄:2)編譯YCSB源代碼編譯有兩種方式方式一:全部編譯命令: mvn clean package說明:編譯全部數(shù)據(jù)庫,要下載很多依賴包,時間要很久,不建議采用。方式二:只編譯一個數(shù)據(jù)庫,如編譯mongodb的命令為:mvn -pl co
11、m.yahoo.ycsb:mongodb-binding -am clean package# cd YCSB-master/# mvn -pl com.yahoo.ycsb:mongodb-binding -am clean package下載無數(shù)依賴包之后,出現(xiàn)如下提示,說明YCSB編譯成功。如果編譯過程意外中止,可以重新運行編譯命令。我使用mongodb驗證,所以只編譯了YCSB的mongodb部分,也用了很長時間,中斷了幾次。3)其他問題問題一:缺少argparse包。運行YCSB,如果報錯如下:ERROR argparse not found. Try installing it v
12、ia pip.說明:報錯提示缺少argparse包,讓通過PIP方式下載argparse。 argparse是python用于解析命令行參數(shù)和選項的標(biāo)準(zhǔn)模塊,用于代替已經(jīng)過時的optparse模塊。如果服務(wù)器已經(jīng)安裝了PIP,可以使用命令pip install argparse 下載;如果沒有安裝pip,有easy_install,可以使用命令easy_install argparse下載。安裝后問題解決。3 YCSB初步使用3.1 YCSB運行命令命令的格式是:bin/ycsb load|run dbname P path/to/workloadfile p key=value具體例子如:.
13、/bin/ycsb load mongodb -threads 100 -P workloads/workloada./bin/ycsb run mongodb -threads 100 -P workloads/workloada bin/ycsb load redis -s -P workloads/workloada -p redis.host= -p redis.port=6379 bin/ycsb run redis -s -P workloads/workloada -p redis.host= -p redis.port=6379 -threa
14、ds 128 -p operationcount=10000 -p measurementtype=timeseries -p timeseries.granularity=5000說明:用戶首先需要用load初始化數(shù)據(jù)庫,然后用run運行負(fù)載。dbname指定了目標(biāo)數(shù)據(jù)庫。-P指定負(fù)載文件的位置。-p用來設(shè)置一些參數(shù),比如數(shù)據(jù)庫的ip和port。-threads是模擬的線程數(shù)。還有一個常用的參數(shù)是-target,指的是每秒最大操作數(shù),當(dāng)一秒內(nèi)到達這個閾值,線程就會休眠1毫秒。當(dāng)然,在運行YCSB之前,目標(biāo)數(shù)據(jù)庫必須是開啟的。測試完成后,YCSB會打印平均/最小/最大延遲等信息。3.2 Wor
15、kload文件在YCSB-master/workloads目錄下有6個workload文件,主要區(qū)別如下表:文件名模式各種操作比例具體參數(shù)workloadaUpdate heavy workloadread/update ratio: 50/50readproportion=0.5updateproportion=0.5workloadbRead mostly workloadread/update ratio: 95/5readproportion=0.95updateproportion=0.05workloadcRead onlyread/update ratio: 100/0readp
16、roportion=1updateproportion=0workloaddRead latest workloadread/update/insertratio: 95/0/5readproportion=0.95updateproportion=0scanproportion=0insertproportion=0.05workloadeShort rangesscan/insert ratio: 95/5readproportion=0updateproportion=0scanproportion=0.95insertproportion=0.05workloadfRead-modif
17、y-writeRead/read-modify-write ratio: 50/50readproportion=0.5updateproportion=0scanproportion=0insertproportion=0readmodifywriteproportion=0.5Workload文件部分參數(shù)意思如下面注釋:mongodb.url=mongodb:/localhost:27017 # 待測試mongo實例的數(shù)據(jù)庫地址mongodb.database=ycsb # 測試時使用的數(shù)據(jù)庫名稱mongodb.writeConcern=normal # 寫入安全性為常規(guī)recordcou
18、nt=10000 # 測試數(shù)據(jù)集的記錄條數(shù)operationcount=10000 # 測試過程中執(zhí)行的操作總數(shù)workload=com.yahoo.ycsb.workloads.CoreWorkload # workload實現(xiàn)類readallfields=true # 查詢時是否讀取記錄的所有字段readproportion=0.5 # 讀操作的百分比updateproportion=0.5 # 更新操作的百分比scanproportion=0 # 掃描操作的百分比insertproportion=0 # 插入操作的百分比 requestdistribution=zipfian # 請求分
19、布模式,包括:Uniform(等概率隨機選擇記錄)、Zipfian(隨機選擇記錄,存在熱紀(jì)錄)和Latest(近期寫入的記錄是熱記錄)3.3 運行YCSB1)創(chuàng)建自己的workload文件# cp workloada workloadyk01# vi workloadyk01添加如下mogodb的設(shè)置:mongodb.url=mongodb:/localhost:27017mongodb.database=ycsbmongodb.writeConcern=normal保存workloadyk01文件2)運行YCSB load# cd /usr/local/YCSB-master/# ./bin
20、/ycsb load mongodb -threads 100 -P workloads/workloadyk01運行成功后顯示:說明如下:OVERALL, RunTime(ms), 720.0 / 數(shù)據(jù)加載所用時間:0.7秒OVERALL, Throughput(ops/sec), 1388.888888888889 /加載操作的吞吐量,平均并發(fā)量每秒1388條TOTAL_GCs, Count, 2.0 CLEANUP, Operations, 100.0 /參數(shù)中的100個線程CLEANUP, AverageLatency(us), 450.58 /平均響應(yīng)時間0.45msCLEANUP,
21、 MinLatency(us), 0.0 /最小響應(yīng)時間0msCLEANUP, MaxLatency(us), 45055.0 /最大響應(yīng)時間45msCLEANUP, 95thPercentileLatency(us), 1.0CLEANUP, 99thPercentileLatency(us), 8.0INSERT, Operations, 1000.0 /執(zhí)行insert操作的總數(shù),1000INSERT, AverageLatency(us), 29928.784 /每次insert操作的平均延時29.9msINSERT, MinLatency(us), 827.0 /所有insert操作
22、的最小延時,0.8msINSERT, MaxLatency(us), 351231.0 /所有insert操作的最大延時,351msINSERT, 95thPercentileLatency(us), 203519.0 / 95%的insert操作延時在203.5ms以內(nèi)INSERT, 99thPercentileLatency(us), 329983.0 / 99%的insert操作延時在329.9ms以內(nèi)INSERT, Return=OK, 1000 /成功返回數(shù)10003)運行YCSB run# cd /usr/local/YCSB-master/# ./bin/ycsb run mon
23、godb -threads 100 -P workloads/workloadyk01運行成功后顯示:OVERALL, RunTime(ms), 720.0OVERALL, Throughput(ops/sec), 1388.888888888889TOTAL_GCs, Count, 2.0READ, Operations, 514.0READ, AverageLatency(us), 27392.836575875488READ, MinLatency(us), 940.0READ, MaxLatency(us), 340991.0READ, 95thPercentileLatency(us), 169087.0READ, 99thPercentileLatency(us), 272895.0READ, Return=OK, 514CLEANUP, Operations, 100.0CLEANUP, AverageLatency(us), 456.31CLEANUP, MinLatency(us), 0.0CLEANUP, M
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 酒店人事管理培訓(xùn)
- 2024-2025學(xué)年江蘇省江都區(qū)第二中學(xué)八年級(上)10月月考數(shù)學(xué)試卷(含答案)
- T-YNZYC 0090-2023 綠色藥材 紅大戟
- T-XMSSAL 0112-2024 供校集體配餐食品安全管理規(guī)范
- 高中物理第十八章原子結(jié)構(gòu)4玻爾的原子模型課時作業(yè)課件新人教版選修3-
- Windows Server網(wǎng)絡(luò)管理項目教程(Windows Server 2022)(微課版)2.1 知識引入
- 狼和小羊語文小學(xué)教育教育專區(qū)
- 一年級下冊生命生態(tài)安全教案及一年級傳統(tǒng)文化教案
- 2024至2030年中國異型商務(wù)貼數(shù)據(jù)監(jiān)測研究報告
- 2024至2030年中國發(fā)電、電焊兩用機組數(shù)據(jù)監(jiān)測研究報告
- 心里健康課——你快樂嗎?
- 編號∶No25課題∶乙烯氧氯化法生產(chǎn)氯乙烯
- 普通高中物理課程標(biāo)準(zhǔn)
- 小學(xué)科學(xué)論文:科學(xué)課堂中如何有效提問
- 送貨單模板4929
- 內(nèi)蒙古高中畢業(yè)生學(xué)籍表畢業(yè)生登記表學(xué)年評語表成績單身體健康檢查表完整版高中檔案文件
- 急性鎮(zhèn)靜安眠藥中毒ppt課件
- 小區(qū)案例分析(課堂PPT)
- 2022年03-Web前端知識點總結(jié)知識分享
- 社會調(diào)查研究與方法自測題
- 劍橋國際少兒英語4文本(Word)
評論
0/150
提交評論