阅读本文前建议先阅读云梯跨机房方案介绍,了解云梯跨机房项目背景,难点以及解决方案。本文重点介绍下跨机房测试的整体解决方案
功能测试
测试用例管理:http://kelude.taobao.net/testsuites?project_id=12202
数据安全性测试
数据安全简单的说是不能丢数据,跨机房后集群规模到达近万台,数据存储到达数百PB,如何确保数据安全是一个很大的挑战
在跨机房的情况下,我们通过(Sange、Slive、DFSIO)模拟线上比例的各种混合性操作,通过NN的FSCK, CN的 CrossCheck工具定位异常数据如CORRUPT,一直处于BEING WRITTEN无法关闭的文件,跨机房失败的文件
数据安全性测试里需要考虑的一种重要场景是NN和DN重启,在实际的升级过程中,在集群重启前各业务线并没有停止读写数据,重启后数据的一致性和可恢复性非常重要;在实际的跨机房测试中我们曾发现一个因为重启后状态不一致导致无法加载EDITLOG从而使NN无法启动的BUG,如果这种问题发生到线上,后果不堪设想
性能测试
性能测试的关键点是如何建立性能基准,对线上性能进行准确评估,跨机房测试性能基准工具主要包括:
DFSIO: HDFS I/O(读写) 性能基准
Slive: 主要模拟线上各种RPC,在每个TASK发起混合型RPC操作,并可以指定文件和block大小,该工具可以同时测试NN和DN的性能;
Sange: 主要模拟线上各种RPC操作压力,在每个TASK启动大量Thread进行混合性RPC操作 ,对NN产生压力,进而评估NN RPC 处理能力;SANGE工具不能指定文件和Block大小,会产生大量小文件,比SLIVE对NN可以产生更大的RPC压力
Terasort:MapReduce 数据排序能力基准
Gridmix :Gridmix和Rumen结合可以模拟和生产作业相应的负载,更真实的模拟生产环境
SmallJobBench:通过创建大量sleep job到不同group来测试jobtracker性能
SubmitJobBench:通过每个map启动(-nThreads)个线程,每个线程顺序提交(-nTasks)个作业, 每个线程有自己的独立账号,来模拟线上多账号并行度2K情况下JTProxy性能
跨机房性能主要对比场景:
主要针对上述场景进行性能对比和评估包括NN带宽,内存,CPU load, NN RPC 指标, NN 各个operation的吞吐量(opsper second)和平均执行时间, NN同步editlog性能指标,跨机房带宽流量,跨机房复制速率,跨机房副本删除速率,CROSSFSCK时间
跨机房测试还有很重要的一点是要保证计算一定优先从本机房读数据,除非本机房没有数据才会跨机房读;实际测试中TERASORT跨机房读对比本机房读性能会有32%左右的下降,而且对带宽也是很大的浪费。