OpenTSDB v2.4.0 Intellij IDEA開發環境搭建

源碼準備

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 '<!-- Generated by Makefile on '`date`' -->'; \
  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

<plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>2.5.1</version>
        <configuration>
          <source>1.8</source>
          <target>1.8</target>
          <compilerArgument>-Xlint</compilerArgument>
          <excludes>
            <exclude>**/client/*.java</exclude>
          </excludes>
          <testExcludes>
            <exclude>**/TestGraphHandler.java</exclude>
          </testExcludes>
        </configuration>
      </plugin>
  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

# 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
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章