OpenTSDBv2.4.0 IntellijIDEA开发环境搭建

源码准备

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
          1.8
          -Xlint
          
            **/client/*.java
          
          
            **/TestGraphHandler.java
          
        
      
  1. 代码冗余报错:
    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
  2. 将fat-jar目录置为ResourcesRoot加入Classpath下
  3. 在HBase中创建相关表格
    lynn:lynn
    lynn:lynn-meta
    lynn:lynn-tree
    lynn:lynn-uid
  4. 增加如下运行参数:
    OpenTSDBMain
    tsd --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

网页标题:OpenTSDBv2.4.0 IntellijIDEA开发环境搭建
标题URL:http://pwwzsj.com/article/pgcosh.html