阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

Ganglia环境搭建并监控Hadoop分布式集群

180次阅读
没有评论

共计 11036 个字符,预计需要花费 28 分钟才能阅读完成。

简介

Ganglia 可以监控分布式集群中硬件资源的使用情况,例如 CPU,内存,网络等资源。通过 Ganglia 可以监控 Hadoop 集群在运行过程中对集群资源的调度,作为简单地运维参考。

环境搭建流程

1、我们先在主机 master01 上面搭建好 Ganglia 环境

2、在 master01 主机上解压 JDK 和 Hadoop 到安装目录、修改配置文件

3、克隆出两台主机 slave01,slave02 并修改主机名和 IP 主机名映射、做免密码登录

4、启动 Ganglia 和 Hadoop 集群、实现 wordcount 实例

关闭防火墙和 Selinux

关闭防火墙和 Selinux 是因为这两者会对 Ganglia 和 Hadoop 环境搭建造成影响,比如防火墙会导致集群间一些通信问题。

关闭防火墙

临时和永久关闭防火墙

临时:

service iptables stop

永久:

chkconfig iptables off

Ganglia 环境搭建并监控 Hadoop 分布式集群

关闭 Selinux

vi /etc/sysconfig/selinux

修改内容如下:

Ganglia 环境搭建并监控 Hadoop 分布式集群

使配置生效:

setenforce 0 

Ganglia 单机环境搭建

Ganglia 简介

Ganglia 是 UC Berkeley 发起的一个开源监视项目,设计用于测量数以千计的节点。每台计算机都运行一个收集和发送度量数据(如处理器速度、内存使用量等)的名为 gmond 的守护进程。它将从操作系统和指定主机中收集。接收所有度量数据的主机可以显示这些数据并且可以将这些数据的精简表单传递到层次结构中。正因为有这种层次结构模式,才使得 Ganglia 可以实现良好的扩展。gmond 带来的系统负载非常少,这使得它成为在集群中各台计算机上运行的一段代码,而不会影响用户性能。

一、Ganglia 组件

Ganglia 监控套件包括三个主要部分:gmond,gmetad,和网页接口,通常被称为 ganglia-web。

Gmond : 是一个守护进程,他运行在每一个需要监测的节点上,收集监测统计,发送和接受在同一个组播或单播通道上的统计信息 如果他是一个发送者 (mute=no) 他会收集基本指标,比如系统负载(load_one),CPU 利用率。他同时也会发送用户通过添加 C /Python 模块来自定义的指标。如果他是一个接收者(deaf=no)他会聚合所有从别的主机上发来的指标,并把它们都保存在内存缓冲区中。

Gmetad: 也是一个守护进程,他定期检查 gmonds,从那里拉取数据,并将他们的指标存储在 RRD 存储引擎中。他可以查询多个集群并聚合指标。他也被用于生成用户界面的 web 前端。

Ganglia-web : 顾名思义,他应该安装在有 gmetad 运行的机器上,以便读取 RRD 文件。集群是主机和度量数据的逻辑分组,比如数据库服务器,网页服务器,生产,测试,QA 等,他们都是完全分开的,你需要为每个集群运行单独的 gmond 实例。

一般来说集群中每个节点需要一个接收的 gmond,每个网站需要一个 gmetad。

二、安装依赖

注:建议使用超级用户安装

yum install –y gcc gcc-c++ libpng freetype zlib libdbi apr* libxml2-devel pkg-config glib pixman pango pango-devel freetye-devel fontconfig cairo cairo-devel libart_lgpl libart_lgpl-devel pcre* rrdtool*

Ganglia 环境搭建并监控 Hadoop 分布式集群

Ganglia 环境搭建并监控 Hadoop 分布式集群

三、安装 expat 依赖

    cd /root
    wget http://jaist.dl.sourceforge.net/project/expat/expat/2.1.0/expat-2.1.0.tar.gz
    tar -xf expat-2.1.0.tar.gz && cd expat-2.1.0 && ./configure –prefix=/usr/local/expat && make && make install && cd ..

Ganglia 环境搭建并监控 Hadoop 分布式集群

四、安装 confuse

    wget http://ftp.twaren.net/Unix/NonGNU//confuse/confuse-2.7.tar.gz
tar -xf confuse-2.7.tar.gz && cd confuse-2.7 && ./configure CFLAGS=-fPIC –disable-nls –prefix=/usr/local/confuse && make && make install && cd ..

Ganglia 环境搭建并监控 Hadoop 分布式集群

64bit 机器需要拷贝动态链接库:

