Flume集群部署(手把手部署图文详细版)

news/2024/7/8 6:23:04 标签: flume, 大数据

前景概要:

      Kafka消息订阅系统在大数据业务中有着重要运用,尤其在实时业务中,kafka是必不可少的组件之一。

     Flume大数据组件中重要的数据采集工具,我们常利用Flume采集各种数据源的数据供其他组件分析使用。例如在实时业务中,我们常使用Flume将数据采集到Kafka中,以供实时组件Streaming或Spark等分析处理,Flume在大数据业务中有着重要的应用。

实验目的:

l   掌握kafka shell端生产者和消费者使用,实现数据的生成和实时消费(明天主要内容)

l   掌握Flume的配置和使用,能够使用Flume实现数据采集操作。

实验前提:

 在已经完成部署Hadoop集群的情况下

启动Hadoop集群

步骤 1    在node1节点执行以下命令:

> start-dfs.sh ; start-yarn.sh

返回信息中有以下内容,表示hadoop集群启动成功:

Starting namenodes on [node1]

Starting secondary namenodes [node1]

starting yarn daemons

1.1.1 验证Hadoop状态

步骤 1   使用jps命令在node1-4中查看Java进程

在node1中可以查看到 NameNode,SecondaryNameNode,ResourceManager

进程,在node2-4中可以查看到 NodeManager 和 Datanode 进程,表示hadoop集群状态正常。

>  jps

1538 WrapperSimpleApp

5732 SecondaryNameNode

5508 NameNode

6205 Jps

5918 ResourceManager

>  jps

3026 Jps

2740 DataNode

1515 WrapperSimpleApp

2862 NodeManager

步骤 2    访问,可以登录Namenode的Web界面:

访问Yran界面:

1.2安装与测试Flume

     步骤 1    下载并解压软件包

   在node01上执行如下命令:

>  cd /opt

> wget http://archive.apache.org/dist/flume/1.8.0/apache-flume-1.8.0-bin.tar.gz

>  tar –zxvf apache-flume-1.8.0-bin.tar.gz

>  mv apache-flume-1.8.0-bin /opt/flume-1.8.0

修改文件名字

      步骤 2    设置环境变量

在node1执行命令vim /etc/profile后,在文件末尾添加以下内容:

export FLUME_HOME=/opt/flume-1.8.0

export PATH=$PATH:$FLUME_HOME/bin

添加完成后,执行命令source /etc/profile,使环境变量生效

    步骤 3    修改配置文件

>  cd /opt/flume-1.8.0/conf

>  cp flume-conf.properties.template flume-conf.properties

  步骤 4    运行验证

   在node1上执行如下命令启动Flume测试用例

>  cd /opt/flume-1.8.0/bin

flume-ng agent --conf /opt/flume-1.8.0/conf/ --conf-file /opt/flume-1.8.0/conf/flume-conf.properties --name test -Dflume.root.logger=INFO,console  (执行之后命令会不动,等1分钟,另开SSH界面)

在node1上执行如下命令,验证flume安装结果

>  ps -ef |grep flume

当系统回显出现类似上面的信息时,表示flume安装成功

1.2.1 Flume数据到HDFS实验

在node1上执行以下命令

                  步骤 1    准备HDFS文件夹

在HDFS中创建flume存放数据的文件夹(作为sink的下沉地)

hdfs dfs -mkdir -p /flume/data

                  步骤 2    拷贝hadoop的jar包到$FLUME_HOME/lib下

cd /home/modules/hadoop-2.8.3/share/hadoop/common

cp *.jar $FLUME_HOME/lib

                  步骤 3    编辑flume conf配置文件

vim $FLUME_HOME/conf/hdfs.conf

#1、定义agent中各组件名称

agent1.sources=source1

agent1.sinks=sink1

agent1.channels=channel1



#2、source1组件的配置参数

agent1.sources.source1.type=exec

#手动生成/home/source.log手动生成

agent1.sources.source1.command=tail -n +0 -F /home/source.log



#3、channel1的配置参数

agent1.channels.channel1.type=memory

agent1.channels.channel1.capacity=1000

agent1.channels.channel1.transactionCapactiy=100



#4、sink1的配置参数

agent1.sinks.sink1.type=hdfs

agent1.sinks.sink1.hdfs.path=hdfs://node1:8020/flume/data

agent1.sinks.sink1.hdfs.fileType=DataStream

#时间类型

agent1.sinks.sink1.hdfs.useLocalTimeStamp=true

agent1.sinks.sink1.hdfs.writeFormat=TEXT

#文件前缀

agent1.sinks.sink1.hdfs.filePrefix=%Y-%m-%d-%H-%M

#60秒滚动生成一个文件

