实训笔记8.25

news2024/11/19 10:22:51

实训笔记8.25

  • 8.25笔记
    • 一、Flume数据采集技术
      • 1.1 Flume实现数据采集主要借助Flume的组成架构
      • 1.2 Flume采集数据的时候,核心是编写Flume的采集脚本xxx.conf
        • 1.2.1 脚本文件主要由五部分组成
    • 二、Flume案例实操
      • 2.1 采集一个网络端口的数据到控制台
        • 2.1.1 分析案例的组件类型
        • 2.2.2 编写脚本文件portToConsole.conf
        • 2.2.3 根据脚本文件启动Flume采集程序
        • 2.2.4 测试
      • 2.2 采集一个文件的数据到控制台
        • 2.2.1 案例需求
        • 2.2.2 案例分析
        • 2.2.3 编写脚本文件
        • 2.2.4 启动
        • 2.2.5 测试
      • 2.3 采集一个文件夹下的新文件数据到控制台
        • 2.3.1 案例需求
        • 2.3.2 案例分析
        • 2.3.3 编写配置文件
        • 2.3.4 运行
        • 2.3.5 测试
      • 2.4 采集一个网络端口的数据到HDFS中
        • 2.4.1 案例需求
        • 2.4.2 案例分析
        • 2.4.3 编写脚本文件
      • 2.5 多数据源和多目的地案例
        • 2.5.1 案例需求
        • 2.5.2 案例分析
        • 2.5.3 编写脚本文件
      • 2.6 多Flume进程组合的案例
        • 2.6.1 案例需求
        • 2.6.2 案例分析
        • 2.6.3 编写脚本文件
        • 2.6.4 启动脚本程序
    • 三、Hadoop、Hive、SQOOP、Flume、Zookeeper(HA高可用)、Azkaban

8.25笔记

一、Flume数据采集技术

将海量的数据通过某种技术采集到大数据环境中进行存储和管理,为后期的大数据处理分析做准备 常见的数据:网站/软件的运行日志、记录的日志,软件的结构化数据、爬虫数据、传感器采集数据…

Flume是apache开源的顶尖项目,专门是采集和聚合海量的日志数据。但是随着Flume技术的发展,支持很多种其他类型数据源的数据采集。

1.1 Flume实现数据采集主要借助Flume的组成架构

Agent、Source、Channel、Sink、Event、Flume采集脚本xxx.conf

一个agent进程中,可以有多个Source、channel、sink, 其中一个source只能连接一个数据源,一个sink只能连接一个目的地。 而且在一个Flume的agent进程中,一个source采集的数据可以发送给多个channel,但是一个sink只能拉取一个channel的数据。

1.2 Flume采集数据的时候,核心是编写Flume的采集脚本xxx.conf

Flume支持多种数据源、管道、目的地,我们采集数据的时候,并不是所有的数据源和目的地都要使用,而是使用我们需要的源头和目的地。但是Flume不知道你需要什么数据源、需要什么目的地。 通过脚本文件指定我们采集的数据源、目的地、管道

1.2.1 脚本文件主要由五部分组成

  1. 起别名

    我们可以根据采集脚本启动一个Flume进程Agent,一个Flume支持启动多个Agent,Flume要求每一个Agent必须有自己的一个别名,Flume启动的多个Agent的别名不能重复。

    同时Flume一个Agent进程中,可以有多个source、多个channel、多个sink,如何区分多个组件? 我们还需要多Agent进程中的source、channel、sink起别名的

    Agent、source、channel、sink起别名

  2. 配置Source组件

    我们一个Flume进程中,可能存在1个或者多个数据源,每一个source组件需要连接一个数据源,但是数据源到底是谁,如何连接,我们需要配置。

  3. 配置channel组件

    一个Agent中,可能存在一个或者多个channel,channel也有很多种类型的,因此我们需要配置我们channel的类型以及channel的容量

  4. 配置Sink组件一个Agent,可以同时将数据下沉到多个目的地,一个sink只能连接一个目的地,目的地到底是谁,如何连接,需要配置sink

  5. 组装source、channel、sink(核心)

    一个source的数据可以发送给多个channel,一个sink只能读取一个channel的数据。因此我们需要根据业务逻辑配置source、channel、sink的连接关系。