mkdir -p /usr/local/confuse/lib64 && cp -a -f /usr/local/confuse/lib/* /usr/local/confuse/lib64/

更多详情见请继续阅读下一页的精彩内容:http://www.linuxidc.com/Linux/2017-03/141652p2.htm

五、安装 ganglia

    wget http://jaist.dl.sourceforge.net/project/ganglia/ganglia%20monitoring%20core/3.6.0/ganglia-3.6.0.tar.gz
    tar -xf ganglia-3.6.0.tar.gz && cd ganglia-3.6.0 && ./configure –with-gmetad –enable-gexec –with-libconfuse=/usr/local/confuse –with-libexpat=/usr/local/expat –prefix=/usr/local/ganglia –sysconfdir=/etc/ganglia && make && make install && cd ..

Ganglia 环境搭建并监控 Hadoop 分布式集群

六、服务端配置

创建 rrdtool 数据目录,看 $ganglia-3.2.0/web/conf.PHP 里面的 gmetad_root 变量,并根据 apache 的运行用户创建权限,例如 apache 运行于 apache 用户上。

mkdir -p /var/lib/ganglia/rrds && mkdir -p /var/lib/ganglia/dwoo && chown -R root:root /var/lib/ganglia

配置一个数据源,修改 /etc/ganglia/gmetad.conf 文件,同时将运行用户设置为 rrdtool 的目录权限用户,例如 apache 用户

data_source “Hadoop” 192.168.1.108:8649 

setuid_username “root”

说明:这里的 ” hadoop ” 表示的是集群的名称,后面的内容是这个集群中所包含的主机信息,也就是要监控的主机 ip。

添加自启动脚本

cp -f ganglia-3.6.0/gmetad/gmetad.init /etc/init.d/gmetad && cp -f /usr/local/ganglia/sbin/gmetad /usr/sbin/gmetad && chkconfig –add gmetad

启动 gmetad 服务

service gmetad start

看见 Starting GANGLIA gmetad: [OK]就代表运行正常了。通过 telnet localhost 8651 验证 gmetad 是否正常。

简介

Ganglia 可以监控分布式集群中硬件资源的使用情况,例如 CPU,内存,网络等资源。通过 Ganglia 可以监控 Hadoop 集群在运行过程中对集群资源的调度,作为简单地运维参考。

环境搭建流程

1、我们先在主机 master01 上面搭建好 Ganglia 环境

2、在 master01 主机上解压 JDK 和 Hadoop 到安装目录、修改配置文件

3、克隆出两台主机 slave01,slave02 并修改主机名和 IP 主机名映射、做免密码登录

4、启动 Ganglia 和 Hadoop 集群、实现 wordcount 实例

关闭防火墙和 Selinux

关闭防火墙和 Selinux 是因为这两者会对 Ganglia 和 Hadoop 环境搭建造成影响,比如防火墙会导致集群间一些通信问题。

关闭防火墙

临时和永久关闭防火墙

临时:

service iptables stop

永久:

chkconfig iptables off

Ganglia 环境搭建并监控 Hadoop 分布式集群

关闭 Selinux

vi /etc/sysconfig/selinux

修改内容如下:

Ganglia 环境搭建并监控 Hadoop 分布式集群

使配置生效:

setenforce 0 

Ganglia 单机环境搭建

Ganglia 简介

Ganglia 是 UC Berkeley 发起的一个开源监视项目,设计用于测量数以千计的节点。每台计算机都运行一个收集和发送度量数据(如处理器速度、内存使用量等)的名为 gmond 的守护进程。它将从操作系统和指定主机中收集。接收所有度量数据的主机可以显示这些数据并且可以将这些数据的精简表单传递到层次结构中。正因为有这种层次结构模式,才使得 Ganglia 可以实现良好的扩展。gmond 带来的系统负载非常少,这使得它成为在集群中各台计算机上运行的一段代码,而不会影响用户性能。

一、Ganglia 组件

Ganglia 监控套件包括三个主要部分:gmond,gmetad,和网页接口,通常被称为 ganglia-web。

Gmond : 是一个守护进程,他运行在每一个需要监测的节点上,收集监测统计,发送和接受在同一个组播或单播通道上的统计信息 如果他是一个发送者 (mute=no) 他会收集基本指标,比如系统负载(load_one),CPU 利用率。他同时也会发送用户通过添加 C /Python 模块来自定义的指标。如果他是一个接收者(deaf=no)他会聚合所有从别的主机上发来的指标,并把它们都保存在内存缓冲区中。

Gmetad: 也是一个守护进程,他定期检查 gmonds,从那里拉取数据,并将他们的指标存储在 RRD 存储引擎中。他可以查询多个集群并聚合指标。他也被用于生成用户界面的 web 前端。

Ganglia-web : 顾名思义,他应该安装在有 gmetad 运行的机器上,以便读取 RRD 文件。集群是主机和度量数据的逻辑分组,比如数据库服务器,网页服务器,生产,测试,QA 等,他们都是完全分开的,你需要为每个集群运行单独的 gmond 实例。

一般来说集群中每个节点需要一个接收的 gmond,每个网站需要一个 gmetad。

二、安装依赖

注:建议使用超级用户安装

yum install –y gcc gcc-c++ libpng freetype zlib libdbi apr* libxml2-devel pkg-config glib pixman pango pango-devel freetye-devel fontconfig cairo cairo-devel libart_lgpl libart_lgpl-devel pcre* rrdtool*

Ganglia 环境搭建并监控 Hadoop 分布式集群

Ganglia 环境搭建并监控 Hadoop 分布式集群

三、安装 expat 依赖

    cd /root
    wget http://jaist.dl.sourceforge.net/project/expat/expat/2.1.0/expat-2.1.0.tar.gz
    tar -xf expat-2.1.0.tar.gz && cd expat-2.1.0 && ./configure –prefix=/usr/local/expat && make && make install && cd ..

Ganglia 环境搭建并监控 Hadoop 分布式集群

四、安装 confuse

    wget http://ftp.twaren.net/Unix/NonGNU//confuse/confuse-2.7.tar.gz
tar -xf confuse-2.7.tar.gz && cd confuse-2.7 && ./configure CFLAGS=-fPIC –disable-nls –prefix=/usr/local/confuse && make && make install && cd ..

Ganglia 环境搭建并监控 Hadoop 分布式集群

64bit 机器需要拷贝动态链接库:

mkdir -p /usr/local/confuse/lib64 && cp -a -f /usr/local/confuse/lib/* /usr/local/confuse/lib64/

更多详情见请继续阅读下一页的精彩内容:http://www.linuxidc.com/Linux/2017-03/141652p2.htm

七、客户端配置(gmond 节点)

本机安装如下:

cp -f ganglia-3.6.0/gmond/gmond.init /etc/init.d/gmond && cp -f /usr/local/ganglia/sbin/gmond /usr/sbin/gmond && chkconfig –add gmond && gmond –default_config > /etc/ganglia/gmond.conf

对于生成的默认配置文件 /etc/ganglia/gmond.conf 需要做适当的修改

globals {
  user = root /* 运行 Ganglia 的用户 */
  host_dmax = 120 /*secs */
  send_metadata_interval = 15 /* 发送数据的时间间隔 */
}
 
