HBase 包括使用开源跟踪库 Apache HTrace 跟踪请求的工具。设置跟踪非常简单,但是它目前需要对客户端代码进行一些非常小的更改(将来可能会删除此要求)。
在 HBASE-6449 中添加了在 HBase 中使用 HTrace 3 支持此功能。从 HBase 2.0 开始,通过 HBASE-18601 对 HTrace 4 进行了不兼容的更新。本节提供的示例将使用 HTrace 4 包名称,语法和约定。有关较旧的示例,请参阅本指南的早期版本。
跟踪系统通过在称为“Spans”的结构中收集信息来工作。您可以通过实现SpanReceiver
接口来选择接收此信息的方式,该接口定义了一种方法:
public void receiveSpan(Span span);
每当跨度完成时,此方法用作回调。 HTrace 允许您根据需要使用尽可能多的 SpanReceivers,因此您可以轻松地将跟踪信息发送到多个目的地。
通过在 hbase-site.xml 属性中实现SpanReceiver
的类的完全限定类名称的逗号分隔列表来配置您希望我们使用的 SpanReceivers:hbase.trace.spanreceiver.classes
。
HTrace 包含LocalFileSpanReceiver
,它以基于 JSON 的格式将所有跨度信息写入本地文件。 LocalFileSpanReceiver
在 hbase-site.xml 中查找hbase.local-file-span-receiver.path
属性,其值描述节点应写入其跨度信息的文件的名称。
<property>
<name>hbase.trace.spanreceiver.classes</name>
<value>org.apache.htrace.core.LocalFileSpanReceiver</value>
</property>
<property>
<name>hbase.htrace.local-file-span-receiver.path</name>
<value>/var/log/hbase/htrace.out</value>
</property>
HTrace 还提供ZipkinSpanReceiver
,它将跨度转换为 Zipkin span 格式并将它们发送到 Zipkin 服务器。要使用此 span 接收器,您需要将 htrace-zipkin jar 安装到群集中所有节点上的 HBase 类路径中。
htrace-zipkin 发布到 Maven 中央存储库。您可以从那里获得最新版本或只是在本地构建它(请参阅 HTrace 主页以获取有关如何执行此操作的信息),然后将其复制到所有节点。
ZipkinSpanReceiver
用于 hbase-site.xml 中名为hbase.htrace.zipkin.collector-hostname
和hbase.htrace.zipkin.collector-port
的属性,其值描述了发送范围信息的 Zipkin 收集器服务器。
<property>
<name>hbase.trace.spanreceiver.classes</name>
<value>org.apache.htrace.core.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>
如果您不想使用附带的跨接收发器,建议您编写自己的接收器(以LocalFileSpanReceiver
为例)。如果您认为其他人会从您的接收器中受益,请向 HTrace 项目提交 JIRA。