二、Flume案例实操

2.1 采集一个网络端口的数据到控制台

2.1.1 分析案例的组件类型

  1. source:网络端口 netcat
  2. channel:基于内存的管道即可memory
  3. sink:控制台–Flume的日志输出logger

2.2.2 编写脚本文件portToConsole.conf

# 1、配置agent、source、channel、sink的别名
demo.sources=s1
demo.channels=c1
demo.sinks=k1

# 2、配置source组件连接的数据源--不同数据源的配置项都不一样 监听netcat  type bind port
demo.sources.s1.type=netcat
demo.sources.s1.bind=localhost
demo.sources.s1.port=44444

# 3、配置channel组件的类型--不同类型的管道配置项也不一样 基于内存memory的管道
demo.channels.c1.type=memory
demo.channels.c1.capacity=1000
demo.channels.c1.transactionCapacity=200

# 4、配置sink组件连接的目的地--不同类型的sink配置项不一样 基于logger的下沉地
demo.sinks.k1.type=logger

# 5、配置source channel sink之间的连接 source连接channel  sink也要连接channel
# 一个source的数据可以发送给多个channel  一个sink只能拉取一个channel的数据
demo.sources.s1.channels=c1
demo.sinks1.k1.channel=c1 

2.2.3 根据脚本文件启动Flume采集程序

flume-ng agent -n agent的别名(必须和文件中别名保持一致) -f xxx.conf的路径 -Dflume.root.logger=INFO,console

2.2.4 测试

我们只需要给本地的44444端口发送数据,看看Flume的控制台能否把数据输出即可

需要新建一个和Linux的连接窗口,然后使用 telnet localhost 44444 命令连接本地的44444端口发送数据

telnet软件linux默认没有安装,需要使用yum安装一下 yum install -y telnet

必须先启动flume采集程序,再telnet连接网络端口发送数据

2.2 采集一个文件的数据到控制台

2.2.1 案例需求

现在有一个文件,文件源源不断的记录用户的访问日志信息,我们现在想通过Flume去监听这个文件,一旦当这个文件有新的用户数据产生,把数据采集到flume的控制台上

2.2.2 案例分析

source:exec(将一个linux命令的输出导出数据源、自己写监听命令) 、taildir

channel:memory

sink:logger

2.2.3 编写脚本文件

#1、起别名
demo01.sources=s1
demo01.channels=c1
demo01.sinks=k1

#2、定义数据源 Spooling Directory Source
demo01.sources.s1.type=spooldir
demo01.sources.s1.spoolDir=/root/demo

#3、定义管道
demo01.channels.c1.type=memory
demo01.channels.c1.capacity=1000
demo01.channels.c1.transactionCapacity=200

#4、配置sink目的地 logger
demo01.sinks.k1.type=logger

#5、关联组件
demo01.sources.s1.channels=c1
demo01.sinks.k1.channel=c1

2.2.4 启动

2.2.5 测试

2.3 采集一个文件夹下的新文件数据到控制台

2.3.1 案例需求

有一个文件夹,文件夹下记录着网站产生的很多日志数据,而且日志文件不止一个,就像把文件夹下所有的文件数据采集到控制台,同时如果这个文件夹下有新的数据文件产生,也会把新文件的数据全部采集到控制台上

2.3.2 案例分析

source:Spooling Directory Source

channel:memory

sink:logger

2.3.3 编写配置文件

#1、起别名
demo01.sources=s1
demo01.channels=c1
demo01.sinks=k1

#2、定义数据源 exec linux命令 监听一个文件 tail -f|-F 文件路径
demo01.sources.s1.type=exec
demo01.sources.s1.command=tail -F /root/a.log

#3、定义管道
demo01.channels.c1.type=memory
demo01.channels.c1.capacity=1000
demo01.channels.c1.transactionCapacity=200

#4、配置sink目的地 logger
demo01.sinks.k1.type=logger

