本文源码:GitHub || GitEE

一、Flume简介

1、基础描述

Flume是Cloudera提供的一个高可用的,高可靠的,分布式的海量日志采集、聚合和传输的系统,Flume支持在日志系统中定制各类数据发送方,用于收集数据;

特点:分布式、高可用、基于流式架构,通常用来收集、聚合、搬运不同数据源的大量日志到数据仓库。

2、架构模型

Agent包括三个核心组成,Source、Channel、Sink。Source负责接收数据源,并兼容多种类型,Channel是数据的缓冲区,Sink处理数据输出的方式和目的地。

Event是Flume定义的一个数据流传输的基本单元,将数据从源头送至目的地。

Flume可以设置多级Agent连接的方式传输Event数据,从最初的source开始到最终sink传送的目的存储系统,如果数量过多会影响传输速率,并且传输过程中单节点故障也会影响整个传输通道。

Flume支持多路复用数据流到一个或多个目的地,这种模式可以将相同数据复制到多个channel中,或者将不同数据分发到不同的channel中,并且sink可以选择传送到不同的目的地。

Agent1理解为路由节点负责Channel的Event均衡到多个Sink组件,每个Sink组件分別连接到独立的Agent上,实现负载均衡和错误恢复的功能。

Flume的使用组合方式做数据聚合,每台服务器部署一个flume节点采集日志数据,再汇聚传输到存储系统,例如HDFS、Hbase等组件,高效且稳定的解决集群数据的采集。

二、安装过程

1、安装包

apache-flume-1.7.0-bin.tar.gz

2、解压命名

  1. [root@hop01 opt]# pwd
  2. /opt
  3. [root@hop01 opt]# tar -zxf apache-flume-1.7.0-bin.tar.gz
  4. [root@hop01 opt]# mv apache-flume-1.7.0-bin flume1.7

3、配置文件

配置路径:/opt/flume1.7/conf

  1. mv flume-env.sh.template flume-env.sh

4、修改配置

添加JDK依赖

  1. vim flume-env.sh
  2. export JAVA_HOME=/opt/jdk1.8

5、环境测试

安装netcat工具

  1. sudo yum install -y nc

创建任务配置

  1. [root@hop01 flume1.7]# cd job/
  2. [root@hop01 job]# vim flume-netcat-test01.conf

添加基础任务配置

注意:a1表示agent名称。

  1. # this agent
  2. a1.sources = sr1
  3. a1.sinks = sk1
  4. a1.channels = sc1
  5. # the source
  6. a1.sources.sr1.type = netcat
  7. a1.sources.sr1.bind = localhost
  8. a1.sources.sr1.port = 55555
  9. # the sink
  10. a1.sinks.sk1.type = logger
  11. # events in memory
  12. a1.channels.sc1.type = memory
  13. a1.channels.sc1.capacity = 1000
  14. a1.channels.sc1.transactionCapacity = 100
  15. # Bind the source and sink
  16. a1.sources.sr1.channels = sc1
  17. a1.sinks.sk1.channel = sc1

开启flume监听端口

  1. /opt/flume1.7/bin/flume-ng agent --conf /opt/flume1.7/conf/ --name a1 --conf-file /opt/flume1.7/job/flume-netcat-test01.conf -Dflume.root.logger=INFO,console

使用netcat工具向55555端口发送数据

  1. [root@hop01 ~]# nc localhost 55555
  2. hello,flume

查看flume控制面

三、应用案例

1、案例描述

基于flume在各个集群服务进行数据采集,然后数据传到kafka服务,再考虑数据的消费策略。

采集:基于flume组件的便捷采集能力,如果直接使用kafka会产生大量的埋点动作不好维护。

消费:基于kafka容器的数据临时存储能力,避免系统高度活跃期间采集数据过大冲垮数据采集通道,并且可以基于kafka做数据隔离并针对化处理。

2、创建kafka配置

  1. [root@hop01 job]# pwd
  2. /opt/flume1.7/job
  3. [root@hop01 job]# vim kafka-flume-test01.conf

3、修改sink配置

  1. # the sink
  2. a1.sinks.sk1.type = org.apache.flume.sink.kafka.KafkaSink
  3. # topic
  4. a1.sinks.sk1.topic = kafkatest
  5. # broker地址、端口号
  6. a1.sinks.sk1.kafka.bootstrap.servers = hop01:9092
  7. # 序列化方式
  8. a1.sinks.sk1.serializer.class = kafka.serializer.StringEncoder

4、创建kafka的Topic

上述配置文件中名称:kafkatest,下面执行创建命令之后查看topic信息。

  1. [root@hop01 bin]# pwd
  2. /opt/kafka2.11
  3. [root@hop01 kafka2.11]# bin/kafka-topics.sh --create --zookeeper hop01:2181 --replication-factor 1 --partitions 1 --topic kafkatest
  4. [root@hop01 kafka2.11]# bin/kafka-topics.sh --describe --zookeeper hop01:2181 --topic kafkatest

5、启动Kakfa消费

  1. [root@hop01 kafka2.11]# bin/kafka-console-consumer.sh --bootstrap-server hop01:2181 --topic kafkatest --from-beginning

这里指定topic是kafkatest。

6、启动flume配置

  1. /opt/flume1.7/bin/flume-ng agent --conf /opt/flume1.7/conf/ --name a1 --conf-file /opt/flume1.7/job/kafka-flume-test01.conf -Dflume.root.logger=INFO,console

四、源代码地址

  1. GitHub·地址
  2. https://github.com/cicadasmile/big-data-parent
  3. GitEE·地址
  4. https://gitee.com/cicadasmile/big-data-parent

阅读标签

