HBase 包括使用开源跟踪库 Apache HTrace 跟踪请求的工具。设置跟踪非常简单,但是它目前需要对客户端代码进行一些非常小的更改(将来可能会删除此要求)。

HBASE-6449 中添加了在 HBase 中使用 HTrace 3 支持此功能。从 HBase 2.0 开始,通过 HBASE-18601 对 HTrace 4 进行了不兼容的更新。本节提供的示例将使用 HTrace 4 包名称,语法和约定。有关较旧的示例,请参阅本指南的早期版本。

L.1。 SpanReceivers

跟踪系统通过在称为“Spans”的结构中收集信息来工作。您可以通过实现SpanReceiver接口来选择接收此信息的方式,该接口定义了一种方法:

public void receiveSpan(Span span); 

每当跨度完成时,此方法用作回调。 HTrace 允许您根据需要使用尽可能多的 SpanReceivers,因此您可以轻松地将跟踪信息发送到多个目的地。

通过在 hbase-site.xml 属性中实现SpanReceiver的类的完全限定类名称的逗号分隔列表来配置您希望我们使用的 SpanReceivers:hbase.trace.spanreceiver.classes

HTrace 包含LocalFileSpanReceiver,它以基于 JSON 的格式将所有跨度信息写入本地文件。 LocalFileSpanReceiverhbase-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-hostnamehbase.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。