大数据项目之电商数仓、日志采集Flume、source、channel、 sink、Kafka的三个架构

news2024/11/17 15:37:34

文章目录

  • 4. 用户行为数据采集模块
    • 4.3 日志采集Flume
      • 4.3.1 Kafka的三个架构
        • 4.3.1.1 source
        • 4.3.1.2 channel
        • 4.3.1.3 sink
        • 4.3.1.4 kafka source
        • 4.3.1.5 kafka sink
        • 4.3.1.6 kafka channel
          • 4.3.1.6.1 第一个结构
          • 4.3.1.6.2 第二个结构
          • 4.3.1.6.3 第三个结构

4. 用户行为数据采集模块

4.3 日志采集Flume

4.3.1 Kafka的三个架构

4.3.1.1 source

taildir source:可以读取文件的数据,实时的读取文件的数据,并且支持断点续传
avro source :是在Flume之间互相传输的一般配合avro sink,经常使用在Flume做成拓扑结构的时候
nc source :接收网络端口的
exec source:可以读取文件的数据,实时的读取文件的数据,并且不支持断点续传,一般没有人用
spooling source :支持断点续传,监控的不是文件,监控的是文件夹
kafka source :下面有详细的说明

4.3.1.2 channel

file channe : 比较慢,基于磁盘的,但是优点是数据不容易丢,虽然慢,但有个优化,加一个索引机制
memory channel: 比较快,基于内存的,但是缺点是数据容易丢
kafka channel: 下面有详细的说明

4.3.1.3 sink

hdfs sink:这个是经常使用
kafka sink : 下面有详细的说明
avro sink:一般配合avro source

flume官网https://flume.apache.org/releases/content/1.9.0/FlumeUserGuide.html#

4.3.1.4 kafka source

在这里插入图片描述Kafka Source is an Apache Kafka consumer that reads messages from Kafka topics. If you have multiple Kafka sources running, you can configure them with the same Consumer Group so each will read a unique set of partitions for the topics. This currently supports Kafka server releases 0.10.1.0 or higher. Testing was done up to 2.0.1 that was the highest avilable version at the time of the release.

意思就是说kafka source从kafka topics里面读数据,kafka source就是kafka的消费者

4.3.1.5 kafka sink

在这里插入图片描述This is a Flume Sink implementation that can publish data to a Kafka topic. One of the objective is to integrate Flume with Kafka so that pull based processing systems can process the data coming through various Flume sources.

This currently supports Kafka server releases 0.10.1.0 or higher. Testing was done up to 2.0.1 that was the highest avilable version at the time of the release.

Required properties are marked in bold font.

意思就是说kafka source往kafka topics里面写数据,kafka source就是kafka的生产者

4.3.1.6 kafka channel

kafka有消峰解耦的功能

在这里插入图片描述
The events are stored in a Kafka cluster (must be installed separately). Kafka provides high availability and replication, so in case an agent or a kafka broker crashes, the events are immediately available to other sinks

The Kafka channel can be used for multiple scenarios:

1.With Flume source and sink - it provides a reliable and highly available channel for events
2.With Flume source and interceptor but no sink - it allows writing Flume events into a Kafka topic, for use by other apps
3.With Flume sink, but no source - it is a low-latency, fault tolerant way to send events from Kafka to Flume sinks such as HDFS, HBase or Solr

This currently supports Kafka server releases 0.10.1.0 or higher. Testing was done up to 2.0.1 that was the highest avilable version at the time of the release.

The configuration parameters are organized as such:

1.Configuration values related to the channel generically are applied at the channel config level, eg: a1.channel.k1.type =
2.Configuration values related to Kafka or how the Channel operates are prefixed with “kafka.”, (this are analgous to CommonClient Configs) eg: a1.channels.k1.kafka.topic and a1.channels.k1.kafka.bootstrap.servers. This is not dissimilar to how the hdfs sink operates
3. Properties specific to the producer/consumer are prefixed by kafka.producer or kafka.consumer
4.Where possible, the Kafka paramter names are used, eg: bootstrap.servers and acks

This version of flume is backwards-compatible with previous versions, however deprecated properties are indicated in the table below and a warning message is logged on startup when they are present in the configuration file.

Required properties are in bold.
Flume 会将数据封装成Event的形式,header+body,如果Flume要想使用Kafka Channel,则必须独立安装一个Kafka集群,Kafka支持高可用和副本,Kafka有以下三种结构。

4.3.1.6.1 第一个结构

在这里插入图片描述
结合Flume source和sink来使用

由taildir source读取数据,发送给kafka channel,因为是kafka channel,因此将数据存储到kafka的topic里面,hdfs sink从kafka channel里面读数据,发现是kafka channel,则从kafka当中要读的数据读出来,发送给hdfs sink

