一邊安裝一邊寫,寫得略亂
安裝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目錄下有三個配置檔案
![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLicmbw5CM3UjMzETM4EjNwAjMwIzLc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
修改log4j.properties裡的zookeeper.log.dir,修改日志目錄
zoo_sample.cfg是一個預設的zoo.cfg配置,這個是zookeeper的主要配置檔案,複制一份
cp zoo_sample.cfg zoo.cfg
修改資料檔案目錄dataDir,端口按需修改
配置叢集,把叢集中所有節點寫上,2888是zk節點通信端口,3888是zk選舉端口
然後就可以推送到各個節點的安裝目錄下,我是放到了/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
修改了一下這個腳本,把啟動指令的nohup去掉看看輸出
報了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變量
重新開機就可以了
二、安裝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檔案夾
把第一台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的日志,出現下面字樣就是成功了
現在,要把第一台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日志出現下面字樣證明成功
現在關掉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頁面
測試一下備用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頁面
五、連接配接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的監控資料了