天天看點

Centos7下為Open-falcon部署OpenTsdb一、安裝Zookeeper二、安裝HDFS三、安裝hbase四、OpenTSDB安裝五、連接配接Open-falcon

一邊安裝一邊寫,寫得略亂

安裝OpenTsdb需要HBase,HBase需要Zookeeper和HDFS

這一串都是apache家的,安裝java是必須的

yum install -y java
           

一、安裝Zookeeper

在五個節點上部署zk

下載下傳tar包https://mirrors.tuna.tsinghua.edu.cn/apache/zookeeper/zookeeper-3.6.1/apache-zookeeper-3.6.1-bin.tar.gz

解壓

tar -xzvf apache-zookeeper-3.6.1-bin.tar.gz
mv apache-zookeeper-3.6.1-bin zookeeper
           

修改配置檔案,zookeeper/conf目錄下有三個配置檔案

Centos7下為Open-falcon部署OpenTsdb一、安裝Zookeeper二、安裝HDFS三、安裝hbase四、OpenTSDB安裝五、連接配接Open-falcon

修改log4j.properties裡的zookeeper.log.dir,修改日志目錄

Centos7下為Open-falcon部署OpenTsdb一、安裝Zookeeper二、安裝HDFS三、安裝hbase四、OpenTSDB安裝五、連接配接Open-falcon

zoo_sample.cfg是一個預設的zoo.cfg配置,這個是zookeeper的主要配置檔案,複制一份

cp zoo_sample.cfg zoo.cfg
           

修改資料檔案目錄dataDir,端口按需修改

Centos7下為Open-falcon部署OpenTsdb一、安裝Zookeeper二、安裝HDFS三、安裝hbase四、OpenTSDB安裝五、連接配接Open-falcon

配置叢集,把叢集中所有節點寫上,2888是zk節點通信端口,3888是zk選舉端口

Centos7下為Open-falcon部署OpenTsdb一、安裝Zookeeper二、安裝HDFS三、安裝hbase四、OpenTSDB安裝五、連接配接Open-falcon

然後就可以推送到各個節點的安裝目錄下,我是放到了/usr/local,順便我把配置目錄做了軟連結到/etc/zookeeper/conf下

cp zookeeper /usr/local/
mkdir /etc/zookeeper
ln -s /usr/local/zookeeper/conf /etc/zookeeper/conf  #建立配置目錄軟連結
           

啟動

/usr/local/zookeeper/bin/zkServer.sh start
           

然後就報錯了,報錯,很正常,但是你沒有異常提示啊,日志也沒生成你就給我來個FAILED TO START

Centos7下為Open-falcon部署OpenTsdb一、安裝Zookeeper二、安裝HDFS三、安裝hbase四、OpenTSDB安裝五、連接配接Open-falcon

修改了一下這個腳本,把啟動指令的nohup去掉看看輸出

Centos7下為Open-falcon部署OpenTsdb一、安裝Zookeeper二、安裝HDFS三、安裝hbase四、OpenTSDB安裝五、連接配接Open-falcon
Centos7下為Open-falcon部署OpenTsdb一、安裝Zookeeper二、安裝HDFS三、安裝hbase四、OpenTSDB安裝五、連接配接Open-falcon

報了Invalid config,但是檢查了配置檔案都沒錯,上網查了一下,又仔細看了官方文檔發現這麼一句

“You attribute the server id to each machine by creating a file named myid, one for each server, which resides in that server's data directory, as specified by the configuration file parameter dataDir.”

也就是說,需要在data目錄下建立一個叫做myid的檔案,這個檔案裡隻有一個數字,就是配置檔案裡server.後面的編号

弄好之後,啟動成功了,但是日志沒有在我設定的目錄下,還是在原來的.目錄,因為bin/zkEnv.sh裡面要加上ZOO_LOG_DIR變量

Centos7下為Open-falcon部署OpenTsdb一、安裝Zookeeper二、安裝HDFS三、安裝hbase四、OpenTSDB安裝五、連接配接Open-falcon

重新開機就可以了

Centos7下為Open-falcon部署OpenTsdb一、安裝Zookeeper二、安裝HDFS三、安裝hbase四、OpenTSDB安裝五、連接配接Open-falcon

二、安裝HDFS

我用的是hadoop3.2.1版本,部署2nn+3dn+5jn,ha模式

下載下傳hadoop3.2.1https://mirrors.tuna.tsinghua.edu.cn/apache/hadoop/common/hadoop-3.2.1/hadoop-3.2.1.tar.gz

解壓,修改配置,注意配置中設計的各種目錄,都建立一下,并把屬主改為hdfs使用者

