以容器部署Ganglia并监控Hadoop集群

2024-01-13 20:48

本文主要是介绍以容器部署Ganglia并监控Hadoop集群,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

网上有很多Ganglia部署的教程,每一个我都觉得繁琐,我的目的只是用来监控Hadoop测试集群,能即刻使用才是王道,于是我想到通过Rancher部署Ganglia应用服务(类似于我在上一篇文章中部署Jmeter容器集群的方式),以容器的方式一键部署,省去了中间繁琐的安装过程。

第一步:安装部署Docker

1、对于CantOS安装Docker最好是CentOS7,这样可以保证内核至少是3.10(通过uname -r 命令查看),低于这个版本的内核无法安装Docker。
2、使用 root 权限登录 Centos。确保 yum 包更新到最新(sudo yum update)。
3、卸载旧版本(如果安装过旧版本的话)
sudo yum remove docker  docker-common docker-selinux docker-engine
4、安装需要的软件包, yum-util 提供yum-config-manager功能,另外两个是devicemapper驱动依赖的
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
5、设置yum源
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo  
6、直接安装最新版的docker(记住版本宁可最新,也不要低于Rancher所要求的版本)
sudo yum install docker-ce
7、启动并加入开机启动
sudo systemctl start docker
sudo systemctl enable docker

第二步:部署安装Rancher

        Rancher最好部署在独立的机器上,毕竟是Docker管理平台,需要有足够的资源和空间,由于我的另一篇文章《搭建Jmeter容器集群平台》已经介绍了Rancher的部署,在这里我就不多写了,而且我用的就是当初部署好的Rancher。

第三步:添加主机

        在Rancher->基础架构->主机->添加主机(Custer),直接将页面上的脚本,复制到Ganglia对应的主机(Linux)上运行,举例如下(确保没有防火墙封禁端口):

sudo docker run --rm --privileged -v /var/run/docker.sock:/var/run/docker.sock -v /var/lib/rancher:/var/lib/rancher rancher/agent:v1.2.10 http://172.16.1.30:8080/v1/scripts/5F5DD52AF831DB9BB4AF:1514678400000:JTVmpDRKXUlm1TtU93FgwforgIA

第四步:添加Ganglia容器

        先用docker search ganglia命令搜索一下公共库里有哪些可用的ganglia镜像:

        我们就用搜索到的第一个镜像就行,安装的方式有两种,一种是直接在主机管理界面上添加容器,如下:

        主要是选择要下载调用的镜像,映射的端口,调度规则(设置需要在哪台主机上部署容器,如果不设置的话,就按Rancher的规则从多台主机中挑一台)

        另一种方式是我推荐的,就是通过docker-compose配置文件安装,而且是以应用服务的方式对外提供服务:

1、用编辑器编写如下docker-compose.yml:

version: '2'
services:ganglia:image: wookietreiber/gangliastdin_open: truetty: trueports:- 8649:8649/tcp- 8651:8651/tcp- 8652:8652/tcp- 8661:8661/tcp- 2003:2003/tcp- 80:80/tcp- 6343:6343/udplabels:io.rancher.container.pull_image: alwaysio.rancher.scheduler.affinity:host_label: host.ip=172.17.2.130

和rancher-compose.yml:

version: '2'
services:ganglia:scale: 1start_on_create: true

2、在Rancher的应用->用户->添加应用:输入应用名,选择docker-compose.yml和rancher-compose.yml。

        点击【创建】按钮,就能成功创建应用和容器服务。通过http://172.17.2.130/ganglia/就能够直接访问了ganglia了

 

        由于这个镜像安装的ganglia是默认的组播模式(不需要固定的Server IP,比较方便),所以我们以下的监控配置就按组播模式进行配置。

第五步:在hadoop集群节点机器上部署监控代理gmond

yum -y install epel-release
yum -y install ganglia-gmond

        由于用组播模式,并较省事,什么配置都不用改,为了能让hadoop集群能标识出来,我们改一下cluster name

        vi /etc/ganglia/gmond.conf

cluster {
  name = "hadoop"
  owner = "unspecified"
  latlong = "unspecified"
  url = "unspecified"

}

        三个hadoop节点(无论主从)全是按这么操作。然后启动各节点的gmood:

systemctl start gmond.service  (如果是centos6.5,用service gmond start启动)
systemctl enable gmond.service

        由于ganglia容器部署完后,上面自带有gmond节点,为了跟hadoop集群的gmond以示区别,我们进入ganglia容器下,把gmond.conf配置改掉:

        vi /etc/ganglia/gmond.conf,按如下把原来的8649端口改成8661(就是为了跟hadoop节点监控端口区别开,当然也可以选择不改,改也是为了验证一下自定义端口)

第六步:修改ganglia中的gmetad

        gmetad会定期检查gmond,从那里拉取数据,并将他们的指标存储在RRD存储引擎中。也可以查询多个集群并聚合指标。所以配好它,才能收集各个节点的监控数据。

        进入ganglia容器中,vi /etc/ganglia/gmetad.conf

        由于是组播模式,什么都不用动了,主需要修改一下data_source参数如下:

