Hraceop 2.7.3中的HTrace

时间:2016-11-19 16:01:01

标签: java hadoop zipkin htrace

我在Ubuntu 14.04上成功地将Zipkin与2.6.0 x32中的Hadoop Htrace一起使用。 现在我想将它与Hadoop 2.7.3一起使用,但我甚至无法使用这个hadoop版本启用Htrace跟踪。 2.6.0中HTrace的设置与2.7.3不同,因为它可以在这里看到 - 2.6.0和这里 - 2.7.3

在2.6.0中,我在namenode日志文件中有这一行:

INFO org.apache.hadoop.tracing.SpanReceiverHost: SpanReceiver org.htrace.impl.ZipkinSpanReceiver was loaded successfully.

我在2.7.3 Namenode日志文件中没有这样的内容。

由于没有成功使用Zipkin,我尝试使用LocalFileSpanReceiver,如在线教程中所述:

    <property>
        <name>hadoop.htrace.sampler</name>
        <value>AlwaysSampler</value>
     </property>
     <property>
        <name>hadoop.htrace.spanreceiver.classes</name>
        <value>org.apache.htrace.impl.LocalFileSpanReceiver</value>
      </property>
      <property>
        <name>hadoop.htrace.local-file-span-receiver.path</name>
        <value>/var/log/hadoop/htrace.out</value>
      </property>

/ var / log / hadoop / exists,有777权限,但没有......

TracingFsShell示例使用以下修改进行编译和运行:

SpanReceiverHost.get(new HdfsConfiguration(),"");

尽管在线教程不使用该方法签名,但可以在hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/tracing/SpanReceiverHost.java中的hadoop源代码中找到它。 (来源diff

两个Hadoop版本java 1.7的环境相同。另外,hadoop是从源代码编译的,因为Ubuntu 14.04是x32位。 Hadoop以完全分布式模式部署,使用lxc容器。

Zipkin的{p> core-site.xml(Zipkin params here):

    <property>
        <name>hadoop.htrace.spanreceiver.classes</name>
        <value>org.apache.htrace.impl.ZipkinSpanReceiver</value>
    </property>
    <property>
            <name>hadoop.htrace.zipkin.scribe.hostname</name>
            <value>10.0.3.100</value>
    </property>
    <property>
            <name>hadoop.htrace.zipkin.scribe.port</name>
            <value>9410</value>
    </property>

2 个答案:

答案 0 :(得分:0)

感谢您试用HTrace!很抱歉,版本问题现在非常痛苦。

使用cloudera的Hadoop和更高版本的CDH5.5发行版中的版本配置HTrace要容易得多。这里有一个很好的描述:http://blog.cloudera.com/blog/2015/12/new-in-cloudera-labs-apache-htrace-incubating/如果您想坚持使用源代码的Apache版本而不是供应商版本,请尝试使用Hadoop 3.0.0-alpha1。 http://hadoop.apache.org/releases.html

在Hadoop 2.6和2.7中出现的HTrace库非常老......我们从未将HTrace 4.x向后移植到那些分支机构。它们是稳定性分支,因此跟踪等新功能超出了范围。那里有一些功能,但并不多。我建议使用积极开发的新版HTrace 4.x库。 HTrace 4.x分支也具有稳定的API,因此希望将来最大限度地减少破损。

答案 1 :(得分:0)

确切地说,在代码中,我看到配置密钥的前缀是dfs.htrace,而不是hadoop.htrace。在dfsclient中,它是dfs.client.htrace。您可以将前缀更改为dfs.htrace,然后重新启动群集并使其生效。代码在类org.apache.hadoop.tracing.SpanReceiverHost中。希望这有帮助!