Centos7下为Open-falcon部署OpenTsdb

一边安装一边写,写得略乱

安装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目录下有三个配置文件

修改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

三、安装hbase

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

修改conf/hbase-site.xml

<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<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的监控数据了

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值