基于Flume -> Kafka -> Stream(Spark)的架构日志收集demo搭建(part1)

浏览: 9293

最近在做日志收集方面工作,在此之上也需要实现实时计算,由于以前也没做过这方面工作,从基础开始搭建demo,真实环境估计会有很大不同,可以先做测试验证。

计划搭建Flume -> Kafka -> Storm(Spark)的架构,其中Storm看来对我有难度,Spark有现成sample,先使用Spark

目标:

监控Nginx的日志,并将数据存储到hdfs上,同时使用storm(spark)做事实处理

计划步骤:

0.准备工作

1.安装Flume并配置

2.安装Kafka并配置

3.测试Flume和Kafka连通性

4.安装SparkStream并配置

5.测试SparkStream和Kafka连通性

6. web service的编写.总结启动命令

7.计数网页的制作

8.SparkStream调用web service生成计数

9.Flume连通hdfs并实际应用

10.Storm相关

11.下一步思考

使用安装文件:

JDK  : 1.7
Flume:apache-flume-1.6.0-bin.tar.gz (http://flume.apache.org/download.html)
Kafka:kafka_2.11-0.8.2.2.tgz (http://kafka.apache.org/downloads.html)
Spark: spark-1.5.1-bin-hadoop2.6.tgz (http://spark.apache.org/downloads.html)


一些参考文档:

大数据架构:flume-ng+Kafka+Storm+HDFS 实时系统组合(http://www.aboutyun.com/thread-6855-1-1.html

SparkStream 使用(http://blog.csdn.net/escaflone/article/details/43341275)

Spark Streaming小结(http://www.aboutyun.com/thread-11276-1-1.html)

0.准备工作

准备JDK,安装在$HOME/jdk1.7.0_17

所有程序都安装在$HOME目录下

1.安装Flume并配置

解压apache-flume-1.6.0-bin.tar.gz 到$HOME/apache-flume-1.6.0-bin
设置JDK路径
cd $HOME/apache-flume-1.6.0-bin
修改 conf/flume-env.sh 增加export JAVA_HOME=$HOME/jdk1.7.0_17
修改 conf/flume.conf,内容如下:
agent1.sources = r1
agent1.sinks = k1
agent1.channels = c1
# Describe/configure the source
agent1.sources.r1.type = exec
agent1.sources.r1.command=tail -f $HOME/apache-flume-1.6.0-bin/testfolder/flumetest.log
# # Describe the sink
agent1.sinks.k1.type = logger
#
# Use a channel which buffers events in memory
agent1.channels.c1.type = memory
agent1.channels.c1.capacity = 1000
agent1.channels.c1.transactionCapacity = 100
#
# Bind the source and sink to the channel
agent1.sources.r1.channels = c1
agent1.sinks.k1.channel = c1

--启动

cd $HOME/apache-flume-1.6.0-bin
bin/flume-ng agent --conf conf/ -f conf/flume.conf -Dflume.root.logger=INFO,console -n agent1

--测试

date >> $HOME/apache-flume-1.6.0-bin/testfolder/flumetest.log
在consloe可见消息

 

2.安装kafka并验证

start参考文档见http://kafka.apache.org/documentation.html#quickstart

解压kafka_2.11-0.8.2.2.tgz 到$HOME/kafka_2.11-0.8.2.2
设置JDK路径
修改 bin/kafka-run-class.sh 增加export JAVA_HOME=/jdk/jdk1.7.0_17
--由于kafka需要zookeeper,启动kafka自带的zookeeper做测试
cd $HOME/kafka_2.11-0.8.2.2
bin/zookeeper-server-start.sh config/zookeeper.properties

--启动server

cd $HOME/kafka_2.11-0.8.2.2
bin/kafka-server-start.sh config/server.properties
--创建一个test topic
cd $HOME/kafka_2.11-0.8.2.2
bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic test
We can now see that topic if we run the list topic command:
--测试一下,列出所有主题
bin/kafka-topics.sh --list --zookeeper localhost:2181
显示
test

3.配置flume和kafka集成

cd $HOME/apache-flume-1.6.0-bin
修改conf/flume_kafka.conf(其他内容同conf/flume.conf) 测试kafka sink 集成
--注意9092是brokerList的监听端口,不是 kafka test的运行端口
agent1.sinks.k1.type = org.apache.flume.sink.kafka.KafkaSink
agent1.sinks.k1.topic = test
agent1.sinks.k1.brokerList = localhost:9092
agent1.sinks.k1.requiredAcks = 1
agent1.sinks.k1.batchSize = 20

--启动flume

cd $HOME/apache-flume-1.6.0-bin
bin/flume-ng agent --conf conf/ -f conf/flume_kafka.conf -Dflume.root.logger=INFO,console -n agent1

开一个kafka自带的接受smaple

cd $HOME/kafka_2.11-0.8.2.2
bin/kafka-console-consumer.sh --zookeeper localhost:2181 --topic test
--bin/kafka-console-consumer.sh --zookeeper localhost:2181 --topic test --from-beginning
--测试,可以在kafka的consumer sample接受数据
date >> $HOME/apache-flume-1.6.0-bin/testfolder/flumetest.log


其他的明天继续了

推荐 2
本文由 seng 创作,采用 知识共享署名-相同方式共享 3.0 中国大陆许可协议 进行许可。
转载、引用前需联系作者,并署名作者且注明文章出处。
本站文章版权归原作者及原出处所有 。内容为作者个人观点, 并不代表本站赞同其观点和对其真实性负责。本站是一个个人学习交流的平台,并不用于任何商业目的,如果有任何问题,请及时联系我们,我们将根据著作权人的要求,立即更正或者删除有关内容。本站拥有对此声明的最终解释权。

2 个评论

感谢分享,nignx也玩过,哈哈。
seng

seng 回复 nihuang

感谢支持,我也才开始学习。 有实时处理的要求,我也就自己先摸索一下。

要回复文章请先登录注册