cluster {
  name = “Hadoop” /* 集群名称 */
  owner = “root” /* 运行 Ganglia 的用户 */
}
 
udp_send_channel {
    # mcast_join = 239.2.11.71 /* 注释掉组播 */
  host = 192.168.1.108/* 发送给安装 gmetad 的机器 */
}
 
udp_recv_channel {#接受 UDP 包配置
  # mcast_join = 239.2.11.71
  # bind = 239.2.11.71
}

其中 name 是将要在服务端进行的分组,是服务端的数据源。接下来开启服务

service gmond start

看见 Starting GANGLIA gmetad: [OK]代表启动成功。如果有失败,可以讲 gmond.conf 中的 debug 从 0 改为 100,看更多的日志,然后进行排查。

Ganglia 环境搭建并监控 Hadoop 分布式集群

八、服务端的 WEB 配置

PHP 程序需要依赖 Apache 来运行,因此需要安装如下依赖

yum -y install php httpd 

service httpd start // 启动 httpd 服务

九、测试安装是否成功

vi /var/www/html/index.php

输入:

<?php phpinfo();?>

保存,然后浏览器 localhost/index.php

正常是看到 php 的信息。

Ganglia 环境搭建并监控 Hadoop 分布式集群

    cd /root
    wget http://jaist.dl.sourceforge.net/project/ganglia/ganglia-web/3.5.10/ganglia-web-3.5.10.tar.gz
tar -xf ganglia-web-3.5.10.tar.gz && cd ganglia-web-3.5.10 && make install && cd ..

这样 在 /var/www/html/ 下 生成了 ganglia 目录

注(可能出现的问题):

Ganglia 访问失败:

There was an error collecting ganglia data (127.0.0.1:8652): fsockopen error: Permission denied

解决:

需要关闭 selinux:vi /etc/selinux/config,把 SELINUX=enforcing 改成 SELINUX=disabled;需要重启机器。

可以使用命令 setenforce 0 来关闭 selinux 而不需要重启,刷新页面,即可访问。但此方法只是一权宜之计。要想永久修改 selinux 设置,还是要使用第一种方法。

