Flume和Kafka的区别与联系「建议收藏」

Flume和Kafka的区别与联系「建议收藏」目录区别点一:区别点二:同样是流式数据采集框架,flume一般用于日志采集,可以定制很多数据源,减少开发量,基本架构是一个flume进程agent(source、拦截器、选择器、channel<MemoryChannel、FileChannel>、sink),其中传递的是原子性的event数据;使用双层Flume架构可以实现一层数据采集,一层数据集合;Flu…

大家好,又见面了,我是你们的朋友全栈君。

目录

区别点一:

区别点二:


同样是流式数据采集框架,

flume一般用于日志采集,可以定制很多数据源,减少开发量,基本架构是一个flume进程agent(source、拦截器、选择器、channel<Memory Channel、File Channel>、sink),其中传递的是原子性的event数据;

使用双层Flume架构可以实现一层数据采集,一层数据集合;

Flume的概念、基本架构

kafka一般用于日志缓存,是一个可持久的分布式消息队列,自带存储,提供push和pull两种存储数据功能;包括producer、kafkaCluster(broker:topic、partition)、consumer,依赖于Zookeeper(brokerid、topic、partition元数据存在ZNode,partition选举leader依赖Zookeeper);

Kafka的概念、基本架构

区别点一:

flume和kafka的侧重点不同,

而flume追求的是数据和数据源、数据流向的多样性,适合多个生产者的场景;flume有自己内置的多种source和sink组件,具体操作方式是编写source、channel和sink的.conf配置文件,开启flume组件的时候用命令关联读取配置文件实现;

# 开启flume的脚本部分:

$FLUME_HOME/bin/flume-ng 
agent
 -c $FLUME_HOME/conf
 -f $JOB_HOME/flume-hdfs.conf
 -n agent-hdfs
 -Dflume.root.logger=info,
 console >$FLUME_HOME/logs/flume-hdfs.log  2>&1 &

-c:flume启动读取的配置文件flume-env.sh(指定JDK路径)存储在/conf目录中
-f:编写好source、interceptor、selector、channel和sink的配置文件flume-hdfs.conf的存储目录
-n:表示给flume-hdfs.conf中的agent起名为agent-hdfs
--------------------以下可不写-------------------
-D:表示flume运行时动态修改flume.root.logger参数属性值,并将控制台日志打印级别设置为INFO级别。日志级别包括:log、info、warn、error,仅为Debug使用,生产环境一般不用
console:打印日志发送路径

kafka追求的是高吞吐,高负载,同一topic下可以有多个partition,由于是pull模式拉取数据,因此适合多个消费者的场景;kafka没有内置的producer和consumer组件,需要自己编写代码。

区别点二:

flume和kafka的定位有所不同:

1. flume

cloudera公司研发,适合多个生产者;

适合下游数据消费者不多的情况;(一个消费者开一个channel)

适合数据安全性要求不高的操作;(数据没有备份、没有副本)

适合与Hadoop生态圈对接的操作。(HDFS、Hbase等)

适合生产和收集数据

 

2. kafka

linkedin公司研发,适合多个消费者;

适合数据下游消费众多的情况;(kafka从磁盘读,并且只找Leader读)

适合数据安全性要求较高的操作,支持replication(多副本)。

适合消费数据

 

因此工作中常用的一种模型是:

线上数据 –> flume –> kafka –> HDFS –> hive/MR计算

                                              –> SparkStreaming计算

也有kafka与springboot组合,采集数据后交给sparkStreaming进行流式计算

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/152345.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • windows在当前目录打开命令行_在当前目录打开命令行

    windows在当前目录打开命令行_在当前目录打开命令行首先,按下快捷键win+R,然后输入cmd,回车,这样就打开了命令行如上图,默认打开之后都是在C盘,接下来输入cd/,回车,接着输入要去的目录,比如我要打开我的D盘,输入d:回车然后我要打开D盘下的某一目录,比如我要打开D/Vscode文件夹/node这个目录:输入cdVscode文件夹,回车,继续输入cdnode,回车这种单个打开的方法虽然没问题,但是这样显得我们和计算机都有点迟钝,那有没有可以直接一次性打开根目录的方法呢?…

    2022年10月15日
    0
  • MySQL EXPLAIN执行计划详解

    MySQL EXPLAIN执行计划详解详细介绍了MySQLEXPLAIN执行计划的各个字段的含义以及使用方式。

    2022年10月17日
    0
  • c语言编程a4988驱动步进电机,A4988 步进电机驱动模块测试[通俗易懂]

    c语言编程a4988驱动步进电机,A4988 步进电机驱动模块测试[通俗易懂]A4988控制逻辑简单,主要分为睡眠、正反转、复位、使能、细分等模式控制。(1)睡眠模式:Sleep管脚电平置0,进入睡眠模式,驱动器输出待机模式;Sleep管脚置1,驱动器处于正常工作状态;(2)正反转模式:正转模式DIR管脚置0或1,反转模式置1或0;(3)复位模式:复位模式下容易消耗能量,产生的冲击电流较大。直接RESET管脚置1,在不影响系统工作时RESET管脚置0复位。一旦驱动芯片复位,…

    2022年6月17日
    23
  • nextline函数_Java中的nextline()函数与next()问题

    nextline函数_Java中的nextline()函数与next()问题【写在前面】importJava.util.*;Scannerin=newScanner(http://System.in);【出现的问题】在循环中相连的nextLine();会出现第一个nextLine();跳过的问题.就像这个样子://部分代码for(inti=0;iSystem.out.println();Stringname=in.nextLine();System.o…

    2022年6月6日
    28
  • 文件锁的使用浅析_文件加密软件

    文件锁的使用浅析_文件加密软件概述在多数unix系统中,当多个进程/线程同时编辑一个文件时,该文件的最后状态取决于最后一个写该文件的进程。对于有些应用程序,如数据库,各个进程需要保证它正在单独地写一个文件。这时就要用到文件锁。文件锁(也叫记录锁)的作用是,当一个进程读写文件的某部分时,其他进程就无法修改同一文件区域。能够实现文件锁的函数主要有2个:flock和fcntl。早期的伯克利版本只支持flock,该…

    2022年4月19日
    61
  • python读取指定内存_更改python保存路径

    python读取指定内存_更改python保存路径importosimportsysfromctypesimport*windll.kernel32.WriteProcessMemory.argtypes=[c_void_p,c_void_p,c_void_p,c_int,c_void_p]windll.kernel32.WriteProcessMemory.restype=c_void…

    2022年9月4日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号