自动化分布式环境检测工具——Koalas
引言
星环科技的售后部门每天都会收到很多客户的售后咨询,技术支持人员每周都会对这些问题和它们的解决方案进行统计和研究,以便改进服务。在研究中,他们发现售后问题的分布如下(下面的数据为周平均值):
1. 约35%的问题由网络(端口被错误占用、延时过长、吞吐量低等)引起;
2. 约35%的问题由平台(jar包不一致、文件和目录权限错误、文件残留等)引起;
3. 约20%的问题由系统(CPU、磁盘、内存等硬件问题、系统命令不存在等软件问题)引起;
4. 约10%的问题由其他原因(用户的使用方式不当)引起。
这四类问题的前三类都可以被归类于计算环境问题——它们和产品质量无关却会严重影响TDH平台中服务的工作。从统计结果能看出,真正有价值的问题(第4类)只有10%——这些问题变化多样,需要技术人员的经验来解决。如果能避免或者迅速诊断占到90%的环境问题,可以大幅减少用户在使用中遇到的问题。
TDH是一个复杂的系统,它对运行环境有诸多要求;同时TDH集群通常又比较庞大,包含很多服务器,如果人工对每个参数在每个节点上进行排查,会耗时很长。所以在新发布的TDH4.6中,我们提供了分布式的自动化检查工具Koalas,让用户可以通过集群的监控界面Transwarp Manager一键运行环境检查。下面是Koalas的使用界面:
Koalas的使用方式
Koalas可以运行网络吞吐量检测、硬件环境检测、jar包冗余遗漏检测等13种程序。用户只需点击对应程序的“运行”按钮(也可以直接点击“全部运行”将所有程序都执行一遍)便可进行对应检测,Koalas会对用户指定的每一台服务器自动进行检查,检查结束后以红(严重问题,将会导致一些服务无法使用)、黄(警告,会影响一些服务的性能,有较大发展为红色的概率)、绿(正常)三种颜色显示状态。Koalas程序提供了一定的自定义空间,用户点击“配置”按钮即可对诸如超时时间、运行节点等参数进行修改:
如果要查看详细的程序运行结果,可以点击“历史”按钮查看历史记录:
历史记录页面会给出这样一些信息:
历史日志列表:列出所有执行过该任务的时间与日志的时间戳。
汇总日志:列出所有节点执行任务的精简报告。
执行结果统计:列出节点状态的统计数据。
参数:展示程序运行时的参数配置
日志:展示执行任务的节点和它们的状态,点击“查看详细日志”可查看所选节点的详细历史日志信息:
Koalas的应用
Koalas的实际应用可以分为两类:预防性使用和诊断性使用。预防性使用是在集群执行任务前就对整体的环境进行检测,将检测出来的问题解决,在保证没有环境问题(也就是检查状态都为绿色)后再运行集群任务。预防性使用可以大大减少集群任务运行过程中受环境问题的影响的概率,使任务的运行更加顺利。诊断性使用则应用在任务执行出现问题之后,可以迅速帮用户定位或者排除环境是否是任务问题的原因。下面我们看一个诊断性使用的实例。
问题描述:
某客户在使用Transwarp Inceptor进行聚合运算时性能不佳,对一张1500万记录的text表进行COUNT(1)查询需要耗时100s以上,将text表换成性能较好的orc表后COUNT(1)依然要耗时100s左右,而根据经验该查询应该只需10s左右即可完成。同时,向集群中导入数据时发现HDFS写入缓慢。
原因猜想:
HDFS在写入数据时DataNode之间会发生大量数据传输,写入缓慢可能是节点之间数据传输慢,也就是网络吞吐量小。同时,在Inceptor中,聚合运算作为一个Spark任务需要进行较多shuffle,也就是需要大量对DataNode的读写,这增强了对网络吞吐量小的怀疑。
诊断:
为了对集群中节点的网络吞吐量进行诊断,用户用Koalas运行了“网络吞吐量检测”,Koalas让每个节点同时发送和接受数据,在每个节点的数据发送量达到预定值以后,统计各个节点的平均发送速度和接受速度。检测运行完毕后显示状态为黄色,说明有问题。在Koalas中查看详细的记录发现,在这个由IP为172.16.2.101、172.16.1.236、172.16.1.237、172.15.1.238四个服务器组成的集群中,服务器两两之间的数据发送和接受速度如下:
用户发现在检测过程中,172.16.2.101参与的数据发送速度(Upload Throughput)和数据接受速度(Download Throughput)都远远小于另外三个节点两两之间发送/接收的速度——四台机器都配备了万兆网卡,172.16.1.236-238之间的发送/接收速度在380-500MB/s之间,而有172.16.2.101参与的则在30MB/s上下徘徊,成为了网络瓶颈——TDH的最低硬件配置要求每个节点都至少配置千兆网卡,保证正常情况下吞吐量在70-120MB/s之间,集群才能发挥性能。
到此诊断完成,检测的结果验证了原因猜想,Koalas帮助用户将问题从“服务性能差”的症状定位到了“一台服务器的网络吞吐量过低”的症结。
后记
在网络吞吐量检测中,我们看到在一个不大的集群中(只有四个节点),检测服务器两两之间的数据传输速率就需要执行24个任务。任务的数量会根据集群的大小(也就是节点的数量)组合级增长(Combinatorial Increase),手工测试将极为繁琐。有了Koalas的帮助,检测的执行和结果的查看都只需一键完成。
对此篇文章如有任何问题,欢迎以邮件形式联系我们:bigdataopenlab@transwarp.io
大数据开放实验室由星环信息科技(上海)有限公司运营,专门致力于大数据技术的研究和传播。若转载请在文章开头明显注明“文章来源于微信订阅号——大数据开放实验室”,并保留作者和账号介绍。