重启 httpd 服务器即可看到效果

    service httpd restart

Ganglia 环境搭建并监控 Hadoop 分布式集群

使用 http://master/ganglia 查看对应的 ganglia 信息。(注:master 为运行 gmetad 的主机的 hostname)

Ganglia 集群配置

免密码登录

单机配置好后,现在来配置集群的:

把刚才配置的那台 VMware 中的虚拟机,使用克隆功能,克隆出两台,然后:

vi /etc/sysconfig/network  #修改主机名 

vi /etc/hosts      #修改主机名和 IP 映射

三台主机 IP、主机名、角色对应关系:

Ganglia 环境搭建并监控 Hadoop 分布式集群

在每台主机中敲入如下命令,然后一直回车确认就可以了,如果是 root 用户,会在 /root/.ssh 目录下生成密钥文件。

ssh-keygen -t rsa

Ganglia 环境搭建并监控 Hadoop 分布式集群

拷贝 slave01 上公钥到 master01 上面(slave02 也需要)

Ganglia 环境搭建并监控 Hadoop 分布式集群

然后通过命令拷贝三台主机公钥到 authorized_keys 文件

在 master01 主机上 /root/.ssh 目录下,slave01 和 slave02 中 id_rsa.pub 也拷贝到这个目录, 并且名称分别为 slave01,slave02

cat id_rsa.pub >> authorized_keys 

cat slave01 >> authorized_keys 

cat slave02 >> authorized_keys

Ganglia 环境搭建并监控 Hadoop 分布式集群

这时我们就可以免密码登录了

Ganglia 环境搭建并监控 Hadoop 分布式集群

配置并开启 Ganglia 集群

永久关闭 slave01,slave02 上面的 Ganglia 服务端 gmetad

Ganglia 环境搭建并监控 Hadoop 分布式集群

查看 Ganglia 服务端 gmetad 和客户端 gmond 是否都开启

Ganglia 环境搭建并监控 Hadoop 分布式集群

开启 Apache 的 httpd 服务

Ganglia 环境搭建并监控 Hadoop 分布式集群

Ganglia 监控图示:

Ganglia 环境搭建并监控 Hadoop 分布式集群

Hadoop 环境软件准备

首先需要将 JDK 以及 Hadoop 软件解压到需要安装的目录

安装 JDK

配置 Java 到环境变量

Ganglia 环境搭建并监控 Hadoop 分布式集群

验证 Java 环境是否安装好

Ganglia 环境搭建并监控 Hadoop 分布式集群

安装 Hadoop

把 Hadoop 添加到环境变量

Ganglia 环境搭建并监控 Hadoop 分布式集群

拷贝 master01 上修改好的 /etc/profile 文件到其他两台主机

Ganglia 环境搭建并监控 Hadoop 分布式集群

使环境变量立即生效

Ganglia 环境搭建并监控 Hadoop 分布式集群

查看 hadoop 版本

Ganglia 环境搭建并监控 Hadoop 分布式集群

建立 data,name,tmp 文件夹:后面配置文件中需要用到

Ganglia 环境搭建并监控 Hadoop 分布式集群

Hadoop 配置文件修改

hadoop-env.sh

在文件头添加如下内容

export JAVA_HOME=/usr/local/jdk1.7.0_80
export HADOOP_LOG_DIR=/usr/local/hadoop_repo/logs
export HADOOP_ROOT_LOGGER=DEBUG,DRFA

core-site.xml

<configuration>
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://master01:9000</value>
    </property>
    <property>
        <name>hadoop.tmp.dir</name>
        <value>/usr/local/hadoop_repo/tmp</value>   
</property>
<!–
    <property>
        <name>fs.trash.interval</name>
        <value>1440</value>
    </property>
–>
</configuration>

hdfs-site.xml

<configuration>
    <property> 
        <name>dfs.namenode.name.dir</name> 
        <value>file:///usr/local/hadoop_repo/name</value> 
    </property> 
    <property> 
        <name>dfs.datanode.data.dir</name> 
        <value>file:///usr/local/hadoop_repo/data</value> 
    </property>
    <property>
        <name>dfs.namenode.checkpoint.dir</name>
        <value>file:///usr/local/hadoop_repo/namesecondary</value>
  </property>
  <property>
        <name>dfs.namenode.secondary.http-address</name>
        <value>master01:9001</value>
    </property>
    <property>
        <name>dfs.replication</name>
        <value>1</value>
    </property>
    <property> 
        <name>dfs.webhdfs.enabled</name> 
        <value>true</value> 
    </property><property>
        <name>dfs.permissions</name>
        <value>false</value>
    </property>