改一下hadoop-env.sh,增加JAVA_HOME、HADOOP_CLASSPTH、日志目錄

# 日志目錄
export HADOOP_LOG_DIR=/var/log/hadoop/

# JAVA_HOME
export JAVA_HOME="/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.191.b12-1.el7_6.x86_64/jre"

# HADOOP_CLASSPATH
export HADOOP_HOME="/usr/local/hadoop-3.2.1"
export HADOOP_CLASSPATH=$HADOOP_CLASSPATH:$HADOOP_HOME/share/hadoop/mapreduce/*:$HADOOP_HOME/share/hadoop/mapreduce/lib/*:$HADOOP_HOME/share/hadoop/common/*:$HADOOP_HOME/share/hadoop/common/lib/*:$HADOOP_HOME/share/hadoop/yarn/*:$HADOOP_HOME/share/hadoop/yarn/lib/*:$HADOOP_HOME/share/hadoop/hdfs/*:$HADOOP_HOME/share/hadoop/hdfs/lib/*:/usr/lib/hadoop/lib/*
           

修改一下core-site.xml

<configuration>
  <!-- 檔案系統 -->
  <property>
    <name>fs.defaultFS</name>
    <value>hdfs://ns</value>
  </property>
  
  <!-- zookeeper位址 -->
  <property>
    <name>ha.zookeeper.quorum</name>
    <value>IP1:2181,IP2:2181,IP3:2181,IP4:2181,IP5:2181</value>
  </property>
</configuration>
           

hdfs-site.xml,都是基礎配置,沒有涉及到參數調優

<configuration>
  <!-- hdfs管理者 -->
  <property>
    <name>dfs.permissions.superusergroup</name>
    <value>hdfs</value>
  </property>
  <property>
    <name>dfs.cluster.administrators</name>
    <value>hdfs</value>
  </property>
 
  <!-- namenode位址 -->
  <property>
    <name>dfs.nameservices</name>
    <value>ns</value>
   </property>
  <property>
    <name>dfs.ha.namenodes.ns</name>
    <value>nn1,nn2</value>
  </property>
  <property>
    <name>dfs.namenode.rpc-address.ns.nn1</name>
    <value>nnIP1:54310</value>
  </property>
  <property>
    <name>dfs.namenode.rpc-address.ns.nn2</name>
    <value>nnIP2:54310</value>
  </property>
  <property>
    <name>dfs.namenode.servicerpc-address.ns.nn1</name>
    <value>nnIP1:53310</value>
  </property>
  <property>
    <name>dfs.namenode.servicerpc-address.ns.nn2</name>
    <value>nnIP2:53310</value>
  </property>
  <property>
    <name>dfs.namenode.http-address.ns.nn1</name>
    <value>nnIP1:50070</value>
  </property>
  <property>
    <name>dfs.namenode.http-address.ns.nn2</name>
    <value>nnIP2:50070</value>
  </property>

  <!-- 高可用 -->
  <property>
    <name>dfs.ha.automatic-failover.enabled</name>
    <value>true</value>
  </property>
  <property>
    <name>dfs.ha.fencing.methods</name>
    <value>shell(/bin/true)</value>
  </property>
  <property>
    <name>dfs.client.failover.proxy.provider.ns</name>
    <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider
    </value>
  </property>
  <property>
    <name>dfs.ha.automatic-failover.enabled</name>
    <value>true</value>
  </property>
  
  <!-- journalnode位址 -->
  <property>
    <name>dfs.journalnode.rpc-address</name>
    <value>0.0.0.0:8485</value>
  </property>
  <property>
    <name>dfs.journalnode.http-address</name>
    <value>0.0.0.0:8480</value>
  </property>
  <property>
    <name>dfs.namenode.shared.edits.dir.ns</name>
    <value>qjournal://jnIP1:8485;jnIP2:8485;jnIP3:8485;jnIP4.ctc.local:8485;jnIP5:8485/ns</value>
  </property>

  <!-- journalnode相關 -->
  <property>
    <name>dfs.journalnode.edits.dir</name>
    <value>/data01/hadoop/hdfs/journalnode</value>
    <final>true</final>
  </property>
  
  <!-- namenode相關 -->
  <property>
    <name>dfs.namenode.name.dir</name>
    <value>/data01/hadoop/hdfs/namenode,/data02/hadoop/hdfs/namenode</value>
    <final>true</final>
  </property>
  <property>
    <name>dfs.namenode.checkpoint.edits.dir</name>
    <value>${dfs.namenode.checkpoint.dir}</value>
  </property> 
  
  <!-- datanode相關 -->
  <property>
    <name>dfs.datanode.data.dir</name>
    <value>/data03/hadoop/hdfs/datanode,/data04/hadoop/hdfs/datanode,/data05/hadoop/hdfs/datanode,/data06/hadoop/hdfs/datanode,/data07/hadoop/hdfs/datanode,/data08/hadoop/hdfs/datanode,/data09/hadoop/hdfs/datanode,/data10/hadoop/hdfs/datanode,/data11/hadoop/hdfs/datanode,/data12/hadoop/hdfs/datanode</value>
    <final>true</final>
  </property>
</configuration>
           

放到自己喜歡的目錄,我是放到了/usr/local下面

建立hdfs使用者用于運作

useradd -m /bin/false hdfs
           

兩台nn之間需要做免密登陸,先生成ssh的公鑰,再把自己的公鑰拷貝到另外一台機器上就可以

在兩台nn上生成一下密鑰,切換到hdfs使用者,選項都保持預設,回車即可

ssh-keygen -t rsa
           

成功的話,在hdfs使用者的home目錄下,就會出現.ssh檔案夾

Centos7下為Open-falcon部署OpenTsdb一、安裝Zookeeper二、安裝HDFS三、安裝hbase四、OpenTSDB安裝五、連接配接Open-falcon

把第一台nn的.ssh/id_rsa.pub檔案裡的文本拷貝到第二台nn的.ssh/authorized_keys下,authorized_keys檔案的權限必須為600

做好之後,第一台nn就可以免密登陸第二台nn了,再把第二台的密鑰也拷貝到第一台上

互相ssh測試一下,通了就可以

首先啟動5台jn

sudo -uhdfs /usr/local/hadoop-3.2.1/bin/hdfs --daemon start journalnode
           

在1台nn上格式化dfs

sudo -uhdfs /usr/local/hadoop-3.2.1/bin/hdfs namenode -format
           

啟動nn和zkfc

sudo -uhdfs /usr/local/hadoop-3.2.1/bin/hdfs --daemon start namenode
sudo -uhdfs /usr/local/hadoop-3.2.1/bin/hdfs  zkfc -formatZK  #初始化zookeeper上節點
sudo -uhdfs /usr/local/hadoop-3.2.1/bin/hdfs --daemon start zkfc
           

看一下zkfc的日志,出現下面字樣就是成功了

Centos7下為Open-falcon部署OpenTsdb一、安裝Zookeeper二、安裝HDFS三、安裝hbase四、OpenTSDB安裝五、連接配接Open-falcon

現在,要把第一台nn上的中繼資料檔案同步到第二台nn上,在第2台nn上執行同步指令

sudo -uhdfs /usr/local/hadoop-3.2.1/bin/hdfs namenode -bootstrapStandby
           

然後啟動第二台nn和zkfc

sudo -uhdfs /usr/local/hadoop-3.2.1/bin/hdfs --daemon start namenode
sudo -uhdfs /usr/local/hadoop-3.2.1/bin/hdfs --daemon start zkfc
           

zkfc日志出現下面字樣證明成功

Centos7下為Open-falcon部署OpenTsdb一、安裝Zookeeper二、安裝HDFS三、安裝hbase四、OpenTSDB安裝五、連接配接Open-falcon

現在關掉active nn,測試一下切換

sudo -uhdfs /usr/local/hadoop-3.2.1/bin/hdfs --daemon stop namenode
           

通過50070端口的頁面來确認是否切換成功

最後啟動dn

sudo -uhdfs /usr/local/hadoop-3.2.1/bin/hdfs --daemon start datanode
           

Centos7下為Open-falcon部署OpenTsdb一、安裝Zookeeper二、安裝HDFS三、安裝hbase四、OpenTSDB安裝五、連接配接Open-falcon

三、安裝hbase

使用hbase2.2.5版本,2master+3regionserver

修改conf/hbase-site.xml

<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl" target="_blank" rel="external nofollow" ?>
<configuration>
  <property>
    <name>hbase.cluster.distributed</name>
    <value>true</value>
  </property>
  <property>
    <name>hbase.tmp.dir</name>
    <value>/data03/hbase/tmp</value>
  </property>
  <property>
    <name>hbase.unsafe.stream.capability.enforce</name>
    <value>false</value>
  </property>
  <property>
    <name>hbase.rootdir</name>
    <value>hdfs://ns/hbase</value>
  </property>
  <property>
    <name>hbase.zookeeper.quorum</name>
    <value>IP1:2181,IP2:2181,IP3:2181,IP4:2181,IP5:2181</value>
  </property>
  <property>
    <name>hbase.zookeeper.property.dataDir</name>
    <value>/data02/zookeeper</value>
  </property>
</configuration>
           

conf/hbase.sh,增加JAVA_HOME和日志目錄配置,關閉自帶zookeeper

export HBASE_LOG_DIR=/var/log/hbase
export HBASE_MANAGES_ZK=false
export JAVA_HOME="/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.191.b12-1.el7_6.x86_64/jre"
           

建立conf/backup-masters,寫上所有master節點的名字,不能隻寫backup master,不然backup master挂了怎麼切換回去呢

建立conf/egionservers,寫上所有regionserver節點

2台master需要免密登陸regionserver,操作同hdfs裡面的一樣,生成master節點的key放到所有節點(主master到備份master也需要ssh免密的)就好了,注意,如果打算用新使用者,比如hbase,就要切換到hbase使用者重新生成key,做好免密之後ssh試一下

hbase需要hdfs-site.xml和core-site.xml才能通路hdfs,做一個軟連接配接到hbase的配置目錄下

ln -s /usr/local/hadoop-3.2.1/etc/hadoop/hdfs-site.xml /usr/local/hbase-2.2.5/conf/
ln -s /usr/local/hadoop-3.2.1/etc/hadoop/core-site.xml /usr/local/hbase-2.2.5/conf/
           

在hdfs上建立hbase的目錄,并賦予權限

sudo -uhdfs /usr/local/hadoop-3.2.1/bin/hdfs dfs -mkdir /hbase 
sudo -uhdfs /usr/local/hadoop-3.2.1/bin/hdfs dfs -chown hbase /hbase #修改屬主
           

啟動,隻要在主master上啟動這個腳本,主master會通過ssh啟動其他元件

sudo -uhbase /usr/local/hbase-2.2.5/bin/start-hbase.sh
           

16010端口打開web頁面

Centos7下為Open-falcon部署OpenTsdb一、安裝Zookeeper二、安裝HDFS三、安裝hbase四、OpenTSDB安裝五、連接配接Open-falcon

測試一下備用master節點,關閉主節點

sudo -uhbase /usr/local/hbase-2.2.5/bin/hbase-daemon.sh stop master
           

檢視備節點16010端口的頁面,和上面的圖一緻,regionserver都正确,那就可以了

四、OpenTSDB安裝

終于來到了最後一步

下載下傳opentsdb的rpm包,我用的是2.3.2

https://github.com/OpenTSDB/opentsdb/releases/download/v2.3.2/opentsdb-2.3.2.noarch.rpm

在hbase上建立opentsdb需要的表,去https://github.com/OpenTSDB/opentsdb/blob/master/src/create_table.sh下載下傳這個腳本,放到hbase機器上

export HBASE_HOME=/usr/local/hbase-2.2.5
export COMPRESSION=NONE
./create_table.sh 
           

安裝依賴

yum install -y gnuplot
           

安裝rpm包

rpm -ivh opentsdb-2.3.2.noarch.rpm
           

修改配置檔案/etc/opentsdb/opentsdb.conf

tsd.storage.hbase.zk_quorum設定為zk的位址,用逗号分隔

tsd.core.auto_create_metrics設定為true,這一點很重要,不然open-falcon發送來的資料不會自動建立名額,錄不進去

增加使用者opentsdb

useradd -m opentsdb
           

修改啟動腳本/etc/init.d/opentsdb裡面的使用者,還可以修改日志目錄、配置目錄等

# Default program options
NAME=opentsdb
PROG=/usr/bin/tsdb
HOSTNAME=$(hostname --fqdn)
USER=opentsdb
           

 啟動

service opentsdb start
           

4242端口檢視web頁面

Centos7下為Open-falcon部署OpenTsdb一、安裝Zookeeper二、安裝HDFS三、安裝hbase四、OpenTSDB安裝五、連接配接Open-falcon

五、連接配接Open-falcon

這一步很簡單了,open-falcon transfer配置改一改,重新開機transfer即可

"tsdb": {
        "enabled": true,
        "batch": 200,
        "connTimeout": 1000,
        "callTimeout": 5000,
        "maxConns": 32,
        "maxIdle": 32,
        "retry": 3,
        "address": "IP:4242"
    }
           

等一會兒,在opentsdb頁面上就可以檢視到open-falcon的監控資料了

Centos7下為Open-falcon部署OpenTsdb一、安裝Zookeeper二、安裝HDFS三、安裝hbase四、OpenTSDB安裝五、連接配接Open-falcon

繼續閱讀