anchor.diff:  :icons: font
   :experimental:
   
  -link:https://issues.apache.org/jira/browse/HBASE-6449[HBASE-6449] added support for tracing requests through HBase, using the open source tracing library, link:http://github.com/cloudera/htrace[HTrace].
  +link:https://issues.apache.org/jira/browse/HBASE-6449[HBASE-6449] added support for tracing requests through HBase, using the open source tracing library, link:http://htrace.incubator.apache.org/[HTrace].
   Setting up tracing is quite simple, however it currently requires some very minor changes to your client code (it would not be very difficult to remove this requirement). 
   
   [[tracing.spanreceivers]]
   === SpanReceivers
   
  -The tracing system works by collecting information in structs called 'Spans'. It is up to you to choose how you want to receive this information by implementing the `SpanReceiver` interface, which defines one method: 
  +The tracing system works by collecting information in structures called 'Spans'. It is up to you to choose how you want to receive this information by implementing the `SpanReceiver` interface, which defines one method: 
   
   [source]
   ----
  
positive.code: hbase(main):003:0> trace 'stop'
  ----
  
  +trace 'start'+ and +trace 'stop'+ always returns boolean value representing if or not there is ongoing tracing.
  As a result, +trace
          'stop'+ returns false on suceess. +trace 'status'+ just returns if or not tracing is turned on. 
  
  [source]
  ----
  
negative.code: 
  <property>
    <name>hbase.trace.spanreceiver.classes</name>
    <value>org.apache.htrace.impl.LocalFileSpanReceiver</value>
  </property>
  <property>
    <name>hbase.htrace.local-file-span-receiver.path</name>
    <value>/var/log/hbase/htrace.out</value>
  </property>
  ----
  
  HTrace also provides `ZipkinSpanReceiver` which converts spans to link:http://github.com/twitter/zipkin[Zipkin] span format and send them to Zipkin server. In order to use this span receiver, you need to install the jar of htrace-zipkin to your HBase's classpath on all of the nodes in your cluster. 
  
  _htrace-zipkin_ is published to the link:http://search.maven.org/#search%7Cgav%7C1%7Cg%3A%22org.apache.htrace%22%20AND%20a%3A%22htrace-zipkin%22[Maven central repository]. You could get the latest version from there or just build it locally (see the link:http://htrace.incubator.apache.org/[HTrace] homepage for information on how to do this) and then copy it out to all nodes.
  
  `ZipkinSpanReceiver` for properties called `hbase.htrace.zipkin.collector-hostname` and `hbase.htrace.zipkin.collector-port` in _hbase-site.xml_ with values describing the Zipkin collector server to which span information are sent.
  
  [source,xml]
  ----
  
  <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>
  ----
  
  If you do not want to use the included span receivers, you are encouraged to write your own receiver (take a look at `LocalFileSpanReceiver` for an example). If you think others would benefit from your receiver, file a JIRA with the HTrace project.
  
  [[tracing.client.modifications]]
  == Client Modifications
  