Flume-ng 1.7.0 安装、配置及说明之1-直接读取Nginx日志存入HDFS

一、简介

Flume是一个分布式、可靠、和高可用的海量日志采集、聚合和传输的系统,它可以实时的将分布在不同节点、机器上的日志收集起来保存或转入下一结点进行处理分析。Flume 初始的发行版本是Cloudera开发的,版本名叫Flume OG(original generation)。随着版本的发展,系统变得越来越臃肿,日志传输不稳定等。为了解决这些问题,Cloudera对系统的核心进行的重构,重构后的版本叫的Flume NG(next generation),并将其提交给Apache下开源。对于Flume OG和Flume NG两个版本有哪些不一样这里就不详细说明了。下面主要如题所示说明安装配置。

二、准备
1、下载:
      软件的官网:http://flume.apache.org/download.html,选择要使用的版本进行下载,这里以1.7.0版为例。


2、环境准备:
      安装在和nginx同一台机器上(其它可以写日志文件的程序都可以)
      硬件:一台虚拟机,内存2GB以一
      系统:Centos 6.3 64bit
      JDK: 1.7


3、设置用户的环境变量
      [root@HT-Server-CentOS ~]# vi .bash_profile
      增加如下内容:
       export JAVA_HOME=/root/jdk1.7.0_79
       export JRE_HOME=${JAVA_HOME}/jre
       export CLASSPATH=$CLASSPATH:$JAVA_HOME/lib:$JRE_HOME/lib:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/jre/lib/rt.jar
       export PATH=$JAVA_HOME/bin:$PATH
       保存后重新登录或用suorce /etc/.bash_profile使环境变量生效 

三、安装

1、把下载好的文件上传到机器上,目录为:/usr/local下,也可以安装在其它目录

2、解压:[root@HT-Server-CentOS local]# tar -xzvf apache-flume-1.7.0-bin.tar.gz

               [root@HT-Server-CentOS local]# mv apache-flume-1.7.0 flume


四、配置

flume的配置文件在conf目录下如:/usr/local/flume/conf,当刚解压的时候会有一名flume-conf.properties.template的配置模版文件,需要将它以用下命令复制一份:cp flume-conf.properties.template flume-conf.properties

然后按以下内容配置,根据自己的实际环境做相的修改:

注意:本示例仅用于从日志文件中按行读取后直接写入hdfs中。

# the channels and the sinks.
# Sources, channels and sinks are defined per agent,
# in this case called 'agent'
agent1.sources = source1                                                        //定义source名此片为source1
agent1.channels = channel1                                                     //定义channel名此片为channel1
agent1.sinks = sink1                                                                //定义sink名此片为sink1


# For each one of the sources, the type is defined
agent1.sources.source1.type = exec                                                                             //source的类型,exec
agent1.sources.source1.shell = /bin/bash -c
agent1.sources.source1.command = tail -n +0 -F /usr/local/nginx/logs/access.log              //要采集的日志文及命令
agent1.sources.source1.channels = channel1
agent1.sources.source1.threads = 5;

# The channel can be defined as follows.
agent1.channels.channel1.type = memory
agent1.channels.channel1.capacity = 100
agent1.channels.channel1.transactionCapacity = 100
agent1.channels.channel1.keep-alive = 30

# Each sink's type must be defined
df

agent1.sinks.sink1.type = hdfs                 //sink的类型:hdfs

#Specify the channel the sink should use
agent1.sinks.sink1.channel = channel1
agent1.sinks.sink1.hdfs.path = hdfs://192.168.89.29:9000/flume                             //hdfs的api地址
agent1.sinks.sink1.hdfs.writeFormat = Text
agent1.sinks.sink1.hdfs.fileType = DataStream
agent1.sinks.sink1.hdfs.rollInterval = 0
agent1.sinks.sink1.hdfs.rollSize = 100
agent1.sinks.sink1.hdfs.rollCount = 0
agent1.sinks.sink1.hdfs.batchSize = 100
agent1.sinks.sink1.hdfs.txnEventMax = 100
agent1.sinks.sink1.hdfs.callTimeout = 60000

五、增加运行时需要的hadoop的jar包

hdfs是大数据分析平台hadoop文件的一个了系统,做为Client调用其API接口写进数据,flume依赖它的jar包,且这依赖的这些jar包并没有放在flume的发行包里面。使用的方式用两种:一种是设置环境变量,把hadoop目录的相关jar目录加入到环境变量中;另一种是把相关的jar文件复制到flume的jar目录下,如本例为:/usr/local/flume/lib。本例采用的是方法二。hadoop的jar目录为:/usr/local/hadoop/share/hadoop。

我采用的方法是启动后,根据报的错误一个一个的找到所依赖的jar包。总共如下几个:

hadoop-common-2.7.3.jar                                   // hadoop/share/hadoop/common目录下
hadoop-auth-2.7.3.jar                                           // hadoop/share/hadoop/common/lib
commons-configuration-1.6.jar                           // hadoop/share/hadoop/common/lib
hadoop-hdfs-2.7.3.jar                                           // hadoop/share/hadoop/hdfs目录下
hadoop-mapreduce-client-core-2.7.3.jar          // hadoop/share/hadoop/mapreduce
htrace-core-3.1.0-incubating.jar                         // hadoop/share/hadoop/common/lib

commons-io.2.4.jar                                               //hadoop/share/hadoop/common/lib


六、启动

启动命令:bin/flume-ng agent --conf conf --conf-file conf/flume-conf.properties --name agent1 -Dflume.root.logger=INFO,console

其中agent1 的要种配置文件中配置的名字一样。


七、碰到的问题

1.Using this sink requires hadoop to be installed so that Flume can use the Hadoop jars to communicate with the HDFS cluster. Note that a version of Hadoop that supports the sync() call is required.

大意就是:使用这种sink需要hadoop的jar包。由于也没说具体哪个jar包

当没有把hadoop的jar拷进来会报这个错。

2.org.apache.hadoop.security.AccessControlException: Permission denied: user=root, access=WRITE, inode="/flume/FlumeData.1482765009917.tmp":hadoop:supergroup:drwxr-xr-x

这个是hdfs没有开放权限给客户端写入,解决方法有如下:

解决方法:

    到服务器上修改hadoop的配置文件:conf/hdfs-core.xml, 找到 dfs.permissions 的配置项 , 将value值改为 false
    <property>
        <name>dfs.permissions</name>
        <value>false</value>
    <description>


八、HDFS的安装配置

参考:http://blog.csdn.net/lusoel/article/details/53886931



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值