简介

OpenTSDB是一种基于Hbase的分布式的,可伸缩的时间序列数据库。

本篇介绍在CDH6环境中部署OpenTSDB。

OpenTSDB的依赖

已经在CDH中部署完成Hbase,并且配置好JAVA_HOME

下载OpenTSDB

1
https://github.com/OpenTSDB/opentsdb/releases

安装依赖

1
yum install gnuplot

安装OpenTSDB

1
rpm -ivh opentsdb-2.4.0.noarch.rpm

修改配置文件

通常只需要修改以下三个配置即可。vim /usr/share/opentsdb/etc/opentsdb/opentsdb.conf

1
2
3
4
5
6
# 默认端口
tsd.network.port = 4242
# 是否自动创建 metic,默认值为 false
tsd.core.auto_create_metrics = true
# 修改为 zookeeper 集群地址
tsd.storage.hbase.zk_quorum = slave2,slave3,slave4

还可以参考如下进行详细配置:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# 是否在TSD启动的时候,预热UID缓存数据,为了提升性能,需要开启
tsd.http.request.enable_chunked=true
# Http写入数据时是否支持一次写入大批量的数据
tsd.core.preload_uid_cache=true
# 写入批量数据的上限
tsd.http.request.max_chunk=51200
# tsd查询的timeout,如果为0,则不会timeout
tsd.query.timeout=300
# 每来一条数据append到hbase
tsd.storage.enable_appends=true
# append打开,这种就关闭
tsd.storage.enable_compaction=false
# 写入相同时间是否覆盖前面的值
tsd.storage.fix_duplicates=true
# 是否启用 salting 功能,默认为0不开启。hashed salt ID 占用的字节数
tsd.storage.salt.width=1
# 打散到几个bucket去,默认20
tsd.storage.salt.buckets=6
# metric UID长度,默认3
tsd.storage.uid.width.metric=4
# tagK UID长度,默认3
tsd.storage.uid.width.tagk=4
# tagV UID长度 默认3
tsd.storage.uid.width.tagv=4

注册服务

1
vim /usr/lib/systemd/system/opentsdb.service

填入如下内容:

1
2
3
4
5
6
7
8
9
10
11
12
13

[Unit]
Description=OpenTSDB Service
After=network.target remote-fs.target nss-lookup.target

[Service]
Type=forking
ExecStart=/usr/share/opentsdb/etc/init.d/opentsdb start
ExecStop=/usr/share/opentsdb/etc/init.d/opentsdb stop
Restart=on-abort

[Install]
WantedBy=multi-user.target

初始化OpenTSDB

1
env COMPRESSION=NONE HBASE_HOME=/opt/cloudera/parcels/CDH/lib/hbase /usr/share/opentsdb/tools/create_table.sh

COMPRESSION=NONE表示不用任何压缩算法,具体情况自己定义即可。

启动OpenTSDB

1
2
systemctl start opentsdb
systemctl status opentsdb

补充说明

由于OpenTSDB本身不支持集群,而其依赖的Hbase是一个分布式的,所以对于实际使用中,可以部署多个OpenTSDB服务,以实现高可用,依赖的相关组件有VarnishNginx+Consul