agent1.sinks.sink1.hdfs.rollInterval=60

#HDFS块副本数

agent1.sinks.sink1.hdfs.minBlockReplicas=1

#不根据文件大小滚动文件

agent1.sinks.sink1.hdfs.rollSize=0

#不根据消息条数滚动文件

agent1.sinks.sink1.hdfs.rollCount=0

#不根据多长时间未收到消息滚动文件

agent1.sinks.sink1.hdfs.idleTimeout=0



#5、将source和sink 绑定到channel

agent1.sources.source1.channels=channel1

agent1.sinks.sink1.channel=channel1

过程如下:

    步骤 4    启动Flume

cd /opt/flume-1.8.0/bin/

./flume-ng agent --conf $FLUME_HOME/conf --conf-file $FLUME_HOME/conf/hdfs.conf --name agent1 Dflume.root.logger=DEBUG,console

保持链接不变

  步骤 5    测试并查看结果

创建新的node1终端,新建/home/source.log并写入文件

touch /home/source.log

echo 111 >> /home/source.log

echo 111 >> /home/source.log

echo 111 >> /home/source.log

在旧终端中可以查看到输出采集信息,接下来我们查看HDFS

[root@node1 ~]# hdfs dfs -ls /flume/data

[root@node1 ~]# hdfs dfs -cat  /flume/data/2020-04-21-17-57.1587463023152

1.3 结论  

       Apache Flume 作为大数据生态系统中重要的数据收集和传输工具,通过其灵活的架构和强大的功能,为企业解决了日志管理、数据集成和实时数据处理的关键问题。深入理解 Flume 的定义、架构、原理、应用场景及常见命令,有助于读者在实际应用中更加高效地使用和管理 Flume。

       通过本文的介绍,希望读者能够对 Apache Flume 的部署有一个清晰的认识,并能够在实际工作中应用 Flume 解决复杂的数据收集和处理挑战。


http://www.niftyadmin.cn/n/5536641.html

相关文章

Flutter本地数据持久化的几种方式

目录 前言 一、shared_preferences 1.添加依赖 2.保存数据 3.读取数据 4.移除数据 5.Shared_preferences的优缺点 6.完整的示例代码 二、path_provider 1.导入path_provider 2.创建文件读写的目录 3.向文件中写入数据 4.从文件中读取数据 5.完整的示例代码 三、…

opencv 图像的缩放(放大,缩小),翻转与旋转

目录 opencv 图像的缩放(放大,缩小),翻转,旋转1、图像的缩放,旋转过程中为什么需要插值:2、常见的插值算法包括:3、图像的缩放,翻转,旋转:(1)图像…

R 绘图 - 饼图

R 绘图 - 饼图 饼图是一种常用的数据可视化工具,用于展示数据集中各个类别的相对比例。在R语言中,饼图可以通过多种方式绘制,其中最常用的是pie()函数。本文将详细介绍如何在R中创建和定制饼图,包括基本饼图的绘制、添加标签、调…

【安全攻防】网络安全中的序列化与反序列

1.序列化与反序列化 首先要了解序列化与反序列化的定义,以及序列化反序列化所用到的基本函数。 序列化:把对象转换为字节序列的过程称为对象的序列化,相当于游戏中的存档。 PHP中的序列化函数serialize() **serialize()**函数用于序列化对…

Spring:Spring中分布式事务解决方案

一、前言 在Spring中,分布式事务是指涉及多个数据库或系统的事务处理,其中事务的参与者、支持事务的服务器、资源管理器以及事务管理器位于分布式系统的不同节点上。这样的架构使得两个或多个网络计算机上的数据能够被访问并更新,同时将这些操…

adb shell ps -T打印出来参数的含义,以及D,T,Z代表的状态含义是什么?

在Android系统中,使用adb shell ps命令可以查看当前系统中运行的进程信息。当你添加-T选项时(注意,标准的ps命令在Android的adb shell中可能不直接支持-T选项,这通常与Linux中的ps命令略有不同),你可能是想…

Docker容器 为MySQL创建新用户和授权

当您需要为 MySQL 数据库创建一个新用户并配置其访问权限时,可以按照以下步骤操作。我将创建一个名为 newuser 的新用户,并为其授予在任何主机上访问所有数据库的权限。 创建新用户和授权步骤: 登录到 MySQL 服务器 首先,使用具有…

UE5的安装与基本操作(一)

文章目录 前言安装UE5新建第一个游戏项目基本游览方式对目标进行变换各种变换对齐 快速定位目标 总结 前言 Unreal Engine 5 (UE5) 是一款由 Epic Games 开发的实时 3D 创作平台,用于制作游戏、电影、动画、建筑可视化和其他类型的交互式体验。UE5 提供了一系列强大…