首先先去官网下载flume
http://flume.apache.org/download.html

安装Flume,然后进行配置

下载完成后,解压

tar -zxvf apache-flume-1.9.0-bin

解压完成之后,进入conf目录下面,把flume-env.sh.template文件更改为flume-env.sh,然后进入flume-env.sh配置jdk的路径。

export JAVA_HOME=/data/java/jdk1.8.0_11

然后进入bin目录,执行命令,验证flume是否安装成功

flume-ng version

如果能正常输出版本信息,则表示flume安装成功了

flume采集kafka数据写入hdfs再加载到hive flume上传hdfs_apache

然后自定义一个conf文件,我是在conf目录下面建的(这个文件在哪里建都可以,只要启动flume的时候,指定这个配置文件的路线就行了)。新增一个flume-to-kafka.conf的文件,然后配置:

#为各组件命名
a1.sources = r1
a1.channels = c1

#描述source
a1.sources.r1.type = TAILDIR
a1.sources.r1.filegroups = f1
#监控文件所在路径
a1.sources.r1.filegroups.f1 = /data/module/applogs/log/app.*

#描述channel
a1.channels.c1.type = org.apache.flume.channel.kafka.KafkaChannel

#kafka的安装地址
a1.channels.c1.kafka.bootstrap.servers = 192.168.0.110:9092
a1.channels.c1.kafka.topic = flume
a1.channels.c1.parseAsFlumeEvent = false

#绑定source和channel以及sink和channel的关系
a1.sources.r1.channels = c1

配置完成之后,我们启动测试一下,进入到bin目录,执行命令,启动flume

flume-ng agent --name a1 -f /data/flume/apache-flume-1.9.0-bin/conf/flume-to-kafka.conf -Dflume.root.logger=INFO,console

启动之后,看到flume正常读取了我们指定目录下面的,前缀为app的文件,代表flume配置已经完成.

flume采集kafka数据写入hdfs再加载到hive flume上传hdfs_apache_02

kafka安装

接下来是安装kafka,安装包可以去官网下载 http://kafka.apache.org/downloads

下载完成之后,解压

tar -zxvf kafka_2.12-2.7.0.tgz

解压完成之后,进入config目录,修改server.properties文件

broker.id=0
port=9092
host.name=192.168.0.110
#指定日志输出目录
log.dirs=/data/kafka/kafka-logs
#zookeeper集群地址,这里zk我装了三个
zookeeper.connect=192.168.0.110:2181,192.168.0.111:2181,192.168.0.112:2181

修改完成之后,进入到bin目录,启动kafka。

kafka-server-start.sh -daemon /data/kafka/kafka_2.12-2.7.0/config/server.properties

因为第一步的时候,我们已经安装好了flume,当我们启动kafka的时候,我们可以创建一个消费者,去消费,从flume推送过来的。存在kafka里面的数据,也就是消费kafka的数据。注意一下,这个topic 后面的flume是之前配置flume的时候,指定的kafka中topic的名称,名称要对

bin/kafka-console-consumer.sh --bootstrap-server 192.168.0.110:9092 --from-beginning --topic flume

启动之后,如果页面上面出现,打印了之前flume目录指定下的文件信息 ,则flume-kafka的通道是通的。

安装第二个flume

安装的步骤跟之前的 一直,只是这个时候,我们需要新建一个kafka-to-hdfs.conf文件,从kafka读取数据到hdfs。

## 组件
a1.sources=r1
a1.channels=c1
a1.sinks=k1

## source1
a1.sources.r1.type = org.apache.flume.source.kafka.KafkaSource
a1.sources.r1.batchSize = 5000
a1.sources.r1.batchDurationMillis = 2000
#kafka的安装地址,如果是多个kafka,这里用,分割,指定多个地址就可以了
a1.sources.r1.kafka.bootstrap.servers = 192.168.0.110:9092
a1.sources.r1.kafka.topics=flume

## channel1
a1.channels.c1.type = file
#数据备份目录
a1.channels.c1.checkpointDir = /data/flume/checkpoint/behavior1
a1.channels.c1.dataDirs = /data/flume/behavior1/

## sink1
a1.sinks.k1.type = hdfs

#hdfs地址
a1.sinks.k1.hdfs.path = hdfs://192.168.0.109:9000/data/flume/log/flume_log/%Y-%m-%d
a1.sinks.k1.hdfs.filePrefix = log-
a1.sinks.k1.hdfs.round = false


a1.sinks.k1.hdfs.rollInterval = 10
a1.sinks.k1.hdfs.rollSize = 134217728
a1.sinks.k1.hdfs.rollCount = 0


## 拼装
a1.sources.r1.channels = c1
a1.sinks.k1.channel= c1

配置完成之后,我们启动这个flume去消费kafka里面的数据,进入到bin目录,执行

flume-ng agent --name a1 -f /data/flume/apache-flume-1.9.0-bin/conf/kafka-to-hdfs.conf -Dflume.root.logger=INFO,console

执行完成之后,可以看见hdfs里面已经生成了指定的文件

flume采集kafka数据写入hdfs再加载到hive flume上传hdfs_kafka_03