Java基础】【设计模式】【结构与算法】【Linux系统】【数据库

分布式架构】【微服务】【大数据组件】【SpringBoot进阶】【Spring&Boot基础

数据分析】【技术导图】【 职场

数据采集组件:Flume基础用法和Kafka集成的更多相关文章

  1. 新闻实时分析系统-Flume+HBase+Kafka集成与开发

    1.下载Flume源码并导入Idea开发工具 1)将apache-flume-1.7.0-src.tar.gz源码下载到本地解压 2)通过idea导入flume源码 打开idea开发工具,选择File ...

  2. 新闻网大数据实时分析可视化系统项目——9、Flume+HBase+Kafka集成与开发

    1.下载Flume源码并导入Idea开发工具 1)将apache-flume-1.7.0-src.tar.gz源码下载到本地解压 2)通过idea导入flume源码 打开idea开发工具,选择File ...

  3. kafka 基础知识梳理-kafka是一种高吞吐量的分布式发布订阅消息系统

    一.kafka 简介 今社会各种应用系统诸如商业.社交.搜索.浏览等像信息工厂一样不断的生产出各种信息,在大数据时代,我们面临如下几个挑战: 如何收集这些巨大的信息 如何分析它 如何及时做到如上两点 ...

  4. 【干货】.NET开发通用组件发布(三) 简易数据采集组件

    组件介绍和合作开发 http://www.cnblogs.com/MrHuo/p/MrHuoControls.html 简易数据采集组件 怎么说他是一个简易的数据采集组件呢?因为由于时间仓促,缺少从某 ...

  5. 轻量jquery框架之--组件交互基础设计

    概要 组件交互基础,即考虑在JQUERY对象下($)下扩展所有组件都需要用到的通用api,如ajax入口.对表单的操作.html片段加载.通用的配合datagrid通用的curd客户端对象等. 扩展a ...

  6. Vue.js-08:第八章 - 组件的基础知识

    一.前言 在之前的学习中,我们对于 Vue 的一些基础语法进行了简单的了解,通过之前的代码可以清晰的看出,我们在使用 Vue 的整个过程,最终都是在对 Vue 实例进行的一系列操作. 这里就会引出一个 ...

  7. Kafka集成SparkStreaming

    Spark Streaming + Kafka集成指南 Kafka项目在版本0.8和0.10之间引入了一个新的消费者API,因此有两个独立的相应Spark Streaming包可用.请选择正确的包,  ...

  8. Spark Streaming和Kafka集成深入浅出

    写在前面 本文主要介绍Spark Streaming基本概念.kafka集成.Offset管理 本文主要介绍Spark Streaming基本概念.kafka集成.Offset管理 一.概述 Spar ...

  9. Spark Streaming与Kafka集成

    Spark Streaming与Kafka集成 1.介绍 kafka是一个发布订阅消息系统,具有分布式.分区化.多副本提交日志特点.kafka项目在0.8和0.10之间引入了一种新型消费者API,注意 ...

随机推荐

  1. AtCoder Beginner Contest 173 E - Multiplication 4 (思维)

    题意:有\(n\)个数,从中选\(k\)个数累乘,求最大的乘积\((mod\ 10^9+7)\). 题解: 1.假如全是负数,并且选奇数个,那么从小到大选. 2.否则,考虑当前状态,假如\(k\)是奇 ...

  2. 金牛来到,福气来到——TcaplusDB新年放送

    光阴似箭,2020转瞬间成为历史,牛年的钟声即将敲响,在此,TcaplusDB祝大家新的一年万事如意,牛年带给我们的福气,一定能让我们心想事成! 饮水思源,回顾过去的一年,我们深知,TcaplusDB ...

  3. python之字符串strip、rstrip、lstrip的方法

    1.描述 strip():用于移除字符串头尾指定的字符(默认为空格或换行符)或字符序列 rstrip():用于移除字符串右边指定的字符(默认为空格或换行符)或字符序列 lstrip():用于移除字符串 ...

  4. 网络安全知识--PHP代码审计/Web For Pantesters 的 SQL injection

    SQL 注入一般流程 判断有无注入 单引号判断: ?name=root' 对应语句 select * from table where name='root'' 不符合语法规范,报错,说明有注入 an ...

  5. Leetcode(257)-二叉树的所有路径

    给定一个二叉树,返回所有从根节点到叶子节点的路径. 说明: 叶子节点是指没有子节点的节点. 示例: 输入: 1 / \ 2 3 \ 5 输出: ["1->2->5", ...

  6. 为树莓派3B添加LCD1602液晶屏

    树莓派3B针脚说明 LCD1602接线说明 VSS,接地VDD,接5V电源VO,液晶对比度调节,接电位器中间的引脚,电位器两边的引脚分别接5V和接地.RS,寄存器选择,接GPIO14RW,读写选择,接 ...

  7. spring-cloud-sleuth/zipkin

    Spring Cloud Sleuth 一般的,一个分布式服务跟踪系统,主要有三部分:数据收集.数据存储和数据展示.根据系统大小不同,每一部分的结构又有一定变化.譬如,对于大规模分布式系统,数据存储可 ...

  8. 51nod1089 最长回文子串 manacher算法

    0. 问题定义 最长回文子串问题:给定一个字符串,求它的最长回文子串长度. 如果一个字符串正着读和反着读是一样的,那它就是回文串.下面是一些回文串的实例: 12321 a aba abba aaaa ...

  9. Media Queries语法总结

    Media Queries的语法如下所示: @media [media_query] media_type and media_feature 使用Media Queries样式模块时都必须以&quo ...

  10. HTML form All In One

    HTML form All In One action + method onsubmit, submit event action + method <form action="&q ...