4.3.1.6.2 第二个结构

在这里插入图片描述结合source和拦截器来使用,没有sink

由taildir source读取数据,发送给kafka channel,因为是kafka channel,因此将数据存储到kafka的topic里面

4.3.1.6.3 第三个结构

在这里插入图片描述结合Flume sink,没有source
hdfs sink从kafka channel里面读数据,发现是kafka channel,则从kafka当中要读的数据读出来,发送给hdfs sink

在这里插入图片描述

  由于需要将数据上传到hadoop集群上,因此第一个架构符合我们的需要,但是从官网上可以看到,数据以FlumeEvent的格式发送到kafka,FlumeEvent的格式是head+body,从source发送到channel的数据是FlumeEvent。离线数仓要的数据只有body,实时的也是只要body,因此head的数据就多存了。如果把parseAsFlumeEvent的参数设置为false,那存到kafka 里面只有一个body,离线和实时也只要body的数据,因此刚刚好,但是第一个框架还有一个拦截器,拦截器和header一起使用,因此不能将header取消,也就是说parseAsFlumeEvent不能设置为false,使用第二个框架比较好性能也好,也满足我们的需求

在这里插入图片描述

在这里插入图片描述

parseAsFlumeEventtrueExpecting Avro datums with FlumeEvent schema in the channel. This should be true if Flume source is writing to the channel and false if other producers are writing into the topic that the channel is using. Flume source messages to Kafka can be parsed outside of Flume by using org.apache.flume.source.avro.AvroFlumeEvent provided by the flume-ng-sdk artifact

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/22589.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

CentOS7 离线部署 Python 项目

1.前言 主要过程如下: (1)创建项目环境,生成requirements.txt文件。(如果已有可跳出) (2)新建一个跟目标机器一样的操作系统,python环境的测试服务器,并下载…

【考研英语语法】名词性从句

0 导言 名词性从句,是指一个句子相当于名词来使用,放到另外一个句子中。通常情况下,名词在句子中主要作四种成分:宾语、表语、主语、同位语。因此,名词性从句就分成四种:宾语从句、表语从句、主语从句、同…

迅为iTOP3568开发板Android11获取root权限关闭selinux

本文档所需资料在网盘资料“iTOP-3568 开发板\02_【iTOP-RK3568 开发板】开发资料\ 06_Android 系统开发配套资料\02_Android11 获取 root 权限配套资料”目录下。本文档参考瑞 芯微官方文档,在源码“Android11/rk_android11.0_sdk/RKDocs/android/patches/root”目…

SpringBoot整合Swagger2

整合Swagger2 1.Swagger介绍 前后端分离开发模式中,api文档是最好的沟通方式。 Swagger 是一个规范和完整的框架,用于生成、描述、调用和可视化 RESTful 风格的 Web 服务。 1、及时性 (接口变更后,能够及时准确地通知相关前后端开发人员)…

Kubernetes云原生实战00 何为云原生?

大家好,我是飘渺。 从今天开始我将开启第二个专栏系列,即 Kubernetes云原生实战 何为云原生 都2022年了,我相信各位肯定听过 云原生 这个词,但是究竟什么是云原生,却很少有人能真正说清楚。 如果找资料来看&#x…

广通远驰亮相2022 C-V2X“四跨”(苏州)应用示范活动

