多云服务器kafka环境搭建并接收flume日志数据

前言

如果看过博主之前的文章,也可以了解到我正在搭建一个大数据的集群,所以花了血本弄了几台服务器。终于在flume将日志收集到日志主控flume节点上后,下一步要进行消息队列的搭建了。中间遇到过很多坎坷和坑,下面就为大家讲解一下搭建过程和注意事项,最终的成果是kafka搭建成功并接受flume主控传来的数据。

环境

服务器:CentOS7.2

JDK: jdk1.8.0_161

flume: apache-flume-1.6.0-cdh5.7.0

zookeeper: zookeeper-3.4.5-cdh5.7.0

kafka: kafka_2.11-0.9.0.0

步骤

1. 解压安装zookeeper,配置conf/zoo.cfg

cp zoo_sample.cfg zoo.cfg
vim zoo.cfg 

修改日志保存目录:

# example sakes.
dataDir=日志存放目录       #如不存在,则需要创建

2. 解压kafka, 配置config/server.properties

log.dirs=日志存放路径                    #如不存在,需要手动创建
advertised.host.name=本机IP             #访问kafka时返回的下一个请求地址
socket.request.max.bytes=1205725856    #此处需要改大一点,此处是已经修改过的数值
zookeeper.connect=localhost:2181       # Zookeeper地址
broker.id=0                            # broker.id 保证每一个Broker都是唯一的ID号即可,避免冲突
listeners=PLAINTEXT://:9092            # 此broker 监听的端口号,同样要避免冲突

注:advertised.host.name一定要设置为本地IP,因为之后flume会充当生产者的角色而向kafka进行请求,kafka会直接返回此属性设置的值,flume则根据返回的值进行再次请求,如果此处设置为localhost,则flume则会在本地进行寻找broker,导致连接失败。

PS: socket.request.max.bytes最好设置的大一点,因为flume传来的数据会比设置的默认值大,会产生报错现象,不过不影响运行,此处为修改后的数值,可以直接使用。

3. 进入到zookeeper主目录bin下启动zookeeper

./zkServer.sh start

注:建议将ZK_HOME和KAFKA_HOME配置到系统变量中,会简化操作:

zkServer.sh start

4. 在kafka主目录config目录下启动kafka

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

注:配置了KAFKA_HOME和系统变量后:

kafka-server-start.sh $KAFKA_HOME/config/server.properties

5. 创建topic

kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic blog

注:此次的讲解和以下的代码均为设置了系统变量后的操作

6. 测试是否成功

kafka-topics.sh --describe --zookeeper localhost:2181

注:如果查询不成功,报错的话,注意看一下自己的云服务器主机名是否带_下划线。如果带下划线的话,注意修改hostname,因为kafka没办法解析带下划线的主机名。

7. 设置flume,将日志信息sink到kafka上

vim avro-memory-kafka.conf

编写配置:

avro-memory-kafka.sources = avro-source
avro-memory-kafka.sinks = kafka-sink
avro-memory-kafka.channels = memory-channel

avro-memory-kafka.sources.avro-source.type = avro
avro-memory-kafka.sources.avro-source.bind = 0.0.0.0    #此处是监听的IP,切记不要写成localhost,那样只会允许本地访问
avro-memory-kafka.sources.avro-source.port = 8000       #flume日志收集的端口号 

avro-memory-kafka.sinks.kafka-sink.type = org.apache.flume.sink.kafka.KafkaSink
avro-memory-kafka.sinks.kafka-sink.brokerList = kafkaIP地址:9092   #9092是broker的监听端口
avro-memory-kafka.sinks.kafka-sink.topic = blog                   #topic名称
avro-memory-kafka.sinks.kafka-sink.batchSize = 5
avro-memory-kafka.sinks.kafka-sink.requiredAcks =1

avro-memory-kafka.channels.memory-channel.type = memory

avro-memory-kafka.sources.avro-source.channels = memory-channel
avro-memory-kafka.sinks.kafka-sink.channel = memory-channel

7. 运行flume,并在kafka服务端打开消费者进行测试:

flume-ng agent \
--name avro-memory-kafka \
--conf $FLUME_HOME/conf \
--conf-file $FLUME_HOME/conf/avro-memory-kafka.conf \
-Dflume.root.logger=INFO,console

kafka端消费者开启:

kafka-console-consumer.sh --zookeeper localhost:2181 --topic blog --from-beginning

消费者接收数据,测试成功。至此环境已经搭建完毕

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Java帮帮-微信公众号-技术文章全总结

Nginx入门详解文档

Nginx入门详解文档 1 文章内容 掌握nginx+tomcat反向代理的使用方法。 掌握nginx作为负载均衡器的使用方法。 掌握nginx实现web缓存...

5159
来自专栏Hadoop实操

如何在RedHat7上使用Bind搭建DNS服务

搭建私有的DNS服务的方式有多种,如Window Server、Dnsmasq、BIND等,前面Fayson介绍了《如何利用Dnsmasq构建小型集群的本地DN...

5554
来自专栏SDNLAB

【连载-4】数据中心网络虚拟化 配置管理技术

在构建虚拟网络时,管理员需要进行大量的配置工作,例如端口的ip地址和VXLAN配置等等。显然,没有人愿意在系统每次启动时都将繁琐的配置工作重复一遍,所以将配置信...

2815
来自专栏Python爬虫与算法进阶

强大的异步爬虫 with aiohttp

看到现在网络上大多讲的都是requests、scrapy,却没有说到爬虫中的神器:aiohttp

1712
来自专栏Albert陈凯

HTTP、TCP、UDP:通信协议的规则和区别

TCP、HTTP、UDP:都是通信协议,也就是通信时所遵守的规则,只有双方按照这个规则“说话”,对方才能理解或为之服务。 TCP HTTP UDP三者的...

3078
来自专栏pangguoming

创建GitHub技术博客全攻略

说明: 首先,你需要注册一个 github 账号,最好取一个有意义的名字,比如姓名全拼,昵称全拼,如果被占用,可以加上有意义的数字. 1. 注册账号: 地址:...

4007
来自专栏Java帮帮-微信公众号-技术文章全总结

Maven详解

1 Maven介绍 1.1 项目开发中遇到的问题 1、都是同样的代码,为什么在我的机器上可以编译执行,而在他的机器上就不行? 2、为什么在我的机器上可以正常打包...

3855
来自专栏Java帮帮-微信公众号-技术文章全总结

Web-第七天 HTTP&Tomcat学习

HTTP协议:超文本传输协议(HTTP,HyperText Transfer Protocol)是互联网上应用最为广泛的一种网络协议。用于定义WEB浏览器与WE...

1895
来自专栏张戈的专栏

Linux系统zip压缩命令详细参数,附文件排除选项的正确用法

这次给博客添加了纯代码缓存之后,发现缓存文件竟然达到了 50 多 MB!而我的服务器每次还需要同步至七牛,文件体积的增加都会增加文件远程同步备份的时间。因此,我...

3235
来自专栏武培轩的专栏

HTTP 0.9 HTTP 1.0 HTTP 1.1 HTTP 2.0区别

HTTP协议 :Hyper Text Transfer Protocol(超文本传输协议),是用于从万维网(WWW:World Wide Web)服务器传输超文...

3155

扫码关注云+社区

领取腾讯云代金券