大数据技术之Flume 企业开发案例——聚合(7)

2024-08-28 21:52

本文主要是介绍大数据技术之Flume 企业开发案例——聚合(7),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

聚合

1)案例需求:

2)需求分析 

3)实现步骤:

准备工作

创建 flume1-logger-flume.conf

创建 flume2-netcat-flume.conf

创建 flume3-flume-logger.conf

执行配置文件


聚合

1)案例需求:

  • hadoop12 上的 Flume-1 监控文件 /opt/module/group.log
  • hadoop13 上的 Flume-2 监控某个端口的数据流,
  • Flume-1 与 Flume-2 将数据发送给 hadoop14 上的 Flume-3Flume-3 将最终数据打印到控制台。

2)需求分析 

多数据源汇总案例

 

3)实现步骤:

  1. 准备工作
    • 分发 Flume

    • [lzl@hadoop12 module]$ xsync flumexsync 是集群同步文件脚本,也就是在一台服务器分发文件给其他台服务器,脚本内容如下:
      #!/bin/bash
      #1. 判断参数个数
      if [ $# -lt 1 ]
      thenecho Not Enough Arguement!exit;
      fi
      #2. 遍历集群所有机器
      for host in hadoop12 hadoop13 hadoop14
      doecho ====================  $host  ====================#3. 遍历所有目录,挨个发送for file in $@do#4 判断文件是否存在if [ -e $file ]then#5. 获取父目录pdir=$(cd -P $(dirname $file); pwd)#6. 获取当前文件的名称fname=$(basename $file)ssh $host "mkdir -p $pdir"rsync -av $pdir/$fname $host:$pdirelseecho $file does not exists!fidone
      done
    • hadoop12hadoop13 以及 hadoop14/opt/module/flume/job 目录下创建一个 group3 文件夹。

      [lzl@hadoop12 job]$ mkdir group3
      [lzl@hadoop13 job]$ mkdir group3
      [lzl@hadoop14 job]$ mkdir group3
  2. 创建 flume1-logger-flume.conf
    • 配置 Source 用于监控 /opt/module/group.log 文件,配置 Sink 输出数据到下一级 Flume。

      hadoop12 上编辑配置文件

      [lzl@hadoop12 group3]$ vim flume1-logger-flume.conf

      添加如下内容

      # Name the components on this agent
      a1.sources = r1
      a1.sinks = k1
      a1.channels = c1# Describe/configure the source
      a1.sources.r1.type = exec
      a1.sources.r1.command = tail -F /opt/module/group.log
      a1.sources.r1.shell = /bin/bash -c# Describe the sink
      a1.sinks.k1.type = avro
      a1.sinks.k1.hostname = hadoop14
      a1.sinks.k1.port = 4141# Describe the channel
      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
  3. 创建 flume2-netcat-flume.conf
    • 配置 Source 监控端口 44444 数据流,配置 Sink 数据到下一级 Flume。

       

      hadoop13 上编辑配置文件

      [lzl@hadoop12 group3]$ vim flume2-netcat-flume.conf

      添加如下内容

      # Name the components on this agent
      a2.sources = r1
      a2.sinks = k1
      a2.channels = c1# Describe/configure the source
      a2.sources.r1.type = netcat
      a2.sources.r1.bind = hadoop13
      a2.sources.r1.port = 44444# Describe the sink
      a2.sinks.k1.type = avro
      a2.sinks.k1.hostname = hadoop14
      a2.sinks.k1.port = 4141# Use a channel which buffers events in memory
      a2.channels.c1.type = memory
      a2.channels.c1.capacity = 1000
      a2.channels.c1.transactionCapacity = 100# Bind the source and sink to the channel
      a2.sources.r1.channels = c1
      a2.sinks.k1.channel = c1
  4. 创建 flume3-flume-logger.conf
    • 配置 source 用于接收 flume1flume2 发送过来的数据流,最终合并后 sink 到控制台。

      hadoop14 上编辑配置文件

      [lzl@hadoop14 group3]$ touch flume3-flume-logger.conf
      [lzl@hadoop14 group3]$ vim flume3-flume-logger.conf

      添加如下内容

      # Name the components on this agent
      a3.sources = r1
      a3.sinks = k1
      a3.channels = c1# Describe/configure the source
      a3.sources.r1.type = avro 
      a3.sources.r1.bind = hadoop14
      a3.sources.r1.port = 4141# Describe the sink
      a3.sinks.k1.type = logger# Describe the channel
      a3.channels.c1.type = memory
      a3.channels.c1.capacity = 1000
      a3.channels.c1.transactionCapacity = 100# Bind the source and sink to the channel
      a3.sources.r1.channels = c1
      a3.sinks.k1.channel = c1
  5. 执行配置文件
    • 分别开启对应配置文件:flume3-flume-logger.confflume2-netcat-flume.confflume1-logger-flume.conf

      [lzl@hadoop14 flume]$ bin/flume-ng agent --conf conf/ --name 
      a3 --conf-file job/group3/flume3-flume-logger.conf 
      -Dflume.root.logger=INFO,console
      [lzl@hadoop12 flume]$ bin/flume-ng agent --conf conf/ --name 
      a2 --conf-file job/group3/flume1-logger-flume.conf
      [lzl@hadoop13 flume]$ bin/flume-ng agent --conf conf/ --name 
      a1 --conf-file job/group3/flume2-netcat-flume.conf
  6. hadoop13 上向 /opt/module 目录下的 group.log 追加内容

    [lzl@hadoop13 module]$ echo 'hello' >> group.log
  7. hadoop12 上向 44444 端口发送数据

    [lzl@hadoop12 flume]$ telnet hadoop13 44444
  8. 检查 hadoop14 上数据

 

这篇关于大数据技术之Flume 企业开发案例——聚合(7)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1115984

相关文章

Golang操作DuckDB实战案例分享

《Golang操作DuckDB实战案例分享》DuckDB是一个嵌入式SQL数据库引擎,它与众所周知的SQLite非常相似,但它是为olap风格的工作负载设计的,DuckDB支持各种数据类型和SQL特性... 目录DuckDB的主要优点环境准备初始化表和数据查询单行或多行错误处理和事务完整代码最后总结Duck

Python MySQL如何通过Binlog获取变更记录恢复数据

《PythonMySQL如何通过Binlog获取变更记录恢复数据》本文介绍了如何使用Python和pymysqlreplication库通过MySQL的二进制日志(Binlog)获取数据库的变更记录... 目录python mysql通过Binlog获取变更记录恢复数据1.安装pymysqlreplicat

Linux使用dd命令来复制和转换数据的操作方法

《Linux使用dd命令来复制和转换数据的操作方法》Linux中的dd命令是一个功能强大的数据复制和转换实用程序,它以较低级别运行,通常用于创建可启动的USB驱动器、克隆磁盘和生成随机数据等任务,本文... 目录简介功能和能力语法常用选项示例用法基础用法创建可启动www.chinasem.cn的 USB 驱动

基于Python开发电脑定时关机工具

《基于Python开发电脑定时关机工具》这篇文章主要为大家详细介绍了如何基于Python开发一个电脑定时关机工具,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1. 简介2. 运行效果3. 相关源码1. 简介这个程序就像一个“忠实的管家”,帮你按时关掉电脑,而且全程不需要你多做

Oracle数据库使用 listagg去重删除重复数据的方法汇总

《Oracle数据库使用listagg去重删除重复数据的方法汇总》文章介绍了在Oracle数据库中使用LISTAGG和XMLAGG函数进行字符串聚合并去重的方法,包括去重聚合、使用XML解析和CLO... 目录案例表第一种:使用wm_concat() + distinct去重聚合第二种:使用listagg,

Java中的Opencv简介与开发环境部署方法

《Java中的Opencv简介与开发环境部署方法》OpenCV是一个开源的计算机视觉和图像处理库,提供了丰富的图像处理算法和工具,它支持多种图像处理和计算机视觉算法,可以用于物体识别与跟踪、图像分割与... 目录1.Opencv简介Opencv的应用2.Java使用OpenCV进行图像操作opencv安装j

Python实现将实体类列表数据导出到Excel文件

《Python实现将实体类列表数据导出到Excel文件》在数据处理和报告生成中,将实体类的列表数据导出到Excel文件是一项常见任务,Python提供了多种库来实现这一目标,下面就来跟随小编一起学习一... 目录一、环境准备二、定义实体类三、创建实体类列表四、将实体类列表转换为DataFrame五、导出Da

Python实现数据清洗的18种方法

《Python实现数据清洗的18种方法》本文主要介绍了Python实现数据清洗的18种方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学... 目录1. 去除字符串两边空格2. 转换数据类型3. 大小写转换4. 移除列表中的重复元素5. 快速统

Python数据处理之导入导出Excel数据方式

《Python数据处理之导入导出Excel数据方式》Python是Excel数据处理的绝佳工具,通过Pandas和Openpyxl等库可以实现数据的导入、导出和自动化处理,从基础的数据读取和清洗到复杂... 目录python导入导出Excel数据开启数据之旅:为什么Python是Excel数据处理的最佳拍档

在Pandas中进行数据重命名的方法示例

《在Pandas中进行数据重命名的方法示例》Pandas作为Python中最流行的数据处理库,提供了强大的数据操作功能,其中数据重命名是常见且基础的操作之一,本文将通过简洁明了的讲解和丰富的代码示例,... 目录一、引言二、Pandas rename方法简介三、列名重命名3.1 使用字典进行列名重命名3.编