将HDFS数据导入Opentsdb

时间:2015-04-16 16:10:54

标签: hdfs bigdata opentsdb

我想知道是否有可能直接从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)

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

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