</configuration>

mapred-site.xml

<configuration>
    <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>
    <property> 
        <name>mapreduce.jobhistory.address</name> 
        <value>master01:10020</value> 
    </property> 
    <property> 
        <name>mapreduce.jobhistory.webapp.address</name> 
        <value>master01:19888</value> 
    </property>
    <property>
        <name>yarn.app.mapreduce.am.staging-dir</name>
        <value>/history</value>
    </property>
    <property>
        <name>mapreduce.jobhistory.done-dir</name>
        <value>${yarn.app.mapreduce.am.staging-dir}/history/done</value>
    </property>
    <property>
        <name>mapreduce.jobhistory.intermediate-done-dir</name>
        <value>${yarn.app.mapreduce.am.staging-dir}/history/done_intermediate</value>
    </property>
    <property>
    <name>mapreduce.map.log.level</name>
        <value>DEBUG</value>
    </property>
    <property>
        <name>mapreduce.reduce.log.level</name>
        <value>DEBUG</value>
    </property>
</configuration>

slaves

master01
slave01
slave02

yarn-env.sh

export JAVA_HOME=/usr/local/jdk1.7.0_80
export YARN_LOG_DIR=/usr/local/hadoop_repo/logs
export YARN_ROOT_LOGGER=DEBUG,DRFA

yarn-site.xml

<configuration>
    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>
    <property>
        <name>yarn.resourcemanager.hostname</name>
    <value>master01</value>
    </property>
    <property> 
        <name>yarn.resourcemanager.address</name> 
        <value>master01:8032</value> 
    </property> 
    <property> 
        <name>yarn.resourcemanager.scheduler.address</name> 
        <value>master01:8030</value> 
    </property> 
    <property> 
        <name>yarn.resourcemanager.resource-tracker.address</name> 
        <value>master01:8031</value> 
    </property> 
    <property> 
        <name>yarn.resourcemanager.admin.address</name> 
        <value>master01:8033</value> 
    </property> 
    <property> 
        <name>yarn.resourcemanager.webapp.address</name> 
        <value>master01:8088</value> 
    </property>
    <property> 
        <name>yarn.log-aggregation-enable</name> 
        <value>true</value> 
    </property>
</configuration>

Hadoop 集群启动

启动 HDFS

格式化:

Ganglia 环境搭建并监控 Hadoop 分布式集群

启动 dfs:

Ganglia 环境搭建并监控 Hadoop 分布式集群

master01 上面的 hdfs 进程:

Ganglia 环境搭建并监控 Hadoop 分布式集群

slave01,slave02 上面的 hdfs 进程:

Ganglia 环境搭建并监控 Hadoop 分布式集群

HDFS 的 web 页面:192.168.33.181:50070/

Ganglia 环境搭建并监控 Hadoop 分布式集群

启动 yarn

启动 yarn 命令:

start-yarn.xml

Ganglia 环境搭建并监控 Hadoop 分布式集群

Yarn 的 Web 页面:192.168.33.181:8088

Wordcount 实例运行

Wordcount 实例所在 jar 包位置:

/usr/local/hadoop-2.6.0/share/hadoop/mapreduce

Ganglia 环境搭建并监控 Hadoop 分布式集群

创建一个 words 文件,并写入如下文本:

vi words

Ganglia 环境搭建并监控 Hadoop 分布式集群

通过客户端查看 HDFS 文件系统目录:

hdfs dfs -ls -R /

Ganglia 环境搭建并监控 Hadoop 分布式集群

运行 wordcount 的脚本命令

hadoop jar hadoop-mapreduce-examples-2.6.0.jar wordcount /input/words /output

HDFS 文件系统路径页面示图:

Ganglia 环境搭建并监控 Hadoop 分布式集群

HDFS 页面查看运行结果目录:

Ganglia 环境搭建并监控 Hadoop 分布式集群

通过 Yarn 的 web 页面查看实例运行状态,如下为实例运行结束的图示:

Ganglia 环境搭建并监控 Hadoop 分布式集群

查看 wordcount 实例的运行结果:

hdfs dfs -text /output/part-r-00000

Ganglia 环境搭建并监控 Hadoop 分布式集群

Ganglia 监控 Hadoop 集群图

Ganglia 环境搭建并监控 Hadoop 分布式集群

更多 Hadoop 相关信息见Hadoop 专题页面 http://www.linuxidc.com/topicnews.aspx?tid=13

本文永久更新链接地址:http://www.linuxidc.com/Linux/2017-03/141652.htm

正文完
星哥说事-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-21发表,共计11036字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中