17.4.2 Chukwa的安装

Chukwa项目的运行至少需要如下三部分的支持:

Hadoop集群和HBase集群,Chukwa依赖其来存储并处理数据。

一个Collector进程,将收集到的数据写入HBase中。

一个或多个Agent进程,它发送监控数据到Collector,我们将运行的Agent进程的节点视为被监控点。

另外,可以使用定制的脚本文件来监控集群的健康状态,并使用HICC来图形化显示集群的状态。

下面我们以三台机器为例介绍如何配置Chukwa来监控Hadoop分布式集群,集群中三台机器的主机名分别为:master、slave1和slave2,其中master作为Hadoop的NameNode和Hbase的HMaser。

1.安装Chukwa

首先需要在官网(http://incubator.apache.org/chukwa/)上下载Chukwa,然后将其解压在合适的目录下。当前Chukwa的最新版本为0.5.0,下面以此版本为例进行介绍。下载并解压Chukwa后,我们设置Chkuwa的环境变量如下所示:


export CHUKWA_HOME=/home/hadoop/hadoop-1.0.1/chukwa-incubating-0.5.0

export CHUKWA_CONF_DIR=$CHUKWA_HOME/etc/chukwa

export PATH=$CHUKWA_HOME/bin:$CHUKWA_HOME/sbin:$CHUKWA_CONF_DIR:$PATH


从上面的配置中可以看出,我们将Chukwa放在Hadoop目录下便于管理。在Chukwa 0.5.0版本中,配置文件并不在根目录下的conf文件中,conf文件已经被删除,取而代之的是Chukwa根目录下的$CHUKWA_HOME/etc/chukwa目录。另外,Chukwa的集群管理脚本也并非全部在bin目录下,而是在bin和sbin两个目录下。故此,我们将$CHUKWA_HOME/bin和$CHUKWA_HOME/sbin同时加入PATH中方便操作。

2.Hadoop和HBase集群的配置

Hadoop和HBase的安装与配置我们已经在前面章节详细讲过,这里不再赘述。这里主要介绍为了安装Chukwa而对Hadoop和HBase集群配置的进一步修改。

首先按照如下命令,将Chukwa文件复制到Hadoop中:


cp$CHUKWA_CONF_DIR/hadoop-log4j.properties$HADOOP_CONF_DIR1/log4j.properties

cp$CHUKWA_HOME/etc/chukwa/hadoop-metrics2.properties$HADOOP_CONF_DIR/hadoop-

metrics2.properties

cp$CHUKWA_HOME/share/chukwa/chukwa-0.5.0-client.jar$HADOOP_HOME/lib

cp$CHUKWA_HOME/share/chukwa/lib/json-simple-1.1.jar$HADOOP_HOME//lib


配置完成后重启Hadoop集群,接着进行HBase的设置。我们需要在HBase中创建数据存储所需要的表,如下所示:


bin/hbase shell<CHUKWA_HOME/etc/chukwa/hbase.schema


表的模式Chukwa已经定义好,我们只需要通过HBase shell将其导入即可。

3.Collector的配置

首先我们对$CHUKWA_CONF_DIR/chukwa-env.sh进行配置。该文件为Chukwa的环境变量,大部分的脚本都需要从该文件中读取关键的全局Chukwa配置信息。我们需要对以下变量进行设置:


export JAVA_HOME=/usr/lib/jvm/java-6-sun-1.6.0.06

export HBASE_HOME=/home/hadoop/hadoop-1.0.1/hbase-0.92.1

export HBASE_CONF_DIR=$HBASE_HOME/conf

export HADOOP_HOME=/home/hadoop/hadoop-1.0.1

export HADOOP_CONF_DIR=$HADOOP_HOME/conf


注意 如果已经在系统环境变量中(如/etc/profile文件)配置了上述参数,那么这里可以省略。需要格外注意的是,chukuwa-env.sh中参数的优先级要高于/etc/profile文件中相同的参数,一定要保证优先级高的参数设置正确。

另外,当需要运行多台机器作为收集器的时候,要修改$CHUKWA_CONF_DIR/collectors文件,该文件定义了哪台机器运行收集器进程。配置文件格式与Hadoop的$HADOOP_CONF_DIR/slaves文件类似,每行代表一台机器。在默认情况下该文件只包含一行记录:配置localhost运行收集器进程。

另外,$CHUKWA_CONF_DIR/initial_Adaptors文件主要用于设置Chukwa监控哪些日志,以及以什么方式、什么频率来监控等。使用默认配置即可,如下所示:


add sigar.SystemMetrics SystemMetrics 60 0

add SocketAdaptor HadoopMetrics 9095 0

add SocketAdaptor Hadoop 9096 0

add SocketAdaptor ChukwaMetrics 9097 0

add SocketAdaptor JobSummary 9098 0


CHUKWA_CONF_DIR/chukwa-collector-conf. xml维护了Chukwa的基本配置信息。我们需要通过该文件指定HDFS的位置,如下所示:


<property>

<name>writer.hdfs.filesystem</name>

<value>hdfs://Master:9000/</value>

<description>HDFS to dump to</description>

</property>


writer. hdfs.filesystem中的hdfs://master:9000/是Hadoop分布式文件系统的地址,Chukwa将利用它来存储数据,可以根据实际地址对其进行修改。

下面的属性设置用于指定sink data地址(见代码内容),/chukwa/logs/就是它在HDFS中的地址。在默认情况下,Collector监听8080端口(代码如下所示),不过这是可以修改的,各个Agent将会向该端口发消息。


<property>

<name>chukwaCollector.outputDir</name>

<value>/chukwa/logs/</value>

<description>Chukwa data sink directory</description>

</property>

<property>

<name>chukwaCollector.http.port</name>

<value>8080</value>

<description>The HTTP port number the collector will listen on</description>

</property>


4.Agent的配置

Agent由$CHUKWA_CONF_DIR/agents文件进行配置,该配置文件的格式与$CHUKWA_CONF_DIR/collectors相似,每行代表一台运行Agent的机器。如下所示为我们运行Agent的设置:


master

slave1

slave2


另外,CHUKWA_CONF_DIR/chukwa-Agent-conf.xml文件维护了代理的基本配置信息,其中最重要的属性是集群名,用于表示被监控的节点,这个值被存储在每一个被收集到的块中,以区分不同的集群,如设置cluster名称:cluster="chukwa"。


<property>

<name>chukwaAgent.tags</name>

<value>cluster="chukwa"</value>

<description>The cluster's name for this Agent</description>

</property>


另一个可选的节点是chukwaAgent.checkpoint.dir,这个目录是Chukwa运行Adaptor的定期检查点,它是不可共享的目录,并且只能是本地目录,不能是网络文件系统目录。

5.使用Pig进行数据分析

我们可以使用Pig进行数据分析,因此需要额外设置环境变量。要让Pig能够读取Chukwa收集到的数据,即与HBase和Hadoop进行连接,首先需要确保Pig已经正确安装,然后在Pig的classpath中引入Hadoop和HBase的配置文件目录,如下所示:


export PIG_CLASSPATH=$HADOOP_CONF_DIR:$HBASE_CONF_DIR


接下来创建HBASE_CONF_DIR的JAR文件:


jar cf$CHUKWA_HOME/hbase-env.jar$HBASE_CONF_DIR


创建周期性运行的分析脚本作业:


pig-Dpig.additional.jars=${HBASE_HOME}/hbase-0.90.4.jar:${ZOOKEEPER_HOME}/

zookeeper-3.3.2.jar:${PIG_HOME}/pig-0.10.0.jar:${CHUKWA_HOME}/hbase-env.jar

${CHUKWA_HOME}/share/chukwa/script/pig/ClusterSummary.pig


其中hbase-env.jar为上一步刚刚生成的HBASE_CONF_DIR的JAR文件。