1

我想知道是否有可能将数据直接从 HDFS 导入 Opentsdb。你能给我一些例子/提示吗?

我尝试使用 exec 没有成功的结果:

hadoop jar path.jar org.apache.solr.hadoop.HdfsFindTool -find hdfs:///path -type f -name 'part*' -mmin -5 -exec path/opentsdb-master/build/tsdb import {} \;

-find: Fatal internal error
java.lang.NullPointerException
        at org.apache.hadoop.fs.shell.find.Exec.initialise(Exec.java:109)
        at org.apache.hadoop.fs.shell.find.BaseExpression.initialise(BaseExpression.java:64)
        at org.apache.hadoop.fs.shell.Find.processArguments(Find.java:383)
        at org.apache.hadoop.fs.shell.Command.processRawArguments(Command.java:190)
        at org.apache.hadoop.fs.shell.Command.run(Command.java:154)
        at org.apache.hadoop.fs.FsShell.run(FsShell.java:255)
        at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:70)
        at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:84)
        at org.apache.solr.hadoop.HdfsFindTool.main(HdfsFindTool.java:43)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:606)
        at org.apache.hadoop.util.RunJar.main(RunJar.java:212)
4

2 回答 2

0

每个 TSD 使用开源数据库 HBase 来存储和检索时间序列数据。现在,您可以使用 HBase shell 或 Java api 将 HDFS 数据放入 HBase。如果您使用其他数据库而不是 HBase,则需要使用 sqoop 将 HDFS 数据放入数据库。

于 2015-04-17T02:38:05.993 回答
0

如果你想通过opentsdb将hdfs数据直接写入HBase进行时序数据存储。您需要注意几件事:OpenTSDB 具有特殊的时间序列格式,例如复合行键概念和经过的增量时间。我不确定您在 HDFS 中的数据格式是什么。最好的选择是用 Java 编写脚本,从 HDFS 读取数据并以 OpenTSDB 格式写入 HBase。您还需要创建指标和标签。

于 2015-06-25T17:50:12.240 回答