#5、关联组件
demo01.sources.s1.channels=c1
demo01.sinks.k1.channel=c1

2.3.4 运行

2.3.5 测试

2.1~2.3:

单source、sink、channel
souece数据源不一样
sink目的地都是一样的

2.4 采集一个网络端口的数据到HDFS中

2.4.1 案例需求

监控一个网络端口产生的数据,一旦当端口产生新的数据,就把数据采集到HDFS上以文件的形式进行存放

2.4.2 案例分析

source:网络端口netcat

channel:基于内存的管道 memory

sink:HDFS

2.4.3 编写脚本文件

启动采集进程(必须先启动HDFS)

# 1、配置agent、source、channel、sink的别名
demo.sources=s1
demo.channels=c1
demo.sinks=k1

# 2、配置source组件连接的数据源--不同数据源的配置项都不一样 监听netcat  type bind port
demo.sources.s1.type=netcat
demo.sources.s1.bind=localhost
demo.sources.s1.port=44444

# 3、配置channel组件的类型--不同类型的管道配置项也不一样 基于内存memory的管道
demo.channels.c1.type=memory
demo.channels.c1.capacity=1000
demo.channels.c1.transactionCapacity=200

# 4、配置sink组件连接的目的地--基于HDFS的
demo.sinks.k1.type=hdfs
# 配置采集到HDFS上的目录 数据在目录下以文件的形式进行存放
demo.sinks.k1.hdfs.path=hdfs://single:9000/flume
# 目录下生成的文件的前缀 如果没有配置 默认就是FlumeData
demo.sinks.k1.hdfs.filePrefix=collect
# 指定生成的文件的后缀  默认是没有后缀  生成的文件的格式collect.时间戳.txt
demo.sinks.k1.hdfs.fileSuffix=.txt
# 目录采集的数据并不是记录到一个文件中,文件是会滚动生成新的文件的
# 滚动的规则有三种:1、基于时间滚动 2、基于文件的容量滚动 3、基于文件的记录的event数量进行滚动
# 时间 30s  容量1024b event 10
# 时间滚动规则 单位是s 如果指设置为0 那么就代表不基于时间生成新的文件
demo.sinks.k1.hdfs.rollInterval=60
# 文件容量的滚动规则 单位b  如果设置为0 代表不基于容量滚动生成新的文件
demo.sinks.k1.hdfs.rollSize=100
# event数量滚动规则 一般都设置为0  代表不基于event数量滚动生成新的文件
demo.sinks.k1.hdfs.rollCount=0
# 文件在HDFS上的默认存储格式是SequenceFile文件格式
demo.sinks.k1.hdfs.fileType=DataStream
# 设置event的头部使用本地时间戳作为header
demo.sinks.k1.hdfs.useLocalTimeStamp=true


# 5、配置source channel sink之间的连接 source连接channel  sink也要连接channel
# 一个source的数据可以发送给多个channel  一个sink只能拉取一个channel的数据
demo.sources.s1.channels=c1
demo.sinks.k1.channel=c1 

【注意】flume的依赖的guava和hadoop的guava有冲突,需要将flume的lib目录下的guava依赖删除,同时将hadoop的share/common/lib/guava依赖复制到flume的lib目录下

2.5 多数据源和多目的地案例

2.5.1 案例需求

现在有三个数据源:

  1. 网络端口
  2. 文件
  3. 文件夹

想把这三个数据源的数据全部采集到HDFS的指定目录下,同时还要求把文件数据源的数据在控制台上同步进行展示

2.5.2 案例分析

source:netcat exec spooldir

channel:两个基于内存的

sink:1、hdfs 2、logger

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-z29G2KBz-1692957630143)(./8.24/f425ae220d03cd4e9364dc83cd39d4e6c687f929e275b56685ea599b18e98954.png)]

2.5.3 编写脚本文件

# 1、起别名 三个数据源 两个管道 两个sink
more.sources=s1 s2 s3
more.channels=c1 c2
more.sinks=k1 k2

