A place to hold mainly reading notes, and some technical stuff occasionally. 这里主要是一些读书笔记、感悟;还有部分技术相关的内容。
目录[-]
OpenTSDB
是一种采用 Java
实现,底层基于 HBase
列式存储与查询的分布式、可伸缩、开源的时间序列数据库。
官方文档:http://opentsdb.net/docs/build/html/user_guide/quickstart.html
GitHub
上的Release
下载地址:https://github.com/OpenTSDB/opentsdb/releases/tag/v2.4.1
在 CentOS7
上进行安装,虚拟主机信息如下:
[root@hadoop6 local]# uname -a
Linux hadoop6 3.10.0-1127.el7.x86_64 #1 SMP Tue Mar 31 23:36:51 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux
[root@hadoop6 local]# cat /proc/version
Linux version 3.10.0-1127.el7.x86_64 (mockbuild@kbuilder.bsys.centos.org) (gcc version 4.8.5 20150623 (Red Hat 4.8.5-39) (GCC) ) #1 SMP Tue Mar 31 23:36:51 UTC 2020
[root@hadoop6 local]# cat /etc/redhat-release
CentOS Linux release 7.8.2003 (Core)
因为 OpenTSDB
底层基于 HBase
列式存储实现,所以需要依赖 HBase
。我这里使用已有的大数据环境,这里涉及到的组件有:
[root@hadoop6 ~]# cd /usr/local/hadoop
# 启动Hadoop
[root@hadoop6 hadoop]# ./sbin/start-all.sh
# jps可以看到除了Hadoop的5个服务进程:NameNode、SecondaryNameNode、ResourceManager、NodeManager、DataNode
[root@hadoop6 hadoop]# jps
5696 NameNode
6193 SecondaryNameNode
7208 Jps
6541 ResourceManager
6717 NodeManager
5934 DataNode
访问: http://hadoop6:50070/
,进入 Hadoop
后台管理页面。
[root@hadoop6 ~]# cd /usr/local/hbase
[root@hadoop6 hbase]# vi ./conf/hbase-site.xml
# 启动HBase
[root@hadoop6 hbase]# ./bin/start-hbase.sh
# jps可以看到除了Hadoop的5个服务外多了3个H开头的进程:HRegionServer、HMaster以及HQuorumPeer
[root@hadoop6 hbase]# jps
5696 NameNode
68673 HRegionServer
6193 SecondaryNameNode
68277 HQuorumPeer
68429 HMaster
6541 ResourceManager
6717 NodeManager
68988 Jps
5934 DataNode
访问: http://hadoop6:16010/
,进入 HBase
后台管理页面。
# 报错
[root@hadoop6 hbase]# telnet localhost 2181
-bash: telnet: 未找到命令
# 查看是否安装了telnet-server服务
[root@hadoop6 hbase]# rpm -qa telnet-server
# 若没有安装,则先安装telnet-server服务
[root@hadoop6 hbase]# yum install telnet-server
# 再安装telnet
[root@hadoop6 hbase]# yum install telnet
# 再次测试连接ZooKeeper,成功
[root@hadoop6 hbase]# telnet localhost 2181
Trying ::1%1...
Connected to localhost.
Escape character is '^]'.
Connection closed by foreign host.
至此,依赖环境搭建完毕~
Note:记得关闭防火墙或者放行对应端口即可。
# 关闭防火墙
[root@hadoop6 ~]# systemctl stop firewalld.service
[root@hadoop6 local]# wget https://github.com/OpenTSDB/opentsdb/releases/download/v2.4.1/opentsdb-2.4.1-1-20210902183110-root.noarch.rpm
[root@hadoop6 local]# yum localinstall opentsdb-2.4.1-1-20210902183110-root.noarch.rpm
Note:安装完成后的目录说明如下:
- /etc/opentsdb - Configuration files,配置文件,你懂的,这是一个关键的地方,eg:ZK配置
- /tmp/opentsdb - Temporary cache files,临时文件
- /usr/share/opentsdb - Application files,应用文件
- /usr/share/opentsdb/bin - The “tsdb” startup script that launches a TSD or command line tools,可执行脚本
- /usr/share/opentsdb/lib - Java JAR library files,依赖库
- /usr/share/opentsdb/plugins - Location for plugin files and dependencies,插件
- /usr/share/opentsdb/static - Static files for the GUI,Web页面静态资源
- /usr/share/opentsdb/tools - Scripts and other tools,工具
- /var/log/opentsdb - Logs,日志
# 执行建表命令
[root@hadoop6 local]# env COMPRESSION=NONE HBASE_HOME=/usr/local/hbase /usr/share/opentsdb/tools/create_table.sh
[root@hadoop6 local]# hbase shell
SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/usr/local/hadoop/share/hadoop/common/lib/slf4j-log4j12-1.7.25.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/usr/local/hbase/lib/client-facing-thirdparty/slf4j-log4j12-1.7.30.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
SLF4J: Actual binding is of type [org.slf4j.impl.Log4jLoggerFactory]
HBase Shell
Use "help" to get list of supported commands.
Use "exit" to quit this interactive shell.
For Reference, please visit: http://hbase.apache.org/2.0/book.html#shell
Version 2.3.0, re0e1382705c59d3fb3ad8f5bff720a9dc7120fb8, Mon Jul 6 22:27:43 UTC 2020
Took 0.0017 seconds
# list命令验证是否建表成功
hbase(main):001:0> list
TABLE
tsdb
tsdb-meta
tsdb-tree
tsdb-uid
4 row(s)
Took 0.5124 seconds
=> ["tsdb", "tsdb-meta", "tsdb-tree", "tsdb-uid"]
hbase(main):002:0>
当然,也可以在 HBase
后台管理页面看到刚建的4张表。
万事俱备,让我们启动 OpenTSDB
服务吧。
# 显然,opentsdb未安装到系统服务,可参考https://github.com/OpenTSDB/opentsdb/blob/master/build-aux/rpm/systemd/opentsdb.service进行配置
[root@hadoop6 ~]# systemctl start opentsdb
Failed to start opentsdb.service: Unit not found.
# 直接到安装的目录启动opentsdb服务
[root@hadoop6 ~]# /usr/share/opentsdb/etc/init.d/opentsdb start
Starting opentsdb: [ 确定 ]
# opentsdb毕竟是Java服务,jps可以看到多了:Main、TSDMain两个进程
[root@hadoop6 opentsdb]# jps
37584 Main
27761 HRegionServer
27525 HMaster
25174 DataNode
85207 TSDMain
25479 SecondaryNameNode
26153 NodeManager
27369 HQuorumPeer
24942 NameNode
25902 ResourceManager
11246 Jps
[root@hadoop6 opentsdb]# /usr/share/opentsdb/etc/init.d/opentsdb status
opentsdb 已死,但 pid 文件存在
[root@hadoop6 opentsdb]# tailf /var/log/opentsdb/opentsdb-hadoop6-opentsdb.err
/usr/bin/tsdb: 第 117 行:exec: java: 未找到
[root@hadoop6 opentsdb]# java -version
java version "1.8.0_261"
Java(TM) SE Runtime Environment (build 1.8.0_261-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.261-b12, mixed mode)
[root@hadoop6 opentsdb]# echo $JAVA_HOME
/usr/local/jdk
[root@hadoop6 opentsdb]# ln -s /usr/local/jdk/bin/java /usr/bin/java
[root@hadoop6 opentsdb]# /usr/share/opentsdb/etc/init.d/opentsdb start
Starting opentsdb: [ 确定 ]
[root@hadoop6 opentsdb]# /usr/share/opentsdb/etc/init.d/opentsdb status
opentsdb (pid 85207) 正在运行...
打完收工~~
访问: http://hadoop6:4242/
,默认进入到图表页面。
另外,还可以查看关键指标统计、运行日志与版本信息。
总体来说,使用 OpenTSDB
作为时序数据的存储架构涉及的组件过多,这样带来的问题就是整体架构相对比较脆弱;另外是运维复杂,需要维护一套大数据的基础组件,尤其是进行分布式部署的时候,这种天然的缺陷(依赖 Hadoop
、 HBase
)更是暴露无遗。当然,可研究下源码,体会下时序数据库的设计原理还是不错的。
If you have any questions or any bugs are found, please feel free to contact me.
Your comments and suggestions are welcome!