flume安装部署及使用

文章目录

  • 前言
  • 一、Flume定义
  • 二、Flume安装部署
    • 1.上传压缩包
    • 2.解压、修改配置文件
      • 2.1解压
      • 2.2修改配置文件
  • 三、Flume简单使用
      • 3.1 使用 Flume 监听一个端口,收集该端口数据,并打印到控制台
      • 3.2 使用 Flume 监听本地目录,将目录下的文件上传hdfs


前言

flume安装和使用


一、Flume定义

Flume是Cloudera提供的一个高可用的,高可靠的,分布式的海量日志采集、聚合和传输的系统,Flume支持在日志系统中定制各类数据发送方,用于收集数据;同时,Flume提供对数据进行简单处理,并写到各种数据接受方(可定制)的能力。

二、Flume安装部署

1.上传压缩包

如图:
flume安装部署及使用_第1张图片

2.解压、修改配置文件

2.1解压

tar -zxvf apache-flume-1.8.0-bin.tar.gz -C /usr
#解压后进行改名
mv apache-flume-1.8.0-bin flume

flume目录下有如下文件
flume安装部署及使用_第2张图片

2.2修改配置文件

进入flume目录下的conf目录 cd conf

#改名
mv flume-env.sh.template flume-env.sh
#编辑文件
vim flume-env.sh

添加如下内容
flume安装部署及使用_第3张图片


三、Flume简单使用

3.1 使用 Flume 监听一个端口,收集该端口数据,并打印到控制台

在flume下创建job目录,在job下创建任务文件
mkdir job
cd job
vim  flume-netcat-logger.conf

文件内容如下

# Name the components on this agent 
a1.sources = r1
a1.sinks = k1
a1.channels = c1

# Describe/configure the source 
a1.sources.r1.type = netcat
a1.sources.r1.bind = localhost
a1.sources.r1.port = 44444

# Describe the sink 
a1.sinks.k1.type = logger

# Use a channel which buffers events in memory 
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

开启flume监听端口

[root@master1 flume]# ./bin/flume-ng agent --conf conf --name a1 --conf-file 
job/flume-netcat-logger.conf -Dflume.root.logger=INFO,console

再开启一个窗口使用 nc工具对44444端口发送内容

若无nc工具可进行下载
yum install -y nc

flume安装部署及使用_第4张图片
接收成功
flume安装部署及使用_第5张图片
也可以使用telnet工具

*两者区别*
telnet可以实现的功能:
连接服务器端口,并进行通信
登录远程telnet服务器,使用命令行对其进行控制

nc可以实现的功能:
监听服务器端口,并与客户端通信(最多只能接收一个客户端)
对指定服务器进行端口扫描
作为客户端连接到远程服务器进行通信
[详见](https://blog.csdn.net/iknow_nothing/article/details/84335647)

telnet和nc区别详见链接
flume安装部署及使用_第6张图片flume安装部署及使用_第7张图片

3.2 使用 Flume 监听本地目录,将目录下的文件上传hdfs

  • 启动hadoop集群
#在hadoop安装目录下
sbin/start-all.sh
  • 创建监听目录
在job目录下创建要监听的目录
mkdir [目录名]
  • job目录下创建任务文件
vim flume-dir-hdfs.conf 
a1.sources = r1
a1.sinks = k1
a1.channels = c1

# Describe/configure the source
a1.sources.r1.type = spooldir
#监听的目录位置
a1.sources.r1.spoolDir = /usr/flume/job/[目录名]
a1.sources.r1.fileHeader = true
#忽略所有以.tmp结尾的文件,不上传
a1.sources.r1.ignorePattern = ([^ ]*\.tmp)

# Describe the sink
a1.sinks.k1.type = hdfs
#要存储的hdfs目录位置
a1.sinks.k1.hdfs.path = hdfs://master1:9000/[hdfs目录名]/%Y%m%d/%H
#上传文件的前缀
a1.sinks.k1.hdfs.filePrefix =[目录名]-
#是否按照时间滚动文件夹
a1.sinks.k1.hdfs.round = true
#多少时间单位创建一个新的文件夹
a1.sinks.k1.hdfs.roundValue = 1
#重新定义时间单位
a1.sinks.k1.hdfs.roundUnit = hour
#是否使用本地时间戳
a1.sinks.k1.hdfs.useLocalTimeStamp = true
#积攒多少个Event才flush到HDFS一次
a1.sinks.k1.hdfs.batchSize = 1000
#设置文件类型,可支持压缩
a1.sinks.k1.hdfs.fileType = DataStream
#多久生成一个新的文件
a1.sinks.k1.hdfs.rollInterval = 600
#设置每个文件的滚动大小
a1.sinks.k1.hdfs.rollSize = 134217700
#文件的滚动与Event数量无关
a1.sinks.k1.hdfs.rollCount = 0
#最小冗余数
a1.sinks.k1.hdfs.minBlockReplicas = 1


# Use a channel which buffers events in memory
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

  • 开启监听
[root@master1 flume]# ./bin/flume-ng agent --conf conf --name a1 --conf-file job/flume-dir-hdfs.conf
  • 进入创建的本地监听目录下创建新的文件并写入内容
  • vim testflumefile.txt
    flume安装部署及使用_第8张图片
  • hdfs查看
  • hdfs dfs -ls -R /cjz
  • hdfs dfs -cat /cjz/20210613/13/caojinze-.1623560682501.tmp
    flume安装部署及使用_第9张图片

你可能感兴趣的:(flume,ETL工具,flume,hadoop)