# 2、定义数据源 三个
# 定义s1数据源 s1连接的网络端口
more.sources.s1.type=netcat
more.sources.s1.bind=localhost
more.sources.s1.port=44444

# 定义s2的数据源 s2连接的是一个文件 /root/more.log文件
more.sources.s2.type=exec
more.sources.s2.command=tail -F /root/more.log

# 定义s3的数据源 s3监控的是一个文件夹 /root/more
more.sources.s3.type=spooldir
more.sources.s3.spoolDir=/root/more

# 3、定义channel 两个 基于内存的
# 定义c1管道 c2管道需要接受三个数据源的数据
more.channels.c1.type=memory
more.channels.c1.capacity=20000
more.channels.c1.transactionCapacity=5000

# 定义c2管道 c2管道只需要接受一个数据源 s2的数据
more.channels.c2.type=memory
more.channels.c2.capacity=5000
more.channels.c2.transactionCapacity=500

# 4、定义sink 两个 HDFS logger
# 定义k1这个sink  基于hdfs
more.sinks.k1.type=hdfs
# HDFS支持生成动态目录--基于时间的 /more/2023-08-25
more.sinks.k1.hdfs.path=hdfs://single:9000/more/%Y-%m-%d
# 如果设置了动态目录,那么必须指定动态目录的滚动规则-多长时间生成一个新的目录
more.sinks.k1.hdfs.round=true
more.sinks.k1.hdfs.roundValue=24
more.sinks.k1.hdfs.roundUnit=hour

more.sinks.k1.hdfs.filePrefix=collect
more.sinks.k1.hdfs.fileSuffix=.txt
more.sinks.k1.hdfs.rollInterval=0
more.sinks.k1.hdfs.rollSize=134217728
more.sinks.k1.hdfs.rollCount=0
more.sinks.k1.hdfs.fileType=DataStream
more.sinks.k1.hdfs.useLocalTimeStamp=true

# 定义k2  logger
more.sinks.k2.type=logger

# 5、组合agent的组件
more.sources.s1.channels=c1
more.sources.s2.channels=c1 c2
more.sources.s3.channels=c1
more.sinks.k1.channel=c1
more.sinks.k2.channel=c2

2.6 多Flume进程组合的案例

2.6.1 案例需求

三个Flume进程,其中第一个Flume采集端口的数据,第二个Flume采集文件的数据,要求第一个Flume进程和第二个Flume进程将采集到的数据发送给第三个Flume进程,第三个Flume进程将接受到的数据采集到控制台上。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1CDBUphH-1692957630145)(./8.24/fcb49d25d9bc2d5e9f772e55d7f6a98abea36794b94d2052d80e81af892cf4e0.png)]

2.6.2 案例分析

  1. first agent
    1. source :netcat
    2. channel:memory
    3. sink:avro
  2. second agent
    1. source:exec
    2. channel:memory
    3. sink:avro
  3. third agent
    1. source:avro
    2. channel:memory
    3. sink:logger

2.6.3 编写脚本文件

第一个脚本监听端口到avro的

first.sources=s1
first.channels=c1
first.sinks=k1

first.sources.s1.type=netcat
first.sources.s1.bind=localhost
first.sources.s1.port=44444

first.channels.c1.type=memory
first.channels.c1.capacity=1000
first.channels.c1.transactionCapacity=500

first.sinks.k1.type=avro
first.sinks.k1.hostname=localhost
first.sinks.k1.port=60000

first.sources.s1.channels=c1
first.sinks.k1.channel=c1

第二脚本文件监听文件数据到avro的

second.sources=s1
second.channels=c1
second.sinks=k1

second.sources.s1.type=exec
second.sources.s1.command=tail -F /root/second.txt

second.channels.c1.type=memory
second.channels.c1.capacity=1000
second.channels.c1.transactionCapacity=500

second.sinks.k1.type=avro
second.sinks.k1.hostname=localhost
second.sinks.k1.port=60000

second.sources.s1.channels=c1
second.sinks.k1.channel=c1

第三个脚本文件监听avro汇总的数据到logger的

third.sources=s1
third.channels=c1
third.sinks=k1

