YCSB080安装与初步使用.docx

上传人:b****3 文档编号:24851676 上传时间:2023-06-02 格式:DOCX 页数:19 大小:453.64KB
下载 相关 举报
YCSB080安装与初步使用.docx_第1页
第1页 / 共19页
YCSB080安装与初步使用.docx_第2页
第2页 / 共19页
YCSB080安装与初步使用.docx_第3页
第3页 / 共19页
YCSB080安装与初步使用.docx_第4页
第4页 / 共19页
YCSB080安装与初步使用.docx_第5页
第5页 / 共19页
点击查看更多>>
下载资源
资源描述

YCSB080安装与初步使用.docx

《YCSB080安装与初步使用.docx》由会员分享,可在线阅读,更多相关《YCSB080安装与初步使用.docx(19页珍藏版)》请在冰豆网上搜索。

YCSB080安装与初步使用.docx

YCSB080安装与初步使用

YCSB安装与初步使用

1什么是YCSB

1.1简介

YCSB英文全称:

Yahoo!

CloudServingBenchmark。

是Yahoo公司的一个用来对云服务(cloudserving)/NoSQL/Key-ValueStore进行基础测试的工具,代码开源。

目标是促进新一代云数据服务系统的性能比较。

1.2YCSB客户端架构

随着cloudserving的流行,传统数据库不能满足Avalability、Scalabilty等要求,简化了功能(表连接等)、一致性(事务处理)的NoSQL数据库开始流行。

这类数据库数量很多,各有tradeoff(readandwrite,latencyanddurability,syncandasync等),开发人员和用户很难根据应用的特点选择合适的解决方案。

YCSB的目的是提供一个公平的舞台。

上图是YCSB的结构,可以看成是一个数据库客户端。

暗色的模块是可以替换的,WorkloadExecutor是产生应用负载的,DBInterfaceLayer是将特定数据库的API转为YCSB的API,用户可以自定义负载和数据库。

目前YCSB自带了6种负载(workloads/目录下),其中五种如下表。

用户可以自定义操作(read、update、insert和scan)的比例,以及选择操作目标记录的分布:

Uniform(等概率随机选择记录)、Zipfian(随机选择记录,存在热纪录)和Latest(近期写入的记录是热记录)。

YCSB目前支持多种数据库,如:

HBase、Hypertable、Cassandra、Couchbase、Voldemort、MongoDB、OrientDB、Infinispan、Redis、GemFire、DynamoDB、Tarantool、Memcached等。

用户可以用任意负载测试任意数据库。

YCSB有很好的扩展性,只要按要求实现DB抽象类,就可以添加新的数据库支持。

1.3当前版本

当前版本:

YCSB0.8.0,

发布时间:

Apr13,2021

源代码地址:

当前版本对各种数据库的测试情况(TestedDatabases):

Testedsupport

Thefollowingdatastorebindingshavebeenverifiedasworkingasofthisrelease:

∙ApacheAccumulo1.6.0(viaaccumulobinding).

∙ApacheCassandra2.5.5(viacassandra2-cqlbinding).

∙Couchbase4.1(viacouchbasebinding).

∙DynamoDBusingAWSSDK1.10.48(viadynamodbbinding).

∙Elasticsearch2.0.2,2.1.2,2.2.2,2.3.1(viaelasticsearchbinding).

∙ApacheGeode(incubating)1.0.0-incubating.M1(viageodebinding).

∙ApacheHBase1.0.0(CDH5.5.2)(viahbase10bindings).

∙MongoDB1.8.5(asynconly),2.0.9,2.2.7,2.4.14,2.6.12,3.0.11,3.2.4(viamongodbandmongodb-asyncbindings).

∙AmazonS3(vias3binding).

∙Tarantool1.6.6-249,1.6.8,1.7-alpha(viatarantoolbinding).

Supported

∙Aerospike(viaaerospikebinding).

∙ApacheHBase0.9.8(viahbase098binding).

∙ApacheKudu(incubating)(viakudubinding).

∙ApacheSolr5.4.0(viasolrbinding).

∙GoogleCloudDatastore(viagoogledatastorebinding).

∙JDBConMySQL5.1.73(viajdbcbinding).

∙Memcached1.4.4(viamemcachedbinding).

Untested

