栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

docker部署hadoop监控prometheus

docker部署hadoop监控prometheus

hadoop是通过docker部署的  ,在docker中添加监控端口和监控进程

vi namenode.yaml

startDelaySeconds: 0
hostPort: localhost:1234  #1234为想设置的jmx端口(可设置为未被占用的端口)
ssl: false
lowercaseOutputName: false
lowercaseOutputLabelNames: false

vi datanode.yaml

startDelaySeconds: 0
hostPort: localhost:1235  #1235为想设置的jmx端口(可设置为未被占用的端口)
ssl: false
lowercaseOutputName: false
lowercaseOutputLabelNames: false

进入到hadoop节点容器中去

docker exec -ti hadoopnode1 bash
cd /usr/local
mkdir prometheus_jmx_export_0.3.1

将以上的jar、namenode.yml、datanode.yaml拷贝到hadoop容器 /usr/local/prometheus_jmx_export_0.3.1 目录下

docker cp namenode.yaml hadoopnode1:/usr/local/prometheus_jmx_export_0.3.1
docker cp datanode.yaml hadoopnode1:/usr/local/prometheus_jmx_export_0.3.1
docker cp jmx_prometheus_javaagent-0.3.1.jar hadoopnode1:/usr/local/prometheus_jmx_export_0.3.1

编辑修改hadoop-env.sh

vi /usr/local/hadoop/etc/hadoop/hadoop-env.sh
9222是暴露的namenode的监控日志采集
9322是暴露的datanode的监控日志采集

export HADOOP_NAMENODE_JMX_OPTS="-Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.local.only=false   -Dcom.sun.management.jmxremote.port=1234 -javaagent:/usr/local/prometheus_jmx_export_0.3.1/jmx_prometheus_javaagent-0.3.1.jar=9222:/usr/local/prometheus_jmx_export_0.3.1/namenode.yaml"

export HADOOP_DATANODE_JMX_OPTS="-Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.local.only=false   -Dcom.sun.management.jmxremote.port=1235 -javaagent:/usr/local/prometheus_jmx_export_0.3.1/jmx_prometheus_javaagent-0.3.1.jar=9322:/usr/local/prometheus_jmx_export_0.3.1/datanode.yaml"

修改hdfs启动参数

vi /usr/local/hadoop/bin/hdfs
在namenode添加如下参数

  CLASS='org.apache.hadoop.hdfs.server.namenode.NameNode'
  HADOOP_OPTS="$HADOOP_OPTS $HADOOP_NAMENODE_JMX_OPTS $HADOOP_NAMENODE_OPTS"

在datanode添加如下参数

  CLASS='org.apache.hadoop.hdfs.server.datanode.DataNode'
  HADOOP_OPTS="$HADOOP_OPTS $HADOOP_DATANODE_JMX_OPTS"

namenode如下

datanode如下

重启hdfs

cd /usr/local/hadoop/sbin
./stop-dfs.sh
./start-dfs.sh
jps 结果如下

4241 HistoryServer
10481 JournalNode
6965 NodeManager
40 QuorumPeerMain
10763 DFSZKFailoverController
4076 Worker
3887 Master
6783 ResourceManager
9919 NameNode
10111 DataNode
10943 Jps

访问curl http://localhost:9222/metrics  和curl http://localhost:9322/metrics 

或者curl http://hadoopnode1:9222/metrics 和 curl http://hadoopnode1:9322/metrics

前者是namenode的监控后者是datanode的监控

能访问出数据,表明是安装好了

docker部署hadoop重新构建镜像

由于我是通过docker部署的(镜像是自己搭建好的专有镜像),所以还需要把端口映射放开出来,通过docker-compose重新启动

docker-compose文件如下

然后删除镜像重新构建

1033  docker-compose stop hadoopnode1
1034  docker rm hadoopnode1
1035  docker-compose up -d hadoopnode1

启动hdfs

进入hadoop容器
docker exec -it hadoopnode1 /bin/bash
cd /usr/local/zookeeper-3.5.9
启动zookeeper
bin/zkServer.sh start
每个节点执行 bin/zkServer.sh status 查看状态,会显示Mode: follower、Mode: leader
启动hdfs
hdfs --daemon start journalnode
cd /usr/local/hadoop/sbin
./start-dfs.sh

注意一点,重新构建当前节点容器时,需要进入到容器中格式化一下namenode才能起来

hdfs namenode -format
hdfs --daemon start namenode
到其他几台同步数据到这一台(现网操作时,最好停止flume,避免在操作过程中向hdfs写入数据,导致数据不一致问题,这样子就不用同步数据这一步操作了)
hdfs namenode -bootstrapStandby

下一步就是将重新构建镜像之前的添加监控操作重新走一遍

访问curl http://localhost:19222/metrics  和curl http://localhost:19322/metrics 

接下来就是常规操作,把这个地址配置到监控容器 prometheus.yml中

然后重启prometheus容器即可(这个操作不在这里详细描述了,涉及到监控相关的配置,可以查看我)

docker restart prometheus

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/303363.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号