zoukankan      html  css  js  c++  java
  • Flume+Kafka整合使用

    一、背景

    Flume和Kafka都是Apache的开源项目。

    1.Flume的优点和适用场景

    支持的数据源较多、可自定义网络请求的安全配置(filter)

    适合下游数据消费者不多的情况(一个消费者开一个channel)
    适合数据安全性要求不高的操作(数据没有备份、没有副本)
    适合与Hadoop生态圈对接的操作(HDFS、Hbase等)

    2.Kafka的优点和适用场景

    高负载、高可用、数据安全性高

    适合数据下游消费众多的情况(kafka从磁盘读,并且只找Leader读)
    适合数据安全性要求较高的操作,支持replication(多副本)

    3.Flume的缺点

    (1) 没有提供高可用机制(整合ZooKeeper)。当然,可以自行实现,但增加了成本

    (2) 多数场景是配置成把数据保存在内存,如果内存爆了或突然宕机,数据容易丢失

    (3) 如果配置成把数据保存在硬盘,没有分区(Partition)和冗余副本(Replication),大数据场景不适合单独使用

    4.Kafka的缺点

    (1) 旧版本的Kafka的接收端性能比Flume差

    (2) 支持接收的数据源没Flume多

    (3) 没有内置的过滤器(filter),例如,请求的过滤器。当然,可以自行实现,但增加了成本

    5.整合使用

    大数据场景下有3种选择:

    (1) 数据发送端 -> Flume -> Kafka -> HBase/Hive/Solr/ES

    (2) 数据发送端 -> Flume -> Kafka -> Java程序 -> HBase/Hive/Solr/ES

    (3) 数据发送端 -> Flume -> Kafka -> Spark/Storm/Flink -> HBase/Hive/Solr/ES

    二、预安装和部署

    1.硬件环境

    假设有4台机,IP及主机名如下:

    192.168.100.105 c1
    192.168.100.110 c2
    192.168.100.115 c3
    192.168.100.120 c4

    Flume只部署在c1机,Kafka在4台机都部署。

    2.软件环境

    操作系统:Ubuntu Server 18.04

    JDK:1.8.0

    3.Flume的安装与部署

    https://www.cnblogs.com/live41/p/15554223.html

    4.Kafka的安装与部署

    https://www.cnblogs.com/live41/p/15522443.html

    三、整合配置

    * 先登录root账号再进行以下操作

    1.修改Flume配置

    vim /home/flume/conf/flume-conf

    把原来的配置修改为:

    # Name the components on this agent
    a1.sources = r1
    a1.sinks = k1
    a1.channels = c1
    
    # Describe/configure the source
    # 如果是用Java通过Flume API发送数据,把netcat改成avro a1.sources.r1.type
    = netcat
    a1.sources.r1.bind
    = c1 a1.sources.r1.port = 44444 # Describe the sink a1.sinks.k1.type = org.apache.flume.sink.kafka.KafkaSink a1.sinks.k1.topic = topic1 a1.sinks.k1.kafka.bootstrap.servers = c1:9092,c2:9092,c3:9092 a1.sinks.k1.serializer.class = kafka.serializer.StringEncoder # Use a channel which buffers events in memory a1.channels.c1.type = memory a1.channels.c1.capacity = 1000 a1.channels.c1.transactionCapacity = 100 # Bind the source and sink to the channel a1.sources.r1.channels = c1 a1.sinks.k1.channel = c1

    四、操作

    1.启动ZooKeeper

    * 在每台机都要执行

    zkServer.sh start

    2.启动Kafka

    * 在每台机都要执行

    kafka-server-start.sh -daemon /home/kafka/config/server.properties

    3.创建topic并启动topic的监听

    * 在c2机执行

    这里topic的名字是topic1

    kafka-topics.sh --create --bootstrap-server c1:9092 --topic topic1 --partitions 8 --replication-factor 2
    kafka-console-consumer.sh --bootstrap-server c1:9092 --topic topic1

    4.启动Flume

    * 在c1机执行

    flume-ng agent -c conf/ -f /home/flume/conf/flume-conf -n a1 -Dflume.root.logger=INFO,console

    5.命令测试

    * 在c3机执行

    telnet c1 44444

    然后输入任意内容,看到c1和c2的窗口显示对应消息,就是部署成功了。

    6.代码测试

    * 在c3机执行

    用Flume和Kafka的安装与部署文章中的代码测试即可。

  • 相关阅读:
    Add函数求两个数的和,不能使用+号或其它算术运算符
    小刘同学的第八十六篇博文
    小刘同学的第八十五篇博文
    小刘同学的第八十四篇博文
    小刘同学的第八十三篇博文
    小刘同学的第八十二篇博文
    小刘同学的第八十一篇博文
    小刘同学的第八十篇博文
    小刘同学的第七十九篇博文
    小刘同学的第七十八篇博文
  • 原文地址:https://www.cnblogs.com/live41/p/15554269.html
Copyright © 2011-2022 走看看