htrace-zipkin与hbase集成

来源:互联网 发布:win10 关闭推送软件 编辑:程序博客网 时间:2024/06/06 06:40

一如此坑深似海,再回身已是百年身。

话说开源领域里面就是各种坑,尤其是hadoop领域。所以才创造了这么多就业机会[笑哭]

今天一起鼓捣一下htrace-zipkin。

HTRACE与ZIPKIN

分布式系统里面进行监控分析性能问题是一件很头疼的事情,根据google的DAPPER论文,cloudera提供了htrace的开源实现,可以分析跨进程,跨节点的调用性能分析。
而ZIPKIN是现有的一个可以为htrace的output进行收集,可视化的工具。

这里写图片描述

上图是一个zipkin收集了hbase的htrace输出的效果图。

htrace与hbase的slideshare
这个链接非常有价值,不过就是稍微有点老了。上面的图片也是出自这个ppt。

zipkin与hbase

这个集成相对简单,因为hbase文档中关于介绍trace部分的内容很准确。但是也不是很友好,需要程序员发挥自己的小聪明来找到正确的依赖版本,并且进行编译。

zipkin之运行

zikin官网:http://zipkin.io/
官网的介绍异常的简单,根据quickstart部分的内容。

wget -O zipkin.jar 'https://search.maven.org/remote_content?g=io.zipkin.java&a=zipkin-server&v=LATEST&c=exec'java -jar zipkin.jar

这样就可以下载成功,并且运行zipkin的server了。

hbase与zipkin

<property>  <name>hbase.trace.spanreceiver.classes</name>  <value>org.apache.htrace.impl.ZipkinSpanReceiver</value></property><property>  <name>hbase.htrace.zipkin.collector-hostname</name>  <value>localhost</value></property><property>  <name>hbase.htrace.zipkin.collector-port</name>  <value>9410</value></property>

看管看到这里会问,这里的ZipkinSpanReceiver是哪里来的呀?
这个类需要我们自己编译htrace项目中的htrace-zipkin module,并且把编译成功的jar包放到hbase的classpath中,并且重启hbase服务,当然可以先从hbase client开始测试。

htrace编译

我这里使用的系统版本是

java 1.8
hadoop 2.7.1
hbase 1.1.2

看了一下hbase lib中的htrace版本htrace-core-3.1.0-incubating.jar, 于是下载了htrace的git repo,然后切换到3.1.0分支。然后发现,竟然只有3.1.1分支,看了下log

LM-SHC-16501189% git logcommit e884b37f87f4eee968f5bbed93b4267f4b9123eaAuthor: stack <stack@duboce.net>Date:   Tue Jan 20 22:05:35 2015 -0800    Change version on the 3.1 branch from 3.1.0-incubating to 3.1.1-incubating-SNAPSHOTcommit 0cabe569bc05a58c7a319a460eed5e50e136bae7Author: stack <stack@duboce.net>Date:   Thu Jan 15 11:17:25 2015 -0800    HTRACE-80 Add new dependencies to LICENSEcommit cc54af7ed57ea2da6011196480f837aa32e4c925

竟然藏在这里,好吧,知道怎么找到3.1.0版本了吧。
这里可以开始编译了。

编译整个项目的时候出了一些问题,说是必须要安装golang环境,安装了又说找不到goDeps什么鬼,查了一下,好像是歧视mac系统。要不要在我的centos系统里面把java mvn git都弄好呢,算了吧,看了一眼我关心的htrace-zipkin模块的target目录,里面顺利的生成了jar文件,于是把它拷贝到hbase cli上先做个测试。

测试

zipkin server启动了
hbase conf配置了
hbase classpath中添加了htrace-zipkin

hbase shelltrace 'start'trace 'status'listtrace 'stop'

结果又报错了。9410端口不通呀。看了下netstat发现,果然9410没有被监听。这几奇了怪了。再刷一遍zipkin文档,依然不知道怎么回事。改成9411试试吧,虽然9411是web ui的端口,死马当活马医,结果还是不行呀。

又仔细撸了一遍zipkin的文档,发现了一个链接
https://github.com/openzipkin/zipkin/tree/master/zipkin-server

这里说默认9410是关闭的呀,呵呵。需要手动配置打开。

SCRIBE_ENABLED=true java -jar zipkin.jar

这样就可以工作了。大功告成。

之后就是把hmaster也做相应的配置就好了。

效果图

测试一下,貌似没有能够跟hdfs完美继承。
*hdfs只提供了3个sampler,感觉不够用呀
*如果hbase 这边开启了span,然后hdfs可以继续在这个span上继续工作就好了
目前看起来,hmaster里面的hdfs client会单独启动一个新的span。这里需要进一步的分析研究,如果可以传入hdfs,并且配合sampler使用,那么可以把一个hbase的create table过程串联起来就好了。