Chukwa 0.4.0 详细安装流程

来源:互联网 发布:低智商证明知乎 编辑:程序博客网 时间:2024/04/30 06:05

1.安装好hadoop,确保hadoop运行无误(我hadoop版本为0.20.2)

2.去官网上下载chukwa 0.4.0版本:

http://www.apache.org/dyn/closer.cgi/hadoop/chukwa/chukwa-0.4.0

3.下载后别急着分发到各个节点,因为代码中存在着一个bug,这个bug会影响后面hicc的显示,所以需要经过修改编译以后再将其分发到各个节点上比较好!修改编译具体过程如下:

(1)源代码中找到ViewStore.java

(package org.apache.hadoop.chukwa.datastore)

在函数JSONArray list(String uid) 中,大概210行左右修改:

FileStatus[] fstatus = fs.listStatus(viewFile);

         if(fstatus!=null) {

           for(int i=0;i<fstatus.length;i++) {

+            if(!fstatus[i].getPath().getName().endsWith(".view")) {

+              continue;

+            }

             long size = fstatus[i].getLen();

             FSDataInputStream viewStream = fs.open(fstatus[i].getPath());

             byte[] buffer = new byte[(int)size];

(2)然后在$CHUKWA_HOME/输入ant,重新编译

会在$CHUKWA_HOME/build/目录下得到编译后的文件

(3)将$CHUKWA_HOME/build/chukwa-core-0.4.0.jar 拷贝到$CHUKWA_HOME,将$CHUKWA_HOME/build/chukwa.war拷贝到$CHUKWA_HOME/webapps当中

4.配置各个节点的环境变量,最好在~/.bash_profile当中配好,下面是我的配置:

export JAVA_HOME=/usr/java/jdk1.6.0_16

export JRE_HOME=/usr/java/jdk1.6.0_16/jre

export HADOOP_VERSION=0.20.2

export HADOOP_HOME=/home/hadoop/hadoop-${HADOOP_VERSION}

export CHUKWA_HOME="/home/zhangliuhang/chukwa/"

export ANT_HOME=/usr/ant/ant-1.7.0

export PATH=.:$PATH: $JAVA_HOME/bin:$HADOOP_HOME/bin:$CHUKWA_HOME/bin:$ANT_HOME/bin

export CLASSPATH=$CLASSPATH:$JAVA_HOME/lib:$JRE_HOME/lib:$ANT_HOME/lib:$HADOOP_HOME/hadoop-${HADOOP_VERSION}-core.jar:$HADOOP_HOME/lib/*:$HADOOP_HOME/lib/commons-logging-1.0.4.jar:$ANT_HOME/junit-3.8.1.jar:$HADOOP_HOME/ivy/ivy-2.0.0-rc2.jar:$HADOOP_HOME/lib/commons-logging-api-1.0.4.jar:$HADOOP_HOME/lib/log4j-1.2.15.jar:$HADOOP_HOME/lib/hadoop-lzo-0.4.8.jar

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib:/home/hadoop/hadoop-0.20.2/lib/native/Linux-amd64-64

export JAVA_LIBRARY_PATH=/home/hadoop/hadoop-0.20.2/lib/native/Linux-amd64-64

export javalibpath=/home/hadoop/hadoop-0.20.2/lib/native/Linux-amd64-64

5.配置$CHUKWA_HOME/conf/chukwa-env.sh文件,其中的我的配置如下:(我只列出了没有被我注释掉的)

export JAVA_HOME=/usr/java/jdk1.6.0_16

export HADOOP_HOME="/home/hadoop/hadoop-0.20.2"

export HADOOP_CONF_DIR="/home/hadoop/hadoop-0.20.2/conf/"

export HADOOP_JAR=${HADOOP_HOME}/hadoop-0.20.2-core.jar

export chukwaRecordsRepository="/chukwa/repos/"

export CHUKWA_DATA_DIR="${CHUKWA_HOME}/data"

export CHUKWA_IDENT_STRING=chukwa

export JAVA_PLATFORM= Linux-amd64-64

export JAVA_LIBRARY_PATH=${HADOOP_HOME}/lib/native/${JAVA_PLATFORM}

export JDBC_DRIVER=com.mysql.jdbc.Driver

export JDBC_URL_PREFIX=jdbc:mysql://

export CHUKWA_HICC_MIN_iMEM=300M

export CHUKWA_HICC_MAX_MEM=300M

6.将必要的库从$CHUKWA_HOME/及$CHUKWA_HOME/lib拷贝到$HADOOP_HOME/lib当中,我拷贝的库有:

Chukwa-agent-0.4.0.jar,

chukwa-hadoop-0.4.0-client.jar,

tools-0.4.0.jar,json.jar

7.配置Agent

(1)配置$CHUKWA_HOME/conf/initial_adaptors

     cp initial_adaptors.template initial_adaptors

(2)配置$CHUKWA_HOME/conf/chukwa-agent-conf.xml

                   (我只列出我修改的地方)

    <property>

    <name>chukwaAgent.tags</name>

    <value>cluster="zlhchukwa"</value>

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

</property>

(3)配置$CHUKWA_HOME/conf/agents文件,我的配置如下所示:

     gd115

         gd116

         gd117

(4)配置$CHUKWA_HOME/conf/Collectors文件,我的配置如下:

      http://10.10.104.116:9927/

注:从这个地方可以看出来Collectors和agents是通过http进行联系的,此处最好要用ip,不要用其他代号,因为可能访问不到

(5)测试启动agents看每个节点上的agent否启动成功

     执行$CHUKWA_HOME/bin/ start-agents.sh 

     此时应该会在各个节点上通过jps可以看到有一个进程叫做ChukwaAgent,

     可以试着telnet localhost 9093 然后list看一下各个adaptor是否启动

(6)关闭agents

     执行$CHUKWA_HOME/bin/stop-agents.sh,

        假如关闭不了ChukwaAgent进程可以修改$CHUKWA_HOME/bin/chukwa文件

     找到关键字kill 然后将后面的数值改成kill -9

(7)在关闭hadoop的状态下,将$CHUKWA_HOME/conf/hadoop-logs4j.properties覆盖

     $HADOOP_HOME/conf/log4j.properties

     修改$CHUKWA_HOME/conf/hadoop-metrics.properties中的@TODO-CHUKWA_LOG_DIR@改为:

         /home/zhangliuhang/chukwa/logs/,然后将该文件覆盖掉

     $HADOOP_HOME/conf/hadoop-metrics.properties

     在做这一步的时候最好将原文件进行备份

正确的启动顺序是先启动hadoop,再启动collectors,然后才启动agents,在做完第(6)小步后,假如此时启动hadoop,会发现他可能报错,假如只出现以下出错信息:

Error initializing ChukwaClient with list of currently registered adaptors,clearing our local list of adaptors,可以置之不理的,但是其他错误不行)

   

8.配置Collectors

(1)配置$CHUKWA_HOME/conf/chukwa-collector-conf.xml文件,我的配置如下:

(我只给出了我修改的部分)

<property>

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

    <value>hdfs://gd115:9989/</value>

    <description>HDFS to dump to</description>

  </property>

(注意,此处配置的信息应该和$HADOOP_HOME/conf/core-site.xml当中的fs.default.name内容一致,因为collectors需要将从agents收集到的信息存储到hdfs上面去

<property>

    <name>chukwaCollector.outputDir</name>

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

    <description>Chukwa data sink directory</description>

  </property>

注意,此配置强烈要求不要更改,这个目录是collectors写到hdfs上面的目录,假如这个目录变了,那么会导致后面的一些进程找不到hdfs上/chukwa/logs当中的信息,从而无法生成分析的数据流,当然假如对chukwa熟悉的人也可以改,但是我不建议这么做!)

  <property>

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

    <value>9927</value>

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

  </property>

注意,这个地方的端口号要和collectors文件当中的保持一致!)

(2)测试collectors,agents,hadoop

先启动hadoop,在动collectors,最后启动agent,命令如下:

$HADOOP_HOME/bin/start-all.sh 

(假如只是报”Error initializing ChukwaClient with list of currently registered adaptors, clearing our local list of adaptors”这个错误可以不管)

$CHUKWA_HOME/bin/start-collectors.sh

$CHUKWA_HOME/bin/start-agents.sh

检查四个地方:

(a)通过jps看是否有相应的节点上是否有相应的进程,其中agent进程对应ChukwaAgent,collector进程对应CollectorStub

(b)查看$CHUKWA_HOME/logs/agent.log及$CHUKWA_HOME/logs/collector.log,看他们是否正常

(c)通过网络web访问查看是否显示正常,结合我之前的配置,检查collector时网址中输入http://10.10.104.116:9927/可以看到显示:”Chukwa servlet running”,若检查agent,在网址中输入http://10.10.10.104.116:9093

(d)查看hdfs上是否生成了相应的文件$HADOOP_HOME/bin/hadoop dfs -ls /理论上应该hdfs上会有/chukwa/logs目录生成

9.配置Demux

对于这个不要配置什么直接运行就好了,选择一个节点,我是在非namenode上运行的如下命令:

$CHUKWA_HOME/bin/start-data-processors.sh

(注意这个时候,hadoop,collectors,agents已经启动起来了)

开始运行后的直接效果是jps多出3个进程,分别是PostProcessorManager,ChukwaArchiveManager,Demuxmanager

同时通过查看hdfs,可以发现/chukwa/目录下多了好几目录,分别是/chukwa/archivesProcessing, /chukwa/dataSinkArchives, /chukwa/demuxProcessing,随着时间的增加,数据分析进行的深入,会在hdfs上的/chukwa/目录下生成更多的目录,最终目录结构同http://incubator.apache.org/chukwa/docs/r0.4.0/dataflow.html

10.配置数据库

Chukwa0.4.0是通过将分析好的数据从hdfs上下载到本地mysql数据库中,然后通过hicc命令来进行图形化显示的,而对于chukwa0.5.0是通过hbase而非本地的mysql来处理的,所以对于chukwa0.4.0,我们还得装mysql数据库,我个人认为,安装数据库的时候不需要在所有的节点上安装,这里我选择的是同运行的Demux是同一个节点,我最终的hicc也是单独运行在这个单独的节点上。

(1)从mysql官网上下载mysql

http://dev.mysql.com/downloads/mysql/5.1.html#downloads这个网上可以下载到mysql-5.6.3-m6-linux2.6-x86_64.tar.gz,

(2)将该文件解压到$CHUKWA_HOME/opt/目录下,后面我用$MYSQL_HOME代表mysql所在目录

(3)我给系统添加一个mysql用户,并给予root权限,操作如下:

     useradd mysql

   chmod +w /etc/passwd

   vi /etc/passwd (对该文件mysql用户修个为root组,即,后面的id都改为了0)

   chmod –w /etc/passwd

(4)执行以下命令:

     cd $MYSQL_HOME

          ./scripts/mysql_install_db

     ./bin/mysqld_safe &

./bin/mysqladmin –u root create zlhchukwa

./bin/mysql –u root zlhchukwa<$CHUKWA_HOME/conf/database_cerate_tables.sql

(此时可以进入到数据库当中检查是否在数据库当中建了一个叫做的zlhchukwa的database,并且在该database当中是否产生了一些tables)

(5)配置mysql replication

$MYSQL_HOME/mysql –u root –p

Enter password:

GRANT REPLICATION SLAVE ON *.* TO 'root'@'%' IDENTIFIED BY '';
FLUSH PRIVILEGES;

(事实上,我并不知道那个username域和password域该填些什么,所以就先这么填这先)

(6)配置$CHUKWA_HOME/conf/jdbc.conf文件,

<clustername>=jdbc:mysql://localhost:3306/<clustername>?user=root

我的配置内容如下:

zlhchukwa=jdbc:mysql://localhost:3306/zlhchukwa?user=root

11.启动进程将数据从hdfs下载到数据库

在装有数据库的那个非namenode节点上,运行$CHUKWA_HOME/bin/dbAdmin.sh

(注:在chukwa0.4.0当中是没有这个脚本的,我是从chukwa0.3.0的bin目录上面弄过来的)

该进程,似乎是每5分钟显示并操作一次,我们放他在后台运行就好

12.运行hicc进行图形化查看

$CHUKWA_HOME/bin/chukwa hicc

http://10.10.104.116:8080/hicc/

原创粉丝点击