OpenTSDB ,是一个时系列数据库,它基于HBase存储数据,充分发挥了HBase的分布式列存储特性,支持数百万每秒的读写,它的特点就是容易扩展,灵活的tag机制。以下在已安装cloudera已经有hadoop hbase的系统安装opentsdb
1.获取安装文件
# cd /tmp
# wget https://github.com/OpenTSDB/opentsdb/releases/download/v2.4.0RC2/opentsdb-2.4.0RC2_all.deb
2. 安装下载的安装包
# dpkg -i opentsdb-2.4.0RC2_all.deb
# apt-get install -f
修改 /etc/opentsdb/opentsdb.conf,配置ZooKeeper
# vi /etc/opentsdb/opentsdb.conf
在最后一行:tsd.storage.hbase.zk_quorum=localhost
3.建立数据库表
首先定位JAVA_HOME目录
# which java
# ls -lrt /usr/bin/java
# ls -lrt /etc/alternatives/java
最后定位到我的JAVA_HOME目录是 /usr/lib/jvm/j2sdk1.8-oracle/jre
转到建表脚本目录
# cd /usr/share/opentsdb/tools
# env COMPRESSION=NONE HBASE_HOME=/opt/cloudera/parcels/CDH/lib/hbase JAVA_HOME=/usr/lib/jvm/j2sdk1.8-oracle/jre ./create_table.sh
如果 # echo $JAVA_HOME 显示该环境变量已经设置,命令行中就可以不需要JAVA_HOME参数
可以查看到新建的四个表tsdb、tsdb-meta、tsdb-tree、tsdb-uid
4.启动opentsdb
# service opentsdb start
如果不能正常启动,显示JAVA_HOME没有设置
可以设置JAVA_HOME环境变量,或修改/etc/init.d/opentsdb文件
设置JDK目录即可
6.在浏览器测试
1.获取安装文件
# cd /tmp
# wget https://github.com/OpenTSDB/opentsdb/releases/download/v2.4.0RC2/opentsdb-2.4.0RC2_all.deb
2. 安装下载的安装包
# dpkg -i opentsdb-2.4.0RC2_all.deb
# apt-get install -f
修改 /etc/opentsdb/opentsdb.conf,配置ZooKeeper
# vi /etc/opentsdb/opentsdb.conf
在最后一行:tsd.storage.hbase.zk_quorum=localhost
3.建立数据库表
首先定位JAVA_HOME目录
# which java
# ls -lrt /usr/bin/java
# ls -lrt /etc/alternatives/java
最后定位到我的JAVA_HOME目录是 /usr/lib/jvm/j2sdk1.8-oracle/jre
转到建表脚本目录
# cd /usr/share/opentsdb/tools
# env COMPRESSION=NONE HBASE_HOME=/opt/cloudera/parcels/CDH/lib/hbase JAVA_HOME=/usr/lib/jvm/j2sdk1.8-oracle/jre ./create_table.sh
如果 # echo $JAVA_HOME 显示该环境变量已经设置,命令行中就可以不需要JAVA_HOME参数
# hbase shell
list可以查看到新建的四个表tsdb、tsdb-meta、tsdb-tree、tsdb-uid
4.启动opentsdb
# service opentsdb start
如果不能正常启动,显示JAVA_HOME没有设置
可以设置JAVA_HOME环境变量,或修改/etc/init.d/opentsdb文件
设置JDK目录即可
5. 安装图形生成工具
- apt-get install gnuplot
http://192.168.81.149:4242
7.写入数据测试
Python Request写入10万条数据
import time
import math
import requests
def get_value(num):
return math.sin(num)+1
def send_json(json, s):
r = s.post("http://localhost:4242/api/put?details", json=json)
return r.text
def main():
s = requests.Session()
a = int(time.time()) - 100000
ls = []
for i in range(1, 100000):
json = {
"metric": "sys.batch.test6",
"timestamp": a,
"value": get_value(i),
"tags": {
"host": "web01",
"dc": "lga"
}
}
i += 0.01
a += 1
ls.append(json)
if len(ls) == 50:
send_json(ls, s)
ls = []
send_json(ls, s)
ls = []
if __name__ == "__main__":
start = time.time()
main()
print time.time()-start