data_source "my cluster" localhost:8661
data_source "hadoop" 10 172.17.2.171:8649 172.17.2.186:8649 172.17.2.187:8649

        以上的修改目的是,上一步涉及到localhost的监控端口变了,所以要加上8661,hadoop是我们新加的监控集群,所以添加一个data_source,每10秒轮询一次,其中监控端口8649是默认的,可以不写。

        这样我们就可以重启ganglia容器,然后再回到http://172.17.2.130/ganglia/,就能看到新加入的节点和集群了:

第七步:修改hadoop配置

        前面说了那么多,其实都是为了这一步准备,我们要监控hadoop,就必须让hadoop各节点的ganglia metrics接口开放,通过修改hadoop配置文件目录下的hadoop-metrics2.properties:

namenode.sink.ganglia.servers=239.2.11.71:8649
datanode.sink.ganglia.servers=239.2.11.71:8649
jobtracker.sink.ganglia.servers=239.2.11.71:8649
tasktracker.sink.ganglia.servers=239.2.11.71:8649
maptask.sink.ganglia.servers=239.2.11.71:8649
reducetask.sink.ganglia.servers=239.2.11.71:8649

resourcemanager.sink.ganglia.servers=239.2.11.71:8649
nodemanager.sink.ganglia.servers=239.2.11.71:8649
historyserver.sink.ganglia.servers=239.2.11.71:8649
journalnode.sink.ganglia.servers=239.2.11.71:8649
nimbus.sink.ganglia.servers=239.2.11.71:8649
supervisor.sink.ganglia.servers=239.2.11.71:8649

        以上标粗部分是通用配置的(其它是在Ambari下的HDP集群建议加配的),另外由于是组播模式,IP需要设置成239.2.11.71(这个IP就能互相找到各个监控与被监控节点,如果不放心,可以在各个节点上添加路由到组播地址ip route add 239.2.11.71 dev eth0)。

        另外如果是用Ambari管理的hadoop集群,修改hadoop-metrics2.properties是需要在Ambari管理界面上进行的,通过HDFS的Configs->Advanced完成配置,需要注意的是Ambari本身有一套监控接口(用的是metric_collector,默认是开启的),如果我们要同时用ganglia监控,就要求把ganglia.servers参数的注释去掉,替换servers ip为239.2.11.71,同时ganglia_server应该为允许,可以直接将{% if has_ganglia_server %}和对应的{% endif %}去掉,最终配置为:

#  if has_ganglia_server 
*.period=60*.sink.ganglia.class=org.apache.hadoop.metrics2.sink.ganglia.GangliaSink31
*.sink.ganglia.period=10# default for supportsparse is false
*.sink.ganglia.supportsparse=true.sink.ganglia.slope=jvm.metrics.gcCount=zero,jvm.metrics.memHeapUsedM=both
.sink.ganglia.dmax=jvm.metrics.threadsBlocked=70,jvm.metrics.memHeapUsedM=40# Hook up to the server
namenode.sink.ganglia.servers=239.2.11.71:8649
datanode.sink.ganglia.servers=239.2.11.71:8649
jobtracker.sink.ganglia.servers=239.2.11.71:8649
tasktracker.sink.ganglia.servers=239.2.11.71:8649
maptask.sink.ganglia.servers=239.2.11.71:8649
reducetask.sink.ganglia.servers=239.2.11.71:8649
resourcemanager.sink.ganglia.servers=239.2.11.71:8649
nodemanager.sink.ganglia.servers=239.2.11.71:8649
historyserver.sink.ganglia.servers=239.2.11.71:8649
journalnode.sink.ganglia.servers=239.2.11.71:8649
nimbus.sink.ganglia.servers=239.2.11.71:8649
supervisor.sink.ganglia.servers=239.2.11.71:8649resourcemanager.sink.ganglia.tagsForPrefix.yarn=Queue# endif 

        保存修改的配置,重启hadoop集群服务。然后不出意外就能看到hadoop的监控指标(如果不行,可以把主从节点和ganglia容器都重启一遍):

最后一步:验证监控结果

        最后我们就可以享受监管结果了,不只是能监控hadoop集群的资源使用情况(CPU、内存、磁盘负载、网络负载),还能看到以下的hadoop JvmMetrics监控指标,基本是全面监控。

        其实监控方式和原理都与Ambari自带的监控框架一样,所以ganglia是用来满足对传统hadoop集群或其它集群服务器的监控,至于用Ambari或Cloudera Manager部署及管理的Hadoop集群,用管理平台自带的监控框架就行了。但是本文的目的不只是为了说明如何快速构建和应用ganglia监控,而是更想表达容器化是非常有助于我们快速构建测试环境和性能监控环境,这对于性能测试来讲非常重要,特别是我们面对大量云端化或集群化服务的测试。

这篇关于以容器部署Ganglia并监控Hadoop集群的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/602734

相关文章