# avro类型当作source  需要 bind和port参数 如果当作sink使用 需要hostname port
third.sources.s1.type=avro
third.sources.s1.bind=localhost
third.sources.s1.port=60000

third.channels.c1.type=memory
third.channels.c1.capacity=1000
third.channels.c1.transactionCapacity=500

third.sinks.k1.type=logger

third.sources.s1.channels=c1
third.sinks.k1.channel=c1

2.6.4 启动脚本程序

先启动第三个脚本,再启动第一个和第二脚本

三、Hadoop、Hive、SQOOP、Flume、Zookeeper(HA高可用)、Azkaban

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

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

相关文章

NFT Insider #104:The Sandbox:全新土地销售活动 Turkishverse 来袭

引言:NFT Insider由NFT收藏组织WHALE Members、BeepCrypto联合出品,浓缩每周NFT新闻,为大家带来关于NFT最全面、最新鲜、最有价值的讯息。每期周报将从NFT市场数据,艺术新闻类,游戏新闻类,虚拟世界类&#…

校园供水系统智能管理

import pandas as pd data1pd.read_excel("C://Users//JJH//Desktop//E//附件_一季度.xlsx") data2pd.read_excel("C://Users//JJH//Desktop//E//附件_二季度.xlsx") data3pd.read_excel("C://Users//JJH//Desktop//E//附件_三季度.xlsx") data4…

Unity3D Pico VR 手势识别 二

Unity3D Pico VR 手势识别_Cool-浩的博客-CSDN博客 此篇主要讲解怎么手势追踪,手势姿态自定义预制识别,不会导入SDK和配置环境的请看上一章节 环境要求 SDK 版本:2.3.0 及以上PICO 设备型号:PICO Neo3 和 PICO 4 系列PICO 设备系…

Elasticsearch 集成---Spark Streaming 框架集成

一.Spark Streaming 框架介绍 Spark Streaming 是 Spark core API 的扩展,支持实时数据流的处理,并且具有可扩展, 高吞吐量,容错的特点。 数据可以从许多来源获取,如 Kafka , Flume , Kin…

网络地址转换NAT-动态NAT的使用范围和配置-思科EI,华为数通

网络地址转换NAT-动态NAT的使用范围和配置 什么是动态NAT? 使用公有地址池,并以先到先得的原则分配这些地址。当具有私有 IP 地址的主机请求访问 Internet 时,动态 NAT 从地址池中选择一个未被其它主机占用的 IP 地址一对一的转化。当数据会话…

操作无法完成错误0x0000709的解决方法分享,教你快速修复错误代码问题

在使用计算机时,我们有时会遇到各种错误代码。其中之一是错误代码0x0000709,表示操作无法完成。这个错误代码可能由多种原因引起,但幸运的是,我们可以采取一些措施来解决它。本文将介绍错误代码0x0000709的含义,提供几…

使用vlc在线播放rtsp视频url

1. 2. 3. 工具链接: https://download.csdn.net/download/qq_43560721/88249440

人效九宫格城市沙龙暨《人效九宫格白皮书》发布会 —上海站,圆满结束

8月11日,在上海龙之梦万丽酒店,由盖雅工场主办的人效九宫格城市沙龙暨《人效九宫格白皮书》发布会 —上海站,圆满结束。 近百位来自多个行业的企业管理者及人力资源从业者汇聚一堂,共同探讨企业如何将盈利模式从数量增长转为质量增…

生成式 AI 在 Gartner 的 2023 年炒作周期中备受关注

原创 | 文 BFT机器人 01 背景 Gartner, Inc. 在其最新的 2023 年新兴技术炒作周期中,将生成人工智能(AI)定位于膨胀期望的顶峰,预计它将在未来两到五年内带来转型效益。这种人工智能变体是更广泛的新兴人工智能趋势的一部分,预示…

挂耳式运动耳机哪个款式戴着跑步舒服、挂耳式运动耳机推荐

