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文件。