闲置电脑也能活出第二春?鲁大师AiNAS让你动动手指就能轻松部署

对于大多数人而言,在这个“数据爆炸”的时代或多或少都遇到过存储告急的情况,这使得“存储焦虑”不再是个别现象,而将会是随着软件的不断臃肿而越来越普遍的情况。从不少手机厂商都开始将存储上限提升至1TB可以见得,我们似乎正处在互联网信息飞速增长的阶段,对于存储的需求也将会不断扩大。对于苹果用户而言,这一问题愈发严峻,毕竟512GB和1TB版本的iPhone可不是人人都消费得起的,因此成熟的外置存储方案开

流媒体平台/视频监控/安防视频汇聚EasyCVR播放暂停后视频画面黑屏是什么原因?

视频智能分析/视频监控/安防监控综合管理系统EasyCVR视频汇聚融合平台,是TSINGSEE青犀视频垂直深耕音视频流媒体技术、AI智能技术领域的杰出成果。该平台以其强大的视频处理、汇聚与融合能力,在构建全栈视频监控系统中展现出了独特的优势。视频监控管理系统EasyCVR平台内置了强大的视频解码、转码、压缩等技术,能够处理多种视频流格式,并以多种格式(RTMP、RTSP、HTTP-FLV、WebS

服务器集群同步时间手记

1.时间服务器配置(必须root用户) (1)检查ntp是否安装 [root@node1 桌面]# rpm -qa|grep ntpntp-4.2.6p5-10.el6.centos.x86_64fontpackages-filesystem-1.41-1.1.el6.noarchntpdate-4.2.6p5-10.el6.centos.x86_64 (2)修改ntp配置文件 [r

Hadoop企业开发案例调优场景

需求 (1)需求:从1G数据中,统计每个单词出现次数。服务器3台,每台配置4G内存,4核CPU,4线程。 (2)需求分析: 1G / 128m = 8个MapTask;1个ReduceTask;1个mrAppMaster 平均每个节点运行10个 / 3台 ≈ 3个任务(4    3    3) HDFS参数调优 (1)修改:hadoop-env.sh export HDFS_NAMENOD

HDFS—集群扩容及缩容

白名单:表示在白名单的主机IP地址可以,用来存储数据。 配置白名单步骤如下: 1)在NameNode节点的/opt/module/hadoop-3.1.4/etc/hadoop目录下分别创建whitelist 和blacklist文件 (1)创建白名单 [lytfly@hadoop102 hadoop]$ vim whitelist 在whitelist中添加如下主机名称,假如集群正常工作的节

Hadoop集群数据均衡之磁盘间数据均衡

生产环境,由于硬盘空间不足,往往需要增加一块硬盘。刚加载的硬盘没有数据时,可以执行磁盘数据均衡命令。(Hadoop3.x新特性) plan后面带的节点的名字必须是已经存在的,并且是需要均衡的节点。 如果节点不存在,会报如下错误: 如果节点只有一个硬盘的话,不会创建均衡计划: (1)生成均衡计划 hdfs diskbalancer -plan hadoop102 (2)执行均衡计划 hd

hadoop开启回收站配置

开启回收站功能,可以将删除的文件在不超时的情况下,恢复原数据,起到防止误删除、备份等作用。 开启回收站功能参数说明 (1)默认值fs.trash.interval = 0,0表示禁用回收站;其他值表示设置文件的存活时间。 (2)默认值fs.trash.checkpoint.interval = 0,检查回收站的间隔时间。如果该值为0,则该值设置和fs.trash.interval的参数值相等。

Hadoop数据压缩使用介绍

一、压缩原则 (1)运算密集型的Job,少用压缩 (2)IO密集型的Job,多用压缩 二、压缩算法比较 三、压缩位置选择 四、压缩参数配置 1)为了支持多种压缩/解压缩算法,Hadoop引入了编码/解码器 2)要在Hadoop中启用压缩,可以配置如下参数

综合安防管理平台LntonAIServer视频监控汇聚抖动检测算法优势

LntonAIServer视频质量诊断功能中的抖动检测是一个专门针对视频稳定性进行分析的功能。抖动通常是指视频帧之间的不必要运动,这种运动可能是由于摄像机的移动、传输中的错误或编解码问题导致的。抖动检测对于确保视频内容的平滑性和观看体验至关重要。 优势 1. 提高图像质量 - 清晰度提升:减少抖动,提高图像的清晰度和细节表现力,使得监控画面更加真实可信。 - 细节增强:在低光条件下,抖

阿里开源语音识别SenseVoiceWindows环境部署

SenseVoice介绍 SenseVoice 专注于高精度多语言语音识别、情感辨识和音频事件检测多语言识别: 采用超过 40 万小时数据训练,支持超过 50 种语言,识别效果上优于 Whisper 模型。富文本识别:具备优秀的情感识别,能够在测试数据上达到和超过目前最佳情感识别模型的效果。支持声音事件检测能力,支持音乐、掌声、笑声、哭声、咳嗽、喷嚏等多种常见人机交互事件进行检测。高效推