源码准备
1.下载源代码
lynn@lynn-ubuntu:/codes/github$ git clone https://github.com/OpenTSDB/opentsdb.git
Cloning into 'opentsdb'...
remote: Enumerating objects: 306, done.
remote: Counting objects: 100% (306/306), done.
remote: Compressing objects: 100% (122/122), done.
remote: Total 33302 (delta 92), reused 273 (delta 86), pack-reused 32996
Receiving objects: 100% (33302/33302), 36.25 MiB | 65.00 KiB/s, done.
Resolving deltas: 100% (18824/18824), done.
2. 创建分支v2.4.0
查看远程Tags列表:
lynn@lynn-ubuntu:/codes/github/opentsdb$ git tag
...
v2.3.2
v2.4.0
v2.4.0RC2
检出分支:
lynn@lynn-ubuntu:/codes/github/opentsdb$ git checkout -b v2.4.0
Switched to a new branch 'v2.4.0'
lynn@lynn-ubuntu:/codes/github/opentsdb$ git branch
master
* v2.4.0
编译打包
构建pom.xml配置文件:
lynn@lynn-ubuntu:/codes/github/opentsdb$ sh build.sh pom.xml
+ test -f configure
+ ./bootstrap
autoreconf: Entering directory `.'
autoreconf: configure.ac: not using Gettext
autoreconf: running: aclocal --force -I build-aux
autoreconf: configure.ac: tracing
autoreconf: configure.ac: not using Libtool
autoreconf: running: /usr/bin/autoconf --force
autoreconf: configure.ac: not using Autoheader
autoreconf: running: automake --add-missing --copy --force-missing
configure.ac:19: installing 'build-aux/install-sh'
configure.ac:19: installing 'build-aux/missing'
Makefile.am:921: warning: whitespace following trailing backslash
third_party/validation-api/include.mk:24: warning: variable 'VALIDATION_API_SOURCES' is defined but no program or
third_party/validation-api/include.mk:24: library has 'VALIDATION_API' as canonical name (possible typo)
Makefile.am:983: 'third_party/include.mk' included from here
third_party/include.mk:38: 'third_party/validation-api/include.mk' included from here
autoreconf: Leaving directory `.'
+ test -d build
+ mkdir build
+ cd build
+ test -f Makefile
+ ../configure pom.xml
configure: WARNING: you should use --build, --host, --target
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking for a thread-safe mkdir -p... /bin/mkdir -p
checking for gawk... no
checking for mawk... mawk
checking whether make sets $(MAKE)... yes
checking whether make supports nested variables... yes
checking for md5sum... /usr/bin/md5sum
checking for java... /usr/lib/jdk1.8.0_172/bin/java
checking for javac... /usr/lib/jdk1.8.0_172/bin/javac
checking for jar... /usr/lib/jdk1.8.0_172/bin/jar
checking for true... /bin/true
checking for javadoc... /usr/lib/jdk1.8.0_172/bin/javadoc
checking for wget... /usr/bin/wget
checking for curl... /opt/anaconda2/bin/curl
checking that generated files are newer than configure... done
configure: creating ./config.status
config.status: creating Makefile
config.status: creating opentsdb.spec
config.status: creating build-aux/fetchdep.sh
+ MAKE=make
+ uname -s
+ [ Linux = FreeBSD ]
+ exec make pom.xml
(cd .. ; ./build-aux/create-src-dir-overlay.sh)
{ \
echo ''; \
sed <../pom.xml.in \
-e 's/@ASYNCHBASE_VERSION@/1.8.2/' \
-e 's/@ASYNCBIGTABLE_VERSION@/0.0/' \
-e 's/@ASYNCCASSANDRA_VERSION@/0.0/' \
-e 's/@GUAVA_VERSION@/18.0/' \
-e 's/@GWT_VERSION@/2.6.0/' \
-e 's/@GWT_THEME_VERSION@/1.0.0/' \
-e 's/@HAMCREST_VERSION@/1.3/' \
-e 's/@JACKSON_VERSION@/2.9.5/' \
-e 's/@JAVASSIST_VERSION@/3.21.0-GA/' \
-e 's/@JUNIT_VERSION@/4.11/' \
-e 's/@LOG4J_OVER_SLF4J_VERSION@/1.7.7/' \
-e 's/@LOGBACK_CLASSIC_VERSION@/1.0.13/' \
-e 's/@LOGBACK_CORE_VERSION@/1.0.13/' \
-e 's/@MOCKITO_VERSION@/1.9.5/' \
-e 's/@NETTY_VERSION@/3.10.6.Final/' \
-e 's/@OBJENESIS_VERSION@/1.3/' \
-e 's/@POWERMOCK_MOCKITO_VERSION@/1.5.4/' \
-e 's/@SLF4J_API_VERSION@/1.7.7/' \
-e 's/@SUASYNC_VERSION@/1.4.0/' \
-e 's/@ZOOKEEPER_VERSION@/3.4.6/' \
-e 's/@APACHE_MATH_VERSION@/3.4.1/' \
-e 's/@JEXL_VERSION@/2.1.1/' \
-e 's/@JGRAPHT_VERSION@/0.9.1/' \
-e 's/@spec_title@/OpenTSDB/' \
-e 's/@spec_vendor@/The OpenTSDB Authors/' \
-e 's/@spec_version@/2.4.0/' \
-e 's/@maven_profile_hbase@/true/' \
-e 's/@maven_profile_bigtable@/false/' \
-e 's/@maven_profile_cassandrae@/false/' \
; \
} >pom.xml-t
mv pom.xml-t ../pom.xml
编译打包:
mvn clean package -Phbase
导入Intellij IDEA
1. 由于本地只有jdk1.8, 因此修改pom.xml文件jdk版本
pom.xml
org.apache.maven.plugins
maven-compiler-plugin
2.5.1
1.8
-Xlint
**/client/*.java
**/TestGraphHandler.java
- 代码冗余报错:
Error:(36, 10) java: duplicate class: tsd.client.EventsHandler
因此将src-main/tsd目录置为Excluded状态。
3. 运行主程序:src-main/net/opentsdb/tools/OpenTSDBMain
或
src-main/net/opentsdb/tools/TSDMain
- 将fat-jar目录置为ResourcesRoot加入Classpath下
- 在HBase中创建相关表格
lynn:lynn lynn:lynn-meta lynn:lynn-tree lynn:lynn-uid
- 增加如下运行参数:
OpenTSDBMaintsd --zkquorum manager.bigdata.com:2181 --zkbasedir /hbase-unsecure --uidtable lynn:lynn-uid --table lynn:lynn --metatable lynn:lynn-meta --treetable lynn:lynn-tree
TSDMain
--config=/opt/opentsdb-2.4.0/etc/opentsdb/opentsdb.conf
opentsdb.conf
# --------- NETWORK ----------
# The TCP port TSD should use for communications
# *** REQUIRED ***
tsd.network.port = 4242
# The IPv4 network address to bind to, defaults to all addresses
# tsd.network.bind = 0.0.0.0
# Disable Nagel's algorithm, default is True
#tsd.network.tcp_no_delay = true
# Determines whether or not to send keepalive packets to peers, default
# is True
#tsd.network.keep_alive = true
# Determines if the same socket should be used for new connections, default
# is True
#tsd.network.reuse_address = true
# Number of worker threads dedicated to Netty, defaults to # of CPUs * 2
#tsd.network.worker_threads = 8
# Whether or not to use NIO or tradditional blocking IO, defaults to True
#tsd.network.async_io = true
# ----------- HTTP -----------
# The location of static files for the HTTP GUI interface.
# *** REQUIRED ***
tsd.http.staticroot = /opt/opentsdb-2.4.0/static/
# Where TSD should write it's cache files to
# *** REQUIRED ***
tsd.http.cachedir = /tmp/opentsdb
# --------- CORE ----------
# Whether or not to automatically create UIDs for new metric types, default
# is False
tsd.core.auto_create_metrics = true
# --------- STORAGE ----------
# Whether or not to enable data compaction in HBase, default is True
#tsd.storage.enable_compaction = true
#Whether or not to append data to columns when writing data points instead of creating new columns for each value. Avoids the need for compactions after each hour but can use more resources on HBase.
#tsd.storage.enable_appends = false
# How often, in milliseconds, to flush the data point queue to storage,
# default is 1,000
# tsd.storage.flush_interval = 1000
# Name of the HBase table where data points are stored, default is "tsdb"
tsd.storage.hbase.data_table = lynn:lynn
# Name of the HBase table where UID information is stored, default is "tsdb-uid"
tsd.storage.hbase.uid_table = lynn:lynn-uid
tsd.storage.hbase.meta_table = lynn:lynn-meta
tsd.storage.hbase.tree_table = lynn:lynn-tree
# Path under which the znode for the -ROOT- region is located, default is "/hbase"
tsd.storage.hbase.zk_basedir = /hbase-unsecure
# A comma separated list of Zookeeper hosts to connect to, with or without
# port specifiers, default is "localhost"
tsd.storage.hbase.zk_quorum = manager.bigdata.com:2181