精华内容
下载资源
问答
  • flume和kafka区别

    2020-08-25 10:56:48
    kafka和flume都是日志系统,kafka是分布式消息中间件,自带存储;flume每一部分都是可以定制。kafka更合适做日志缓存,flume数据采集部分做的很好,可以定制很多数据源,减少开发量。kafka flume 都是日志系统,...

    kafka和flume都是日志系统,kafka是分布式消息中间件,自带存储;flume每一部分都是可以定制。kafka更合适做日志缓存,flume数据采集部分做的很好,可以定制很多数据源,减少开发量。

    kafkaflume 都是日志系统,kafka 是分布式消息中间件,自带存储,提供 push 和 pull 存取数据功能。flume 分为 agent(数据采集器),collector(数据简单处理和写入),storage(存储器)三部分,每一部分都是可以定制的。比如 agent 采用 RPC(Thrift-RPC)、text(文件)等,storage 指定用 hdfs 做。

    flume vs kafka

    kafka 做日志缓存应该是更为合适的,但是 flume 的数据采集部分做的很好,可以定制很多数据源,减少开发量。所以比较流行 flume+kafka 模式,如果为了利用 flume 写 hdfs 的能力,也可以采用 kafka+flume 的方式。

    采集层 主要可以使用 Flume, Kafka 两种技术。

    Flume:Flume 是管道流方式,提供了很多的默认实现,让用户通过参数部署,及扩展 API.

    Kafka:Kafka 是一个可持久化的分布式的消息队列。

    Kafka 是一个非常通用的系统。你可以有许多生产者和很多的消费者共享多个主题 Topics。相比之下,Flume 是一个专用工具被设计为旨在往 HDFS,HBase 发送数据。它对 HDFS 有特殊的优化,并且集成了 Hadoop 的安全特性。所以,Cloudera 建议如果数据被多个系统消费的话,使用 kafka;如果数据被设计给 Hadoop 使用,使用 Flume。

    正如你们所知 Flume 内置很多的 source 和 sink 组件。然而,Kafka 明显有一个更小的生产消费者生态系统,并且 Kafka 的社区支持不好。希望将来这种情况会得到改善,但是目前:使用 Kafka 意味着你准备好了编写你自己的生产者和消费者代码。如果已经存在的 Flume Sources 和 Sinks 满足你的需求,并且你更喜欢不需要任何开发的系统,请使用 Flume。

    Flume 可以使用拦截器实时处理数据。这些对数据屏蔽或者过量是很有用的。Kafka 需要外部的流处理系统才能做到。

    Kafka 和 Flume 都是可靠的系统,通过适当的配置能保证零数据丢失。然而,Flume 不支持副本事件。于是,如果 Flume 代理的一个节点崩溃了,即使使用了可靠的文件管道方式,你也将丢失这些事件直到你恢复这些磁盘。如果你需要一个高可靠行的管道,那么使用 Kafka 是个更好的选择。

    Flume 和 Kafka 可以很好地结合起来使用。如果你的设计需要从 Kafka 到 Hadoop 的流数据,使用 Flume 代理并配置 Kafka 的 Source 读取数据也是可行的:你没有必要实现自己的消费者。你可以直接利用 Flume 与 HDFS 及 HBase 的结合的所有好处。你可以使用 Cloudera Manager 对消费者的监控,并且你甚至可以添加拦截器进行一些流处理。

    Flume 和 Kafka 可以结合起来使用。通常会使用 Flume + Kafka 的方式。其实如果为了利用 Flume 已有的写 HDFS 功能,也可以使用 Kafka + Flume 的方式。

    展开全文
  • Welcome to Apache Flume! Apache Flume is a distributed, reliable, and available service for efficiently collecting, aggregating, and moving large amounts of log data. It has a simple and flexible ...
  • FlumeKafka区别

    2016-09-01 19:58:00
    今天开会讨论日志处理为什么要同时使用Flume和Kafka,是否可以只用Kafka 不使用Flume?当时想到的就只用Flume的接口多,不管是输入接口(socket 和 文件)以及输出接口(Kafka/HDFS/HBase等)。  考虑单一应用场景,从...

       今天开会讨论日志处理为什么要同时使用Flume和Kafka,是否可以只用Kafka 不使用Flume?当时想到的就只用Flume的接口多,不管是输入接口(socket 和 文件)以及输出接口(Kafka/HDFS/HBase等)。

       考虑单一应用场景,从简化系统的角度考虑,在满足应用需求的情况下可能只使用一个比较好。但是考虑到现有系统业务发展,为了后面的灵活扩展,在系统设计时留有一定的扩展性感觉更重要。可能使用Flume+kafka架构相对只使用Kafka会多占用1-2台机器做Flume日志采集,但是为了方便以后日志数据处理方式的扩展,可以采用Flume+kafka架构。

      Flume :管道 ----个人认为比较适合有多个生产者场景,或者有写入Hbase、HDFS和kafka需求的场景。

      Kafka :消息队列-----由于Kafka是Pull模式,因此适合有多个消费者的场景。

      目前应用场景,一台日志转发机负责产生日志。后端需要通过Strom消费日志信息,建议可以设置成log-->Kafka->Strom.如果以后有写入Hbase或者HDFS的需求可以,在Kafka后面再接上Strom,或者在日志转发机上直接日志落地,由Flume去读取日志消息。

     

    参考:

      Kafka与Flume区别

      Kafka与Flume对比

     基于Flume的美团日志收集系统

      Using Flume要点

    转载于:https://www.cnblogs.com/ibyte/p/5830715.html

    展开全文
  • Flume和Kafka区别

    2020-03-01 22:42:47
    Flume和Kafka都是分布式日志采集系统,但是两者其实差别很大,使用场景和很大 Flume Flume是Cloudera(就是那个CDH)公司开发的,是一个日志采集系统, Flume本质上自己不存储数据,他是接收数据,然后转发(Sink)...

    Flume和Kafka都是分布式日志采集系统,但是两者其实差别很大,使用场景和很大

    • Flume

      • Flume是Cloudera(就是那个CDH)公司开发的,是一个日志采集系统,
      • Flume本质上自己不存储数据,他是接收数据,然后转发(Sink)数据,可以Sink到很多地方,Hdfs,数据库,文件,基本包含大部分格式,而且还可以自定义目的地
      • 本质上Flume就是一个管道,类似于自来水管,Flume作为“水管”,自己不会主动"抽水",而是等着外部把谁接进来。然后经过Flume“水管”,可以流向很多地方,并且Flume里面可以定制一些简单的数据处理,一份数据可以同时Sink到不同的地方
      • Flume 数据安全性要求不高,没有备份也有没有副本,就是作为一个数据接收和传输器,一般用于外部数据(log,netcat等等)接入到Hadoop生态圈里面(Hdfs,Hive,HBase)
    • Kafka

      • Kafka是Linkin开发的,也属于日志采集系统的范畴,但细化来讲是一个消息队列中间件
      • Kafka可以持久化存储数据,并且有副本,不过一般会设置数据的时效性,所以也可以说是数据缓存系统;
      • 相比于Flume是管道"水管",Kafka则类似于容器“蓄水池”,“蓄水池”终究是暂时储水的地方,具体使用还得看下游(消费者)情况,那具体下游消费用来干嘛Kafka就管不着(有的人拿桶,一桶一桶来装,有的人拿水管来),相比于Flume,则需要定义Sink到什么地方
      • 虽然类比于“蓄水池”,但是水池里面的别人装走了就少了,而Kafka不同,下游consumers消费数据并不会删除数据,下游消费不过来就先存着,数据可以很多不同的consumers来他们消费互不干扰,消费速度也可以不一样;
    • 常用的架构模型

      • 线上数据(日志数据) => Flume =>Kafka => SparkStreaming(Flink、Storm)等实时场景
      • 线上数据(日志数据) => Flume =>HDFS/HBase/数据库=>离线Spark,MR等离线处理场景
      • 线上数据=>Flume=>Kafka=>Hdfs、HBase
    展开全文
  • Flume提供了从console(控制台)、RPC(Thrift-RPC)、text(文件)、tail(UNIX tail)、syslog(syslog日志系统),支持TCPUDP等2种模式),exec(命令执行)等数据源上收集数据的能力。 Flume可以将应用产生的...


    FLUME

    是一个海量日志收集系统。

    Flume提供了从console(控制台)、RPC(Thrift-RPC)、text(文件)、tail(UNIX tail)、syslog(syslog日志系统),支持TCP和UDP等2种模式),exec(命令执行)等数据源上收集数据的能力。

     

    Flume可以将应用产生的数据存储到任何集中存储器中,比如HDFS,HBase

     

    Flume的结构

    Agent主要由:source(源),channel(渠道),sink(洗涤槽;)三个组件组成.

     

    sink

    水池; 洗涤槽; 污水坑;

    淹没; 下落;  

     

    Source:

    从数据发生器接收数据,并将接收的数据以Flumeevent格式传递给一个或者多个通道channal,Flume提供多种数据接收的方式,比如Avro,Thrift,twitter1%

    Channel:

    channal是一种短暂的存储容器,它将从source处接收到的event格式的数据缓存起来,直到它们被sinks消费掉,它在sourcesink间起着一共桥梁的作用,channal是一个完整的事务,这一点保证了数据在收发的时候的一致性. 并且它可以和任意数量的sourcesink链接. 支持的类型有: JDBC channel , File System channel , Memort channel.

    sink:

    sink将数据存储到集中存储器比如HbaseHDFS,它从channals消费数据(events)并将其传递给目标地. 目标地可能是另一个sink,也可能HDFS,HBase.

    ==

    Flume 与Kafka区别

       今天开会讨论日志处理为什么要同时使用Flume和Kafka,是否可以只用Kafka 不使用Flume?当时想到的就只用Flume的接口多不管是输入接口(socket 和 文件)以及输出接口(Kafka/HDFS/HBase等)。

       考虑单一应用场景,从简化系统的角度考虑,在满足应用需求的情况下可能只使用一个比较好。但是考虑到现有系统业务发展,为了后面的灵活扩展,在先用系统设计时留有一定的扩展性感觉更重要,可能使用Flume+kafka架构相对只使用Kafka会多占用1-2台机器做Flume日志采集,但是为了方便以后日志数据处理方式的扩展,可以采用Flume+kafka架构

      Flume :管道 ----个人认为比较适合有多个生产者场景,或者有写入Hbase、HDFS和kafka需求的场景

      Kafka :消息队列-----由于Kafka是Pull模式,因此适合有多个消费者的场景。

      目前应用场景,一台日志转发机负责产生日志。后端需要通过Strom消费日志信息,建议可以设置成log-->Kafka->Strom.如果以后有写入Hbase或者HDFS的需求可以,在Kafka后面再接上Strom,或者在日志转发机上直接日志落地,由Flume去读取日志消息。

    ==

    关于Flume 的 一些核心概念:

    组件名称    功能介绍
    Agent代理使用JVM 运行Flume。每台机器运行一个agent,但是可以在一个agent中包含多个sources和sinks。
    Client客户端生产数据,运行在一个独立的线程。
    Source源从Client收集数据,传递给Channel。
    Sink接收器从Channel收集数据,进行相关操作,运行在一个独立线程。
    Channel通道连接 sources 和 sinks ,这个有点像一个队列。
    Events事件传输的基本数据负载。








    --

    flume翻译

    水槽    [flu:m]

    --

    Flume+kafka 整合


    flume安装目录conf下新建kafka.properties文件,启动时也应当用此配置文件作为参数启动。下面看具体内容:

    1. kafka.properties:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    agent.sources = s1                                                                                                                  
    agent.channels = c1                                                                                                                 
    agent.sinks = k1                                                                                                                    
                                                                                                                                          
    agent.sources.s1.type=exec                                                                                                          
    agent.sources.s1.command=tail -F /tmp/logs/kafka.log                                                                                
    agent.sources.s1.channels=c1                                                                                                        
    agent.channels.c1.type=memory                                                                                                       
    agent.channels.c1.capacity=10000                                                                                                    
    agent.channels.c1.transactionCapacity=100                                                                                           
                                                                                                                                          
    #设置Kafka接收器                                                                                                                    
    agent.sinks.k1.type= org.apache.flume.sink.kafka.KafkaSink                                                                          
    #设置Kafka的broker地址和端口号                                                                                                      
    agent.sinks.k1.brokerList=master:9092                                                                                               
    #设置Kafka的Topic                                                                                                                   
    agent.sinks.k1.topic=kafkatest                                                                                                      
    #设置序列化方式                                                                                                                     
    agent.sinks.k1.serializer.class=kafka.serializer.StringEncoder                                                                      
                                                                                                                                          
    agent.sinks.k1.channel=c1    

    关于配置文件中注意3点:

      a.  agent.sources.s1.command=tail -F /tmp/logs/kafka.log   

      b.  agent.sinks.k1.brokerList=master:9092

      c . agent.sinks.k1.topic=kafkatest 

    2.很明显,由配置文件可以了解到:

      a.我们需要在/tmp/logs下建一个kafka.log的文件,且向文件中输出内容(下面会说到);

      b.flume连接到kafka的地址是 master:9092,注意不要配置出错了;

      c.flume会将采集后的内容输出到Kafka topic 为kafkatest上,所以我们启动zk(zookeeper),kafka后需要打开一个终端消费topic kafkatest的内容。这样就可以看到flume与kafka之间玩起来了~~

    具体操作:

      a.在/tmp/logs下建立空文件kafka.log。在mfz 用户目录下新建脚本kafkaoutput.sh(一定要给予可执行权限),用来向kafka.log输入内容: kafka_test***

      

    1
    2
    3
    for((i=0;i<=1000;i++));
    do echo "kafka_test-"+$i>>/tmp/logs/kafka.log;
    done

      b. 在kafka安装目录下执行如下命令,启动zk,kafka 。

    1
    bin/zookeeper-server-start.sh -daemon config/zookeeper.properties &
    1
    bin/kafka-server-start.sh -daemon config/server.properties &

    c.新增Topic kafkatest

    bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic kafkatest 

     d.打开新终端,在kafka安装目录下执行如下命令,生成对topic kafkatest 的消费

    bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic kafkatest --from-beginning --zookeeper master

    e.启动flume

    1
    bin/flume-ng agent --conf-file  conf/kafka.properties -c conf/ --name agent -Dflume.root.logger=DEBUG,console

       d.执行kafkaoutput.sh脚本(注意观察kafka.log内容及消费终端接收到的内容)

      e.查看新终端消费信息

    整体流程如图:

    ==

     使用Flume+Kafka+SparkStreaming进行实时日志分析


    每个公司想要进行数据分析或数据挖掘,收集日志、ETL都是第一步的,今天就讲一下如何实时地(准实时,每分钟分析一次)收集日志,处理日志,把处理后的记录存入Hive中,并附上完整实战代码

    1. 整体架构

    思考一下,正常情况下我们会如何收集并分析日志呢?

    首先,业务日志会通过Nginx(或者其他方式,我们是使用Nginx写入日志)每分钟写入到磁盘中,现在我们想要使用Spark分析日志,就需要先将磁盘中的文件上传到HDFS上,然后Spark处理,最后存入Hive表中,如图所示:

    这里写图片描述

    我们之前就是使用这种方式每天分析一次日志,但是这样有几个缺点:

    首先我们的日志是通过Nginx每分钟存成一个文件,这样一天的文件数很多,不利于后续的分析任务,所以先要把一天的所有日志文件合并起来

    合并起来以后需要把该文件从磁盘传到Hdfs上,但是我们的日志服务器并不在Hadoop集群内,所以没办法直接传到Hdfs上,需要首先把文件从日志服务器传输到Hadoop集群所在的服务器,然后再上传到Hdfs

    最后也是最重要的,滞后一天分析数据已经不能满足我们新的业务需求了,最好能控制在一个小时的滞后时间

    可以看出来我们以前收集分析日志的方式还是比较原始的,而且比较耗时,很多时间浪费在了网络传输上面,如果日志量大的话还有丢失数据的可能性,所以在此基础上改进了一下架构:

    这里写图片描述

    整个过程就是,Flume会实时监控写入日志的磁盘,只要有新的日志写入,Flume就会将日志以消息的形式传递给Kafka,然后Spark Streaming实时消费消息传入Hive

    那么Flume是什么呢,它为什么可以监控一个磁盘文件呢?简而言之,Flume是用来收集、汇聚并且移动大量日志文件的开源框架,所以很适合这种实时收集日志并且传递日志的场景

    Kafka是一个消息系统,Flume收集的日志可以移动到Kafka消息队列中,然后就可以被多处消费了,而且可以保证不丢失数据

    通过这套架构,收集到的日志可以及时被Flume发现传到Kafka,通过Kafka我们可以把日志用到各个地方,同一份日志可以存入Hdfs中,也可以离线进行分析,还可以实时计算,而且可以保证安全性,基本可以达到实时的要求

    整个流程已经清晰了,下面各个突破,我们开始动手实现整套系统

    2. 实战演练

    2.1 安装Kafka

    下载安装Kafka以及一些基本命令请传送到这里: Kafka安装与简介

    安装好以后新建名为launcher_click的topic:

    bin/kafka-topics.sh --create --zookeeper hxf:2181,cfg:2181,jqs:2181,jxf:2181,sxtb:2181 --replication-factor 2 --partitions 2 --topic launcher_click
    • 1

    查看一下该topic:

    bin/kafka-topics.sh --describe --zookeeper hxf:2181,cfg:2181,jqs:2181,jxf:2181,sxtb:2181 --topic launcher_click
    • 1

    这里写图片描述

    2.2 安装Flume

    1、下载解压

    下载地址: https://flume.apache.org/download.html 
    注意进入下载地址页面,使用清华大学的那个地址,否则会很慢

    wget http://apache.fayea.com/flume/1.7.0/apache-flume-1.7.0-bin.tar.gz
    tar -xvf apache-flume-1.7.0-bin.tar.gz
    • 1
    • 2

    2、修改配置文件

    进入flume目录,修改conf/flume-env.sh

    export JAVA_HOME=/data/install/jdk
    export JAVA_OPTS="-Xms1000m -Xmx2000m -Dcom.sun.management.jmxremote"
    • 1
    • 2

    添加配置文件:conf/flume_launcherclick.conf

    # logser可以看做是flume服务的名称,每个flume都由sources、channels和sinks三部分组成
    # sources可以看做是数据源头、channels是中间转存的渠道、sinks是数据后面的去向
    logser.sources = src_launcherclick
    logser.sinks = kfk_launcherclick
    logser.channels = ch_launcherclick
    
    # source
    # 源头类型是TAILDIR,就可以实时监控以追加形式写入文件的日志
    logser.sources.src_launcherclick.type = TAILDIR
    # positionFile记录所有监控的文件信息
    logser.sources.src_launcherclick.positionFile = /data/install/flume/position/launcherclick/taildir_position.json
    # 监控的文件组
    logser.sources.src_launcherclick.filegroups = f1
    # 文件组包含的具体文件,也就是我们监控的文件
    logser.sources.src_launcherclick.filegroups.f1 = /data/launcher/stat_app/.*
    
    # interceptor
    # 写kafka的topic即可
    logser.sources.src_launcherclick.interceptors = i1 i2
    logser.sources.src_launcherclick.interceptors.i1.type=static
    logser.sources.src_launcherclick.interceptors.i1.key = type
    logser.sources.src_launcherclick.interceptors.i1.value = launcher_click
    logser.sources.src_launcherclick.interceptors.i2.type=static
    logser.sources.src_launcherclick.interceptors.i2.key = topic
    logser.sources.src_launcherclick.interceptors.i2.value = launcher_click
    
    # channel
    logser.channels.ch_launcherclick.type = memory
    logser.channels.ch_launcherclick.capacity = 10000
    logser.channels.ch_launcherclick.transactionCapacity = 1000
    
    # kfk sink
    # 指定sink类型是Kafka,说明日志最后要发送到Kafka
    logser.sinks.kfk_launcherclick.type = org.apache.flume.sink.kafka.KafkaSink
    # Kafka broker
    logser.sinks.kfk_launcherclick.brokerList = 10.0.0.80:9092,10.0.0.140:9092
    
    # Bind the source and sink to the channel
    logser.sources.src_launcherclick.channels = ch_launcherclick
    logser.sinks.kfk_launcherclick.channel = ch_launcherclick
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40

    3、启动

    nohup bin/flume-ng agent --conf conf/ --conf-file conf/flume_launcherclick.conf --name logser -Dflume.root.logger=INFO,console >> logs/flume_launcherclick.log &
    • 1

    此时Kafka和Flume都已经启动了,从配置可以看到Flume的监控文件是/data/launcher/stat_app/.*,所以只要该目录下文件内容有增加就会发送到Kafka,大家可以自己追加一些测试日志到这个目录的文件下,然后开一个Kafka Consumer看一下Kafka是否接收到消息,这里我们完成SparkStreaming以后再看测试结果

    2.3 SparkStreaming编程

    SparkStreaming是Spark用来处理实时流的,能够实时到秒级,我们这里不需要这么实时,是每分钟执行一次日志分析程序,主要代码如下:

      def main(args: Array[String]) {
    
        Logger.getLogger("org.apache.spark").setLevel(Level.WARN)
        System.setProperty("spark.serializer", "org.apache.spark.serializer.KryoSerializer")
        val sparkConf = new SparkConf().setAppName("LauncherStreaming")
    
        //每60秒一个批次
        val ssc = new StreamingContext(sparkConf, Seconds(60))
    
        // 从Kafka中读取数据
        val kafkaStream = KafkaUtils.createStream(
          ssc,
          "hxf:2181,cfg:2181,jqs:2181,jxf:2181,sxtb:2181", // Kafka集群使用的zookeeper
          "launcher-streaming", // 该消费者使用的group.id
          Map[String, Int]("launcher_click" -> 0, "launcher_click" -> 1), // 日志在Kafka中的topic及其分区
          StorageLevel.MEMORY_AND_DISK_SER).map(_._2) // 获取日志内容
    
        kafkaStream.foreachRDD((rdd: RDD[String], time: Time) => {
          val result = rdd.map(log => parseLog(log)) // 分析处理原始日志
            .filter(t => StringUtils.isNotBlank(t._1) && StringUtils.isNotBlank(t._2))
          // 存入hdfs
          result.saveAsHadoopFile(HDFS_DIR, classOf[String], classOf[String], classOf[LauncherMultipleTextOutputFormat[String, String]])
        })
    
        ssc.start()
        // 等待实时流
        ssc.awaitTermination()
      }
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28

    篇目有限,完整代码访问我的github:https://github.com/Trigl/SparkLearning/blob/master/src/main/scala/com/trigl/spark/streaming/LauncherStreaming.scala

    然后打包上传到master运行:

    nohup /data/install/spark-2.0.0-bin-hadoop2.7/bin/spark-submit  --master spark://hxf:7077  --executor-memory 1G --total-executor-cores 4   --class com.analysis.main.LauncherStreaming --jars /home/hadoop/jar/kafka-clients-0.10.0.0.jar,/home/hadoop/jar/metrics-core-2.2.0.jar,/home/hadoop/jar/zkclient-0.3.jar,/home/hadoop/jar/spark-streaming-kafka-0-8_2.11-2.0.0.jar,/home/hadoop/jar/kafka_2.11-0.8.2.1.jar  /home/hadoop/jar/SparkLearning.jar  >> /home/hadoop/logs/LauncherDM.log &
    • 1

    然后开始测试,往Flume监控目录/data/launcher/stat_app/.*写日志,原始日志内容类似下面这样:

    118.120.102.3|1495608541.238|UEsDBBQACAgIACB2uEoAAAAAAAAAAAAAAAABAAAAMGWUbW7bMAyGb6NfnUFRFEWhJ+gBdgBZVjpjjp04brMAO*yY2DKa9Y+B1+DnQ1LCztoITgK4wPGHfNUhmKGUPOn3DyP*zdOxSWM3T33XXMqy9OP7xXTZiTC1xlL0HgMEi+BfHoooBEGKr3fPpYy5jMse4Xzupus4TKkrs4kZOhI51CgWWKxsUQBRPMDr1*w5Hcuc0LiUEFBwdXQxAARXHb3+QXlOfzya0uZWOGwlEwBDwLD5oJBVFHsEEPF2U0EUToyr8k4tg9v8AkRrIcKmxGsU2eqQIM45dKuKFICo5oveEqOjh2JAIITImyIJqBk3JS4qh7Wby*TroxnL9ZKHXrsyWeBQoMXaEgXUKh6mOQ1l7NLc*Hwz8aDpAtndLFJEetkVc6S9V*bg+RFiKMvnTv6ahuGUTmWexqEfi3Elezx0botJrCCQn5jfCzWaqaUOqNpFYO23ckYl5GOlx4rLQuUllh27SsjZyLQTUn4K+3uVczlOi+7uuMzTYLoibeIspk71DtKuJC+7T5qXPg9lLddaZs6+Lolnj7ANW0dBGKOn72m3cbQJI2Kq4*C6Xhz9E5Pzeeg*i2l1IAJtpReILNq6DY4peFjHeO5vffPZd2UyejEJ28Puo0sI*2*5ojvhfNcquWomFMVp02Pz++M6Nach3e6XR5wOlrdSg4T7RkgtQAuC6HYl2sc62i6dUq*om+HWjvdHAPSk8hYkegHraxC8PwPons73XZeozDfXmaRzzzaD2XI4fX0QX*8BUEsHCKeftc48AgAAmQQAAA==
    • 1

    查看HDFS的对应目录是否有内容:

    这里写图片描述

    HDFS存储的分析后的日志内容如下:

    99000945863664;864698037273329|119.176.140.248|1495594615129|2017-05-24 10:56:55|xiaomi|redmi4x|com.jingdong.app.mall&0ae359b6&1495534579412&1;com.autonavi.minimap&279f562f&1495534597934,1495534616627&2;com.android.contacts&91586932&1495538267103,1495540527138,1495576834653,1495583404117,1495591231535&5
    • 1

    SparkStreaming任务状态如下:

    这里写图片描述

    可以看到的确是每分钟执行一次

    ==

    相关文章:

    大数据系列之Kafka安装 

    大数据系列之Flume--几种不同的Sources

    大数据系列之Flume+HDFS

    ==

    1
    bin/zookeeper-server-start.sh -daemon config/zookeeper.properties &
    1
    bin/kafka-server-start.sh -daemon config/server.properties &
    展开全文
  • Flume:是Cloudera提供的一个分布式的海量日志采集、聚合传输的系统; Kafka:是一种高吞吐量的分布式发布订阅消息系统; 各特点: 场景: Flume主要是HDFS\HBase结合,有特殊优化效率更好; Kafka 是一...
  • Flume和Kafka区别与联系

    千次阅读 2019-03-06 21:35:20
    flume一般用于日志采集,可以定制很多数据源,减少开发量,基本架构是一个flume进程agent(source、拦截器、选择器、channel<Memory Channel、File Channel>、sink),其中传递的是原子性的event数据; 使用...
  • Kafka (Apache 分布式消息系统),主要是作为一个中间件系统的方式存在,适合高吞吐量负载的情况,可以作为业务系统中的缓存、消息通知系统、数据收集等场景。 为什么还需要Flume作为日志收集系统? 主要原因:...
  • 日志采集系统flume和kafka区别及联系: https://blog.csdn.net/helloxiaozhe/article/details/79481319 日志采集系统flume和kafka有什么区别及联系,它们分别在什么时候使用,什么时候又可以结合? 观点一: ...
  • 日志采集系统flume和kafka有什么区别及联系,它们分别在什么时候使用,什么时候又可以结合?   观点一: 简言之:这两个差别很大,使用场景区别也很大。 先说flume: 日志采集。线上数据一般主要是落地文件...
  • 日志采集系统flume和kafka有什么区别及联系,它们分别在什么时候使用,什么时候又可以结合? 观点一: 简言之:这两个差别很大,使用场景区别也很大。 先说flume: 日志采集。线上数据一般主要是落地文件或者通过...
  • 首先Flume和Kafka都是消息系统,但是它俩也有着很多不同的地方,Flume更趋向于消息采集系统,而Kafka更趋向于消息缓存系统。 【一】设计上的不同  Flume是消息采集系统,它主要解决问题是消息的多元采集。因此...
  • 这种情况下,你很难推动线上应用或服务去修改接口,直接向kafka里写数据。这时候你可能就需要flume这样的系统帮你去做传输。  对于数量级别,做过单机upd的flume source的配置,100+M/s数据量,10w qps flume就开始...
  • kafka架构图flume架构图日志采集系统flume和kafka有什么区别及联系,它们分别在什么时候使用,什么时候又可以结合?观点一:简言之:这两个差别很大,使用场景区别也很大。先说flume:日志采集。线上数据一般主要是...
  • 日志采集系统flume和kafka有什么区别及联系,它们分别在什么时候使用,什么时候又可以结合?观点一:简言之:这两个差别很大,使用场景区别也很大。先说flume:日志采集。线上数据一般主要是落地文件或者通过socket...
  • FlumeKafka集成

    2018-12-29 15:11:36
    Flume:cloudera公司研发,适合多个生产者(多个生产者对应多个agent),适合下游消费者不多的情况(因为每个消费者对应一个sink一个chanel),适合数据安全性要求不高的操作(数据保存在内存中),适合与Hadoop生态圈...
  • kafka和flume区别

    2020-07-16 10:37:23
    Flume更趋向于消息采集系统,Kafka更趋向于消息缓存系统。... flume:用来做数据采集落地,目前使用的是flume-ng,流程是source(kafka)->channel->hdfs 相比较kafka比较轻量级 ,就是一个数据的流通管道,当..
  • 使用tail -F xxx.log来监控文件名称,理解tail -ftail -F的区别。将采集的日志文件保存到Kafka中。(source)输入:tail -F xxx.log(channel)存储:内存(sink)输出:Kafkaconfig样例,a1.source = s1 a1.channel = ...
  • 浅谈Kafka和flume区别

    2020-04-01 14:20:55
    浅谈Kafka和flume的应用场景 kafka kafka主要应用于消息队列,就是将数据分发给各个消费者 flume flume主要还是一个信息的收集,然后再将这些信息存储到数据库中 区别 这两个完全是两个概念,区别也是很大,只是这样...
  • kafka和flume区别和对比使用

    千次阅读 2017-12-13 10:47:01
    (1)kafka和flume都是日志系统。kafka是分布式消息中间件,自带存储,提供pushpull存取数据功能。flume分为agent(数据采集器),collector(数据简单处理写入),storage(存储器)三部分,每一部分都是可以定制...
  • KafkaFlume 很多功能确实是重复的。以下是评估两个系统的一些建议:Kafka 是一个通用型系统。你可以有许多的生产者消费者分享多个主题。相反地,Flume 被设计成特定用途的工作,特定地向 HDFS HBase 发送...
  • Spark Streaming 和Kafka Stream 区别

    千次阅读 2019-10-22 19:56:18
    想了解SparkStreaming 和Kafka Stream的区别,首先我们需要先了解一下Spark Streaming和Kafka Stream. 什么是Spark Streaming? Spark Streaming是核心Spark API的扩展,可让其用户执行实时数据流的流处理。它从...
  • KafkaFlume的异同点

    2018-11-10 20:30:48
    Kafka和flume作为数据采集通道的区别: 将数据从某一个数据源导入HDFS或者HBase,Kafka是一个半成品,需要自己完成消费者程序的编写,而flume只需要改配置就可以导数据进入HDFS或者HBase,相当于Flume自身包含了消费...
  • Flume相关

    2021-02-28 15:44:43
    4.flume和kafka采集日志区别,采集日志时中间停了,怎么记录之前的日志。 1.flume管道内存,flume宕机了数据丢失怎么解决 解答: 1、Flume的channel分为很多种,可以将数据写入到文件 2、防止非首个agent宕机的...
  • 文章目录一、Flume 采集数据会丢失...五、flume kafka 采集日志区别,采集日志时中间停了,怎么记录之前的日志?六、flume 有哪些组件,flume 的 source、channel、sink 具体是做什么的?七、为什么使用Flume?八...
  • 8.数据类型:hivemysql的区别 9.事务理论 10.创建表支持事务 11.创建表的所有方法 12.分区的操作 13.导入导出 14.查询语句(对比mysql查询来操作) 15.窗口函数,特殊的查询:Grouping set,Grouping__ID,...
  • apache版本的flume和cdh版本的flume在配置上是有一些区别的需要注意: 例如:cdh版本1.6.0-cdh5.7.0中kafka sink 的配置中是brokerList,但是apache 1.7.0中是kafka.bootstrap.servers ...
  • 现在系统中集成的是Fluem + elastaticSearch + 还有influxdb,如果基于这些做日志分析的话,就可能需要使用Flume + kafka + elastaticSearch但是我对比了一下Flume和logstash 他们共同的特点是支持的采集方式很全,...

空空如也

空空如也

1 2 3
收藏数 56
精华内容 22
关键字:

flume和kafka区别