∙ApacheCassandraversionspriorto2.0(viacassandra-7,cassandra-8,cassandra-10bindings).

∙ApacheCassandraversions3+(viacassandra2-cqlbindings).

∙ApacheHBase(viahbase094binding).

∙HyperTable(viahypertablebinding).

∙Infinispan(viainfinispanandinfinispan-csbindings)

∙Mapkeeper(viamapkeeperbinding)

∙NoSQLDB(vianosqldbbinding)

∙OrientDB2.1.2(viaorientdbbinding).

 

2YCSB安装

YCSB的编译和安装依赖Maven、JRE、和Python。

2.1Maven下载与安装

1、Maven官网:

官网:

http:

//maven.apache.org/

最新版本:

2021-11-18,Maven3.3.9

下载地址:

2、下载及安装

1)进入opt目录,创建/opt/modules/目录

#cd/opt

#mkdirmodules

#cdmodules/

2)下载Maven,并解压

#wget

#unzipapache-maven-3.3.9-bin.zip

3)追加路径到/etc/profile环境变量中

#vi/etc/profile

exportMAVEN_HOME=/opt/modules/apache-maven-3.3.9

PATH=${MAVEN_HOME}/bin:

$PATH

exportPATH

使环境变量生效

#source/etc/profile

4)使用mvn-version验证安装

安装成功。

5)JAVA安装

Maven需要调用JRE,如果没有安装JDK,需要单独安装JDK。

2.2YCSB下载与安装

源代码地址:

1)下载源代码并解压缩

进入/usr/local

#cd/usr/local

#wget

#unzipmaster

解压后的YCSB-master目录:

 

2)编译

YCSB源代码编译有两种方式

方式一:

全部编译命令:

mvncleanpackage

说明:

编译全部数据库,要下载很多依赖包,时间要很久,不建议采用。

方式二:

只编译一个数据库,如编译mongodb的命令为:

mvn-plcom.yahoo.ycsb:

mongodb-binding-amcleanpackage

#cdYCSB-master/

#mvn-plcom.yahoo.ycsb:

mongodb-binding-amcleanpackage

下载无数依赖包之后,出现如下提示,说明YCSB编译成功。

如果编译过程意外中止,可以重新运行编译命令。

我使用mongodb验证,所以只编译了YCSB的mongodb部分,也用了很长时间,中断了几次。

3)其他问题

问题一:

缺少argparse包。

运行YCSB,如果报错如下:

[ERROR]argparsenotfound.Tryinstallingitvia"pip".

说明:

报错提示缺少argparse包,让通过PIP方式下载argparse。

argparse是python用于解析命令行参数和选项的标准模块,用于代替已经过时的optparse模块。

如果服务器已经安装了PIP,可以使用命令pipinstallargparse下载;如果没有安装pip,有easy_install,可以使用命令easy_installargparse下载。

安装后问题解决。

3YCSB初步使用

3.1YCSB运行命令

命令的格式是:

bin/ycsb[load|run]dbname–Ppath/to/workloadfile–pkey=value

具体例子如:

./bin/ycsbloadmongodb-threads100-Pworkloads/workloada

./bin/ycsbrunmongodb-threads100-Pworkloads/workloada

>bin/ycsbloadredis-s-Pworkloads/workloada-p"redis.host=127.0.0.1"-p"redis.port=6379"

>bin/ycsbrunredis-s-Pworkloads/workloada-p"redis.host=127.0.0.1"-p"redis.port=6379"-threads128-p"operationcount=10000"-p"measurementtype=timeseries"-p"timeseries.granularity=5000"

说明:

用户首先需要用load初始化数据库,然后用run运行负载。

dbname指定了目标数据库。

-P指定负载文件的位置。

-p用来设置一些参数,比如数据库的ip和port。

-threads是模拟的线程数。

还有一个常用的参数是-target,指的是每秒最大操作数,当一秒内到达这个阈值,线程就会休眠1毫秒。

当然,在运行YCSB之前,目标数据库必须是开启的。

测试完成后,YCSB会打印平均/最小/最大延迟等信息。

3.2Workload文件

在YCSB-master/workloads目录下有6个workload文件,主要区别如下表:

文件名

模式

各种操作比例

具体参数

workloada

Updateheavyworkload

read/updateratio:

