Flume | 安装部署
时间:2021-08-05
本文章向大家介绍Flume | 安装部署,主要包括Flume | 安装部署使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
Flume安装部署
- 地址
- 解压安装
- 下载
apache-flume-1.7.0-bin.tar.gz
上传到/opt/software
目录 解压到/opt/module/flume
- flume整体部署配置
- 将
flume/conf
下的flume-env.sh.template
文件修改为flume-env.sh
,并配置flume-env.sh
文件
mv flume-env.sh.template flume-env.sh
vi flume-env.sh
//java环境的地址
export JAVA_HOME=/opt/module/jdk1.8.0_144
- 整体配置完成
入门案例
- 要求:实时监控 Hive 日志,并上传到 HDFS 中
- Flume 要想将数据输出到 HDFS,须持有 Hadoop 相关 jar 包 将下列 jar 包拷贝到
/opt/module/flume/lib
文件夹下
- 新建文件夹
job
在文件夹中创建flume-file-hdfs.conf
文件 添加如下内容:
# Name the components on this agent
a2.sources = r2
a2.sinks = k2
a2.channels = c2
# Describe/configure the source
a2.sources.r2.type = exec
a2.sources.r2.command = tail -F /opt/module/hive/logs/hive.log
a2.sources.r2.shell = /bin/bash -c
# Describe the sink
a2.sinks.k2.type = hdfs
a2.sinks.k2.hdfs.path = hdfs://hadoop102:9000/flume/%Y%m%d/%H
#上传文件的前缀
a2.sinks.k2.hdfs.filePrefix = logs-
#是否按照时间滚动文件夹
a2.sinks.k2.hdfs.round = true
#多少时间单位创建一个新的文件夹
a2.sinks.k2.hdfs.roundValue = 1
#重新定义时间单位
a2.sinks.k2.hdfs.roundUnit = hour
#是否使用本地时间戳
a2.sinks.k2.hdfs.useLocalTimeStamp = true
#积攒多少个 Event 才 flush 到 HDFS 一次
a2.sinks.k2.hdfs.batchSize = 1000
#设置文件类型,可支持压缩
a2.sinks.k2.hdfs.fileType = DataStream
#多久生成一个新的文件
a2.sinks.k2.hdfs.rollInterval = 30
#设置每个文件的滚动大小
a2.sinks.k2.hdfs.rollSize = 134217700
#文件的滚动与 Event 数量无关
a2.sinks.k2.hdfs.rollCount = 0
# Use a channel which buffers events in memory
a2.channels.c2.type = memory
a2.channels.c2.capacity = 1000
a2.channels.c2.transactionCapacity = 100
# Bind the source and sink to the channel
a2.sources.r2.channels = c2
a2.sinks.k2.channel = c2
对于所有与时间相关的转义序列,Event Header 中必须存在以 “timestamp”的 key(除非hdfs.useLocalTimeStamp 设置为 true,此方法会使用TimestampInterceptor 自动添加timestamp)
如: a2.sinks.k2.hdfs.useLocalTimeStamp = true
- 配置解释
- 运行Flume
bin/flume-ng agent --conf conf/ --name a2 --conf-file job/flume-file-hdfs.conf
- 开启 Hadoop 和 Hive 并操作 Hive 产生日志
- 上HDFS上查看文件
产生一个flume文件夹代表成功
Flume 简单理解
- Sourc 负责用各种方式读取各种地点各种数据(如:从服务器本地读取动态变化的日志,静态的文件,考虑断点续传等等)
- Channel 负责传输(有保护作用,不至于读快来不及写导致应用崩溃)
- Sink 负责写把数据到各种地点(如:上传到HDFS、打印到控制台等等)
- Agent 是一个 JVM 进程,它以事件的形式将数据从源头送至目的 Agent 主要有 3 个部分组成,Source、Channel、Sink
- Event Flume 数据传输的基本单元,以 Event 的形式将数据从源头送至目的地。Event 由 Header 和 Body 两部分组成,Header 用来存放该 event 的一些属性,为 K-V 结构,Body 用来存放该条数据,形式为字节数组
- 基础架构图
原文地址:https://www.cnblogs.com/zhy-god/p/15100198.html
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- python-剑指offer11-15
- python-剑指offer16-20
- ArrayList源码学习
- Java程序员不缺对象,缺的是对象存储
- StringBuffer StringBulider String的区别
- 求X值问题
- python-剑指offer21-40
- Java8实战--引入流
- ThingJS数据对接方法介绍——Ajax
- python-剑指offer41-62
- 【python-opencv】读取、显示、写入图像
- WSL——windows上的linux子系统
- 【python-opencv】读取、显示、保存视频
- 超级账本——Hyperledger Fabric
- 【python-opencv】绘图(目标检测框及其置信度等)