flume+kafka 积累一波

来源:互联网 发布:java saas 开源框架 编辑:程序博客网 时间:2024/05/17 20:38

1.flume的安装

首先进行解压:

$tar zxvf apache-flume-1.6.0-bin.tar.gz /home/hadoop             // 自定义目录

解压完成进行配置进入

/home/hadoop/apache-flume-1.6.0-bin/cof目录,里面flume-conf.properties.template主要配置

Flume-env.sh.template

 

执行cp flume-conf.properties.templateflume-conf.properties 复制一份

 cp Flume-env.sh.template Flume-env.sh复制一份

flume-conf.properties 中主要配置agent

先执行vim Flume-env.sh添加JAVA_HONE

export JAVA_HOME=/usr/lib/jvm/jre-1.7.0-openjdk.x86_64

具体flume-conf.properties的配置后面在写因为agent的种类很多,可以自定义不同的配置。

但是JAVA_HOME一定要配置 ,这样就可以启动起来,

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

 

2.Kafka的安装

 

首先进行解压  tar -xzf kafka_2.9.2-0.8.1.1.tgz

进入kafka目录后

1

因为kafka是需要注册在zookeper上的所以需要先启动他

bin/zookeeper-server-start.sh config/zookeeper.properties

2

现在启动Kafka:

> bin/kafka-server-start.sh config/server.properties

3 创建一个叫做“test”的topic,它只有一个分区,一个副本。

> bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic test

4 发送消息.

> bin/kafka-console-producer.sh --broker-list localhost:9092 --topic test

5  启动consumer

bin/kafka-console-consumer.sh --zookeeper localhost:2181 --topic test --from-beginning

 

kafka-console-producer.shkafka-console-cousumer.sh只是系统提供的命令行工具。这里启动是为了测试是否能正常生产消费;验证流程正确性

在实际开发中还是要自行开发自己的生产者与消费者

 

 

Flume+kafka的整合

 

 

1.下载flume-kafka-plus:https://github.com/beyondj2ee/flumeng-kafka-plugin

2.找到flume-conf.properties文件 拷贝其中的内容到flume/conf目录下中的对应文件中

 

修改美容:

producer.sources.s.type = exec

producer.sources.s.command = tail -f -n+1 /mnt/hgfs/vmshare/test.log //想要监控的目录下的内容(自定义)

producer.sources.s.channels = c

修改所有topic的值改为test

将改后的配置文件放进flume/conf目录下

在该项目中提取以下jar包放入环境中flumelib下:

 

然后进行测试是否联通

 

 

我们先启动flume$bin/flume-ng agent --conf conf --conf-file conf/flume-conf.properties --name producer -Dflume.root.logger=INFO,console

 

 

然后再启动kafkabin/zookeeper-server-start.sh config/zookeeper.properties

      bin/kafka-server-start.sh config/server.properties

 bin/kafka-console-consumer.sh --zookeeper hadoop001:2181 --topic test --from-beginning 开启消费者

 

 

发现kafka消费者将flume监视的文件全部读取出来。测试成功,kafkaflume连通

 

 

Flume总结:flume的核心在与agent的配置,包括source channel sink

其中source 分为一下几种不同需求下的配置

1.avro 可以监听指定端口的的日志,需要说明主机和端口号。

2.Exec (上文所使用) 可以通过指定的操作对日志进行读取,指定shell命令 监听指定文件日志

3.Spooling dirctory (测试成功)可以读取文件夹里的日志,使用时指定一个文件夹可以读取该文件夹的所有文件,读取是不可修改。

 

Channel最主要的还是memory

 

常见的sink

1.logger sink 简单使用 将收集的日志写到flumelog

2.Avro sink 可以将接收到的日志发送到指定端口功下一级的收集和接收

3.File roll ink (测试成功) 将受到的日志写入到一个指定的文件中

4.Hdfs sink file roll sink类似,不过上个是写到本地文件中,hdfs是写到分布式的路径中。

 

 

0 0
原创粉丝点击