50/50

readproportion=0.5

updateproportion=0.5

workloadb

Readmostlyworkload

read/updateratio:

95/5

readproportion=0.95

updateproportion=0.05

workloadc

Readonly

read/updateratio:

100/0

readproportion=1

updateproportion=0

workloadd

Readlatestworkload

read/update/insert

ratio:

95/0/5

readproportion=0.95

updateproportion=0

scanproportion=0

insertproportion=0.05

workloade

Shortranges

scan/insertratio:

95/5

readproportion=0

updateproportion=0

scanproportion=0.95

insertproportion=0.05

workloadf

Read-modify-write

Read/read-modify-writeratio:

50/50

readproportion=0.5

updateproportion=0

scanproportion=0

insertproportion=0

readmodifywriteproportion=0.5

Workload文件部分参数意思如下面注释:

mongodb.url=mongodb:

//localhost:

27017#待测试mongo实例的数据库地址

mongodb.database=ycsb#测试时使用的数据库名称

mongodb.writeConcern=normal#写入安全性为常规

recordcount=10000#测试数据集的记录条数

operationcount=10000#测试过程中执行的操作总数

workload=com.yahoo.ycsb.workloads.CoreWorkload#workload实现类

readallfields=true#查询时是否读取记录的所有字段

readproportion=0.5#读操作的百分比

updateproportion=0.5#更新操作的百分比

scanproportion=0#扫描操作的百分比

insertproportion=0#插入操作的百分比

requestdistribution=zipfian#请求分布模式,包括:

Uniform(等概率随机选择记录)、Zipfian(随机选择记录,存在热纪录)和Latest(近期写入的记录是热记录)

3.3运行YCSB

1)创建自己的workload文件

#cpworkloadaworkloadyk01

#viworkloadyk01

添加如下mogodb的设置:

mongodb.url=mongodb:

//localhost:

27017

mongodb.database=ycsb

mongodb.writeConcern=normal

保存workloadyk01文件

2)运行YCSBload

#cd/usr/local/YCSB-master/

#./bin/ycsbloadmongodb-threads100-Pworkloads/workloadyk01

运行成功后显示:

说明如下:

[OVERALL],RunTime(ms),720.0//数据加载所用时间:

0.7秒

[OVERALL],Throughput(ops/sec),1388.888888888889//加载操作的吞吐量,

平均并发量每秒1388条

[TOTAL_GCs],Count,2.0

[CLEANUP],Operations,100.0//参数中的100个线程

[CLEANUP],AverageLatency(us),450.58//平均响应时间0.45ms

[CLEANUP],MinLatency(us),0.0//最小响应时间0ms

[CLEANUP],MaxLatency(us),45055.0//最大响应时间45ms

[CLEANUP],95thPercentileLatency(us),1.0

[CLEANUP],99thPercentileLatency(us),8.0

[INSERT],Operations,1000.0//执行insert操作的总数,1000

[INSERT],AverageLatency(us),29928.784//每次insert操作的平均延时

29.9ms

[INSERT],MinLatency(us),827.0//所有insert操作的最小延时,0.8ms

[INSERT],MaxLatency(us),351231.0//所有insert操作的最大延时,351ms

[INSERT],95thPercentileLatency(us),203519.0//95%的insert操作延时

在203.5ms以内

[INSERT],99thPercentileLatency(us),329983.0//99%的insert操作延时

在329.9ms以内

[INSERT],Return=OK,1000//成功返回数1000

3)运行YCSBrun

#cd/usr/local/YCSB-master/

#./bin/ycsbrunmongodb-threads100-Pworkloads/workloadyk01

运行成功后显示:

[OVERALL],RunTime(ms),720.0

[OVERALL],Throughput(ops/sec),1388.888888888889

[TOTAL_GCs],Count,2.0

[READ],Operations,514.0

[READ],AverageLatency(us),27392.836575875488

[READ],MinLatency(us),940.0

[READ],MaxLatency(us),340991.0

[READ],95thPercentileLatency(us),169087.0

[READ],99thPercentileLatency(us),272895.0

[READ],Return=OK,514

[CLEANUP],Operations,100.0

[CLEANUP],AverageLatency(us),456.31

[CLEANUP],MinLatency(us),0.0

[CLEANUP],MaxLatency(us),45631.0