对于和我一样热爱健身和运动的人来说,音乐就像一种调动情绪的"兴奋剂",在戴上耳机、聆听着动感的音乐时,我们能够感受到肌肉的收缩,完全沉浸在自己的世界中。这种状态让我们的训练状态达到巅峰,快乐倍增。因…

暖手宝方案

充电暖手宝因为它的便携性,既能供暖又能当充电宝使用而备受人们喜爱。航誉微推出充电暖手宝方案,主控芯片为航誉微单片机HU系列,具有智能温控功能,可定制冷光显示屏。一、暖手宝方案原理 目前,市场常见的暖手宝大致有三…

大数据领域都有什么发展方向

近年来越来越多的人选择大数据行业,大数据行业前景不错薪资待遇好,各大名企对于大数据人才需求不断上涨。 大数据从业领域很宽广,不管是科技领域还是食品产业,零售业等都是需要大数据人才进行大数据的处理,以提供更好…

钡铼技术BL102 PLC网关案例:远程调试西门子PLC程序

网口PLC 远程下载 1、打开网关配置软件,点击“搜索”,搜索局内网网关BL102 ​2、搜索到的网关设备,选择要配置的设备,双击登录 ​3、输入登录密码登录,默认是123456 ​4、配置网关网口采集PLC,远程下载暂…

行业首家·合规典范|昂首资本携手菲律宾警察局,树立经纪商合规经营典范

Anzo Capital 昂首资本携手菲律宾达沃市警察局长阿尔贝托P卢帕兹受邀参加由 AFP-PNP Southern Mindanao Press Corps( 菲律宾武装部队(AFP)和菲律宾国家警察(PNP)南部棉兰老岛记者团)举办的新闻发布会。 本次新闻发布会在菲律宾达沃市皇家曼达亚酒店举行,Anzo Cap…

STM32 + RTThread + UGUI

一、概述 开发板:STM32F103C8T6显示器:ST7735SRT-Thread:5.0.0 玩过 GUI 的小伙伴都知道,界面的显示是一个个像素点组合起来的,那么直接构建出来炫酷的 GUI 还是相对比较困难的,所以我们一般都会使用一些…

反射机制-体会反射的动态性案例(尚硅谷Java学习笔记)

// 举例01 public class Reflect{ // 静态性 public Person getInstance(){return new Person(); }// 动态性 public T<T> getInstance(String className) throws Exception{Calss clzz Class.forName(className);Constructor con class.getDeclaredConstructor();con…

如何赋能音频行业更多创新 荔枝集团邀请华为云专家共探AIGC新动向

在互联网新时代&#xff0c;随着AIGC和大语言模型的技术突破&#xff0c;为音频产品提供了更多创新的可能性。8月25日下午&#xff0c;一场有关AIGC的技术交流论坛在位于广州的荔枝集团总部召开&#xff0c;并邀请华为云AI领域技术专家进行分享。华为云AIGC首席架构师&#xff…

网深科技与中科方德完成兼容性认证

网深科技的产品NetInside可观测性分析平台与国产中科方德主流操作系统完成兼容性适配&#xff0c;系统名称&#xff1a;方德高可信服务器操作系统V4.0&#xff0c;系统运行稳定&#xff0c;性能卓越&#xff0c;完美兼容&#xff0c;能够为广大用户提供灵活、专业、直观可视性&…

centos下配置SFTP且限制用户访问目录

一、SFTP使用场景 ftp是大多数网站的文件传输选择工具&#xff0c;但ftp并不是非常安全&#xff0c;并且在centos上搭建的vsftpd也非常的不稳定&#xff0c;偶尔会出现权限问题&#xff0c;例如500、或是账号密码不正确等等。 而SFTP是基于默认的22端口&#xff0c;是ssh内含…

23款奔驰GLS450升级原厂电动吸合门,体验绅士的关门状态

电吸门的工作原理是在门框(或门板边缘)上安装一个电磁线圈。当门打开时&#xff0c;电流会流过线圈&#xff0c;形成电磁场。这样&#xff0c;由于磁力的作用&#xff0c;当门靠近门框关闭时&#xff0c;门会自动关闭。 另外&#xff0c;电吸门也有有用的一面。如果下车&#…