在hbase0.96上部署opentsdb

来源:互联网 发布:c语言从入门到入坟 编辑:程序博客网 时间:2024/06/05 23:00

本文档是在hbase0.96.0版本上部署opentsdb监控时遇到的问题及相应的解决办法.本文所有操作均在ubuntu10.04系统上进行,文中所列命令几乎都可以复制粘贴到命令行上执行,命令中涉及到文件路径的需要稍作修改。囿于作者水平有限,文章难免有错误之处,欢迎读者批评指正!

1. 准备工作

1.1. 环境准备

部署opentsdb的基本环境

1) 安装git工具(编译过程和获取源码都需要使用)

2) 确保网络畅通(安装过程中需要下载第三方依赖包)

3) 安装Gnuplot(这个是开源项目,是opentsdb依赖的画图工具,推荐安装4.4版本,官网http://www.gnuplot.info/ )
注意:gnuplot最好不要自己安装,我用的是ubuntu系统所以用apt-get install gnuplot,这样会自动安装好gnuplot的依赖包。

1.2. 源码准备

获取opentsdb源码

git  clone  git://github.com/OpenTSDB/opentsdb.git

2. 官网部署步骤

2.1. 编译安装opentsdb

在上述准备工作都做好后,进入opentsdb的源码目录,执行 ./build.sh 脚本进行编译,也可以手动运行以下三条命令:

$ ./bootstrap(该命令为首次获取源码后执行,只需执行一次)

$ ./configure

$ make

如果这些步骤执行过程中都没有报错,说明opentsdb编译成功,在启动opentsdb之前需要在hbase上建立opentsdb用到的两个表:tsdbtsdb-uid(这两个表名是opentsdb的默认表名,如果想用其他名字也可以,只需在启动opentsdb时加上--table=tablename--uidtable=uid-table-name即可)。建表命令(该脚本建立默认表名)如下:

env  COMPRESSION=NONE  HBASE_HOME=path/to/hbase-home  ./src/create_table.sh

上面建表时没有启用hbase的压缩模式,在实际生产环节中强烈建议启用LZO压缩(因为数据量非常大)。

2.2. 启动opentsdb

成功编译后的opentsdb根目录(或根目录下的build目录)会生成一个tsdb的可执行文件,即可通过该文件启动opentsdb

公共参数

--table=table-name//参考上一节编译安装opentsdb

--uidtable=uid-table-name//参考上一节编译安装opentsdb

--zkbasedir=PATH//指明hbase的注册路径,默认为:/hbase

--zkquorum=SPEC//指明zookeeper机器,默认为localhost

这些公共参数在执行opentsdb的所有命令时都是需要的,可以将这些公共参数写入./tsdb.local的文件中,启动opentsdb时会自动读取该文件!

简单的启动opentsdb命令为:

./tsdb tsd --port=4224 --table=tsdb --uidtable=tsdb-uid --staticroot=./staticroot --cachedir="$tsdtmp" --zkquorum=10.10.64.226,10.10.64.235,10.10.65.78 --auto-metric

tsd命令可指定的参数如下:

--async-io=true|false//使用async NIOtrue,默认)或传统blocking iofalse

--auto-metric//自动添加metricstsdb,如不指定则添加数据前需要先创建对应metrics

--cachedir=PATH//缓存请求结果数据的目录,尽量指定读写高效的目录

--flush-interval=MSEC//一个新数据点被缓存的时间,默认是1000毫秒

--port=NUM//监听的端口

--staticroot=PATH//web 服务的根目录

--worker-threads=NUM//异步io的进程数,默认为cpu个数乘2

更多用法请参考http://opentsdb.net/cli.html

3. 对官网部署的修订

上述步骤对hbase0.94及其以前的版本是适合的,几乎不用做什么修改。但hbase0.96版本较之前版本有较大改动,因此直接按照上述步骤编译部署opentsdb会产生若干问题。现将我的时间结果记录并共享给大家,仅供参考。

Hbase0.96版本较之前的改动主要有:一,使用protobuf;二,去掉ROOT表。

根据上述0.96版本的改动,opentsdb的编译过程需要做如下改动:

3.1. 安装新版本的protobuf

最好安装2.5.0版本的protobuf,之前版本可能有问题。

3.2. 替换第三方库asynchbase

可以到https://github.com/tsuna/asynchbase这里下载asynchbase源码自己编译,也可以到http://tsunanet.net/~tsuna/asynchbase/asynchbase-1.5.0-rc2.jar这里下载编译好的jar包,放入opentsdb根目录里的third_party/hbase/下,并生成新jar包的相应md5文件。注意:如果不生成新的md5文件则新jar包替换不成功,而且还会被删除。

3.3. 改动opentsdb配置

① 在Makefile.am文件中“$(NETTY)\”这一行后面添加一行“$(PROTOBUF)\”。

② 在third_party/include.mk文件中“include third_party/powermock/include.mk”这一行后面添加一行“include third-party/protobuf/include.mk”。

③ 在third-party/protobuf/include.mk中添加如下内容:
PROTOBUF_VERSION := 2.5.0
PROTOBUF := third_party/protobuf/protobuf-java-$(PROTOBUF_VERSION).jar
PROTOBUF_BASE_URL := http://search.maven.org/remotecontent?filepath=com/google/protobuf/protobuf-java/$(PROTOBUF_VERSION)
$(PROTOBUF): $(PROTOBUF).md5
    set dummy "$(PROTOBUF_BASE_URL)" "$(PROTOBUF)"; shift; $(FETCH_DEPENDENCY)       #注意黄色部分应该为制表符(tab键)
THIRD_PARTY += $(PROTOBUF)

④ 增加third_party/protobuf/protobuf-java-2.5.0.jar.md5文件,内容为“a44473b98947e2a54c54e0db1387d137

经过上面步骤的修改后重新编译opentsdb,此时应该编译成功了!尽情享受构建在hbase0.96版本上的喜悦吧!

参考资料

[1]. http://opentsdb.net/getting-started.html

[2]. http://mail-archives.apache.org/mod_mbox/hbase-user/201310.mbox/%3CCALte62xDtoK3WgDq5GVcac_3RjryxmK-L_84FVX2RrPMUd+5pA@mail.gmail.com%3E

[3]. https://groups.google.com/forum/#!topic/asynchbase/HFiG3-e4M_0

[4]. https://groups.google.com/forum/#!msg/opentsdb/Kv-QrliSExU/7-VJKrOoo2cJ

0 0
原创粉丝点击