2022年11月3-4日,2022 C-V2X“四跨”(苏州)先导应用示范活动在苏州举办,9家国内外整车企业、22家终端企业、9家芯片模组企业、7家信息安全企业共计23个车队、47家单位参与活动演示。 深圳市广通远驰科技有限公司(以下简…

请求转发与重定向到底有哪些区别?

一. 前言 我们知道,Web开发中的页面跳转,通常有两种跳转方式:重定向与请求转发。但可能有很多同学并不知道这两种跳转在细节上的区别,只知道都能跳转到目标页面。但实际上这两种跳转方式深入研究后,你会发现有很多不同…

SAML2.0 笔记(二)

文章目录一、前言二、共通内容1.1、引入依赖1.2、初始化SAML部分1.2.1、检查JCE环境1.2.2、初始化服务1.3、拦截器部分1.3.1、构建AuthnRequest1.3.2、AuthRequest解析1.3.3、SP模式选择1.3.4、IDP模式选择1.4、涉及的工具类1.4.1、OpenSAMLUtils工具类1.4.2、sp/idp Credentia…

Life-long Mapping

0.引言 主要参考自某某学院的激光slam课程。 1.Lifelong Mapping 的概念和应用 在长时间的建图过程中,基于图优化的 SLAM 的方法存在以下问题:PoseGraph 中的节点随着机器人走过的距离越来越多,以至于求解规模不断增大,影响优化…

密码学系列之九:密钥管理

密钥管理1. 密钥管理概述1.1 密钥管理的主要内容1.2 密钥管理的原则1.3 密钥管理的层次结构2. 密钥的生命周期3. 密钥分发3.1 无中心的密钥分发3.2 有中心的密钥分发4. 密钥协商技术4.1 Diffie-Hellman密钥交换协议4.2 端-端协议5. 密钥托管5.1 密钥托管密码体制基本组成5.2 托…

社区便利店销售微信APP的设计与实现(源码+论文)_kaic

目 录 1 绪论 1.1 研究背景、研究目的和研究意义 1.1.1 研究背景 1.1.2 研究目的与研究意义 1.2 国内外研究现状 2 系统开发环境 2.1 系统功能分析 2.2 系统开发平台 2.3 平台开发相关技术 2.3.1 B/S结构 2.3.2 Java技术介绍 2.3.3 Mysql数据库 2.3.4 SSM框架 2.4 微信开发者工…

Nginx模块开发之http过滤器filter

Nginx http过滤器filter模块开发一、过滤器模块简介二、Nginx相关数据结构介绍2.1、ngx_module的数据结构2.2、ngx_http_module数据结构2.3、ngx_command数据结构三、Nginx过滤器模块开发3.1、Nginx模块开发流程3.2、Nginx 模块执行3.3、示例代码3.4、编写config文件3.5、编译模…

免费嵌入 NFT 数据到任何网站或平台

Nov. 2022, Vincy Data Source: Footprint Analytics - Bingo NFT Widget Footprint Analytics 是一个用于发掘和可视化整个区块链数据的工具,专注于解析 NFT 和 GameFi 等数据。它使用户能够拖放界面以及使用 SQL 或 Python 建立图表和仪表盘,而无需编…

【附源码】计算机毕业设计JAVA学生选拔系统

【附源码】计算机毕业设计JAVA学生选拔系统 目运行 环境项配置: Jdk1.8 Tomcat8.5 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: JAVA mybati…

基于Android的地图服务系统设计与实现

目 录 摘 要 I Abstract II 1绪论 1 1.1 背景及意义 1 1.2 主要方法和研究进展 1 1.3主要内容 1 1.4本论文的结构安排 1 2系统概述 2 2.1开发环境搭建 2 2.1.1 安装JDK 2 2.1.2 安装Eclipse集成开发环境 2 2.1.3 下载安装Android SDK 2 2.1.4 为Eclipse安装ADT插件 3 2.1.5 创建…

2022年最受欢迎的指纹浏览器,你知道几个?

浏览器是我们在电脑上最常使用的软件,以至于我们几乎忽略了它。对于用户来说,如果使用习惯了很难从一种浏览器切换到另一种浏览器。而指纹浏览器对于跨境人来说也是最常使用的软件工具,毕竟它就是为了跨境人打造的一款浏览器。那2022年这几个…

关于typescript中的extends和infer以及用法

extends extend的意思如果不是用在类的扩展中那么就表示约束在。 type Pick<T, K extends keyof T> {[P in K]: T[P]; };比如下面这个例子&#xff1a; 在Picks中K应该约束在keyof T这个类型中。 infer infer表示占位符 逆变和协变 协变&#xff1a;子类型赋给父…

云原生安全系列2:关于镜像安全必须知道的事儿

1.避免特权容器 Docker 提供了一种特权模式&#xff0c;它允许容器在本地计算机上以 root 身份运行。在特权模式下运行容器提供了该主机的功能&#xff0c;包括&#xff1a; 对所有设备的根访问权限能够篡改 AppArmor 和 SELinux 等 Linux 安全模块能够使用主机的内核功能安装…

pytorch神经网络基本骨架nn.module的使用

1.Containers 首先查看官方文档中nn.module骨架&#xff0c;其中有六个模块。 1.1Module import torch.nn as nn import torch.nn.functional as F class Module(nn.Module):def __init__(self):super(Module, self).__init__()self.conv1nn.Conv2d(1, 20, 5)self.conv2nn.C…

ESP32学习笔记 - 基于 ESP32 移植 LVGL8.3

以前写过一篇文章,讲述了如何基于ESP32 芯片移植LVGL这个GUI框架,当时是在LVGL移植好的工程lv_port_esp32上进行的,这个工程最新支持到LVGL7.9版本,关于之前的移植文章,可以参考以下链接: ESP32学习笔记 - 移植LVGL 随着LVGL不断在高频率地迭代大版本,LVGL8.x已经比以…