现在有一个采集机器,接收其他系统产生的日志文件,每分钟 1G ,也就是每分钟一个目录下会多出一个 1G 的文件。
现在想对每分钟出现的这 1G 的数据进行实时的分析,采用 Spark streaming 实时计算后存入其他的系统。
现在的一个问题是我想读取 1G 数据里的每一条记录,请问这个架构应该是怎样的呢?
应该由哪一个节点负责对该 1G 大小的日志文件 readline 操作形成的一条条的记录呢? 这里 Flume 有没有用?
请教一下,谢谢~
1
anonymoustian OP 我的理解是 Kafka 里面存的是 一条条的日志(一行行)而非整个的大文件,所以需要向里面存这样的数据,这么理解对吗?
|
2
anonymoustian OP 我的问题是
日志文件 -> Kafka 和 日志文件 -> Flume -> Kafka 有什么区别呢? 日志文件有千万行的记录,是在哪一个阶段把这些记录一条条的输入到 Kafka 中的呢? |
3
EmdeBoas 2017-04-17 23:14:22 +08:00
学生党,个人的一点愚见
|
4
EmdeBoas 2017-04-17 23:15:50 +08:00
应该不需要 flume 直接在采集机器上跑 kafka 当生产者 不过要注意配置好 zookeeper 这个节点最好不要经常抖动或者老选举
|
5
anonymoustian OP @EmdeBoas 谢谢 ,经常抖动或者老选举是什么意思?
|
6
EmdeBoas 2017-04-17 23:46:37 +08:00
@anonymoustian 我说详细一点吧,我觉得 60s 1~2G 的 IO 单台机器应该是吃得消的,所以直接在采集机器上跑生产者 另外关于 zookeeper 因为只有这一个生产者,所以它的稳点性肯定很重要的, kafka 依赖于 zookeeper ,你可以在同一台机器上直接跑 zookeeper ,最好它能是 leader(因为生产者肯定会频繁请求事务,事务只有 leader 处理。 follower 只处理请求) ,这样消息延迟就会降低....不要抖动就是说你 zookeeper 服务器的网得稳定,频繁发生新的选举的话之前的请求和事务都会阻塞的,运气差还可能旧操作被丢弃... PS 我没上过实际生产环境....很多知识都是书上的,你参考就好.....
|
7
lujiajing1126 2017-04-18 00:20:05 +08:00
Flume 投递到 Kafka 集群,然后 Spark Streaming 直接从 Kafka 消费数据应该没啥问题吧
https://flume.apache.org/FlumeUserGuide.html#kafka-sink |
8
v2orz 2017-04-18 08:47:27 +08:00
如果是日志这种数据,一般是选择用 flume-->kafka-->spark
|
9
zacard 2017-04-18 10:38:06 +08:00
其他系统产生的日志->flume->spark->其他系统
|
10
snopy 2017-04-18 14:02:58 +08:00 1
参考 Spark+Redis ,我们公司每天实时分析处理 7~8 个 TB 的数据就是酱紫的架构, 10 台 Spark 集群, 3 台 Redis 集群
|