[CLEANUP],95thPercentileLatency(us),1.0

[CLEANUP],99thPercentileLatency(us),9.0

[UPDATE],Operations,486.0

[UPDATE],AverageLatency(us),31491.29012345679

[UPDATE],MinLatency(us),1027.0

[UPDATE],MaxLatency(us),331775.0

[UPDATE],95thPercentileLatency(us),189183.0

[UPDATE],99thPercentileLatency(us),288767.0

[UPDATE],Return=OK,486

3.4查看MongoDB中的数据情况

打开mongoshell

#/usr/local/mongodb/mongodb-3.2.4/bin/mongo

>showdbs

local0.000GB

ycsb0.002GB

>useycsb

switchedtodbycsb

>showcollections

usertable

>db.usertable.count()

1000

>

可以看到在usertable数据集合里面有1000条数据,是YCSB插入的。

如果再次运行YCSBload,需要删除mongodb中的usertable数据集合,否则会报[INSERT-FAILED]错。

删除mongodb中的usertable数据集合语句如下:

>showdbs

local0.000GB

ycsb0.002GB

>useycsb

switchedtodbycsb

>db.dropDatabase()

{"dropped":

"ycsb","ok":

1}

>showdbs

local0.000GB

>

论大学生写作能力

写作能力是对自己所积累的信息进行选择、提取、加工、改造并将之形成为书面文字的能力。

积累是写作的基础,积累越厚实,写作就越有基础,文章就能根深叶茂开奇葩。

没有积累,胸无点墨,怎么也不会写出作文来的。

写作能力是每个大学生必须具备的能力。

从目前高校整体情况上看,大学生的写作能力较为欠缺。

一、大学生应用文写作能力的定义

那么,大学生的写作能力究竟是指什么呢?

叶圣陶先生曾经说过,“大学毕业生不一定能写小说诗歌,但是一定要写工作和生活中实用的文章,而且非写得既通顺又扎实不可。

”对于大学生的写作能力应包含什么,可能有多种理解,但从叶圣陶先生的谈话中,我认为:

大学生写作能力应包括应用写作能力和文学写作能力,而前者是必须的,后者是“不一定”要具备,能具备则更好。

众所周知,对于大学生来说,是要写毕业论文的,我认为写作论文的能力可以包含在应用写作能力之中。

大学生写作能力的体现,也往往是在撰写毕业论文中集中体现出来的。

本科毕业论文无论是对于学生个人还是对于院系和学校来说,都是十分重要的。

如何提高本科毕业论文的质量和水平,就成为教育行政部门和高校都很重视的一个重要课题。

如何提高大学生的写作能力的问题必须得到社会的广泛关注,并且提出对策去实施解决。

二、造成大学生应用文写作困境的原因:

  

(一)大学写作课开设结构不合理。

  就目前中国多数高校的学科设置来看,除了中文专业会系统开设写作的系列课程外,其他专业的学生都只开设了普及性的《大学语文》课。

学生写作能力的提高是一项艰巨复杂的任务,而我们的课程设置仅把这一任务交给了大学语文教师,可大学语文教师既要在有限课时时间内普及相关经典名著知识,又要适度提高学生的鉴赏能力,且要教会学生写作规律并提高写作能力,任务之重实难完成。

  

(二)对实用写作的普遍性不重视。

  “大学语文”教育已经被严重地“边缘化”。

目前对中国语文的态度淡漠,而是呈现出全民学英语的大好势头。

中小学如此,大学更是如此。

对我们的母语中国语文,在大学反而被漠视,没有相关的课程的设置,没有系统的学习实践训练。

这其实是国人的一种偏见。

应用写作有它自身的规律和方法。

一个人学问很大,会写小说、诗歌、戏剧等,但如果不晓得应用文写作的特点和方法,他就写不好应用文。

  (三)部分大学生学习态度不端正。

  很多非中文专业的大学生对写作的学习和训练都只是集中在《大学语文》这一门课上,大部分学生只愿意被动地接受大学语文老师所讲授的文学经典故事,而对于需要学生动手动脑去写的作文,却是尽可能应付差事,这样势必不能让大学生的写作水平有所提高。

  (四)教师的实践性教学不强。

  学生

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 人文社科 > 广告传媒

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1