Flume - [03] HDFS Sink
一、概述
将事件写入 Hadoop 分布式文件系统(HDFS)。目前支持创建文本和序列文件。支持两种文件类型的压缩。可以根据经过的时间、数据大小或事件数 周期性地滚动文件(关闭当前文件并创建文件)。根据事件起源的时间戳或机器等属性对数据进行存储/分区。HDFS目录路径可能包好格式转义序列,这些转义序列将被 HDFS 接收器替换,以生成目录/文件名来存储事件。
HDFS Sink 会将监控到的目录中新文件(大文件)切分成多个小文件上传到 HDFS中。
二、配置
1、首先在flume-env.sh中配置HADOOP_HOME
2、配置HDFS sink的properties文件
# flume配置的例子
# Name the components on this agent
# source:起一个别名
# properties文件它是java的配置文件,=左边就是键,=右边是值;键的开头都是以a1(就是flume的名字--agent的名字就是a1);a1随便起
a1.sources = r1
# sink:起一个别名
a1.sinks = k1
# channels;:起一个别名
a1.channels = c1
# Describe/configure the source
# spooldir:监控硬盘上指定的某个目录,如果文件发生变化,会被flume捕获;
a1.sources.r1.type = spooldir
# 要监控的目录,此目录必须存在
a1.sources.r1.spoolDir =/root/flume/
# 已经完成的文件,会加上一个后缀
a1.sources.r1.fileSuffix =.ok
# 已经完成的文件,会立即删除,默认值是never;(永不删除)
# a1.sources.r1.deletePolicy =immediate
# 是否添加存储绝对路径文件名的标题
a1.sources.r1.fileHeader =true
# 只处理此目录下面的txt文件;
a1.sources.r1.includePattern =^[\\w]+\\.txt$
# Describe the sink
# 描述一个sink: logger日志(打印到控制台上)
a1.sinks.k1.type = hdfs
# hdfs的路径;配置hdfs一定要是大哥的路径;(必须是active)
a1.sinks.k1.hdfs.path =hdfs://node-1:8020/flume/%Y-%m-%d/
# 文件的前缀
a1.sinks.k1.hdfs.filePrefix =event
# 文件的后缀
a1.sinks.k1.hdfs.fileSuffix =.txt
# hdfs.inUsePrefix临时文件的前缀,hdfs.inUseSuffix临时文件的后缀
# hdfs.codeC 文件压缩
# 输出原来的文件内容,不要压缩
a1.sinks.k1.hdfs.fileType=DataStream
# 设置文件的格式为textFile
a1.sinks.k1.hdfs.writeFormat=Text
# 如果路径里面有时间,必须要加上hdfs.useLocalTimeStamp=true
a1.sinks.k1.hdfs.useLocalTimeStamp=true
# 时间舍去法;%y,%m,%d(机器的本地时间),集群中所有时间是一样的;(如果集中所有的服务器时间不一样,允许时间有误差;统一是当前时间-误差)
# 当前的时间允许的误差是20s;
a1.sinks.k1.hdfs.round = true
# 每隔多长时间
a1.sinks.k1.hdfs.roundValue = 20
# 时间单位
a1.sinks.k1.hdfs.roundUnit = second
# roll:滚动;时间30s,如果flume发现有新文件,上传到hdfs上,等待30秒
# 避免有大文件,拆分成多个小文件;(准备一个大文件);三种策略选择一个(目的是不让文件拆分)
# 在等待的30秒以内,如果此文件发生了修改(也会进行拆分)
a1.sinks.k1.hdfs.rollInterval=30
# 滚动,新增加的文件大小(等待时间期间);0:表示不生效(1kb)
a1.sinks.k1.hdfs.rollSize=1024
# 滚动多少行(新增加多少行)(等待时间期间),每隔10行会在hdfs上生成一个新文件;0:表示不生效
a1.sinks.k1.hdfs.rollCount=0
# Use a channel which buffers events in memory
# 描述一下channel:内存
a1.channels.c1.type = memory
# capacity:容量
a1.channels.c1.capacity = 1000000
# transactionCapacity:事务的容量
a1.channels.c1.transactionCapacity = 1000000
# Bind the source and sink to the channel
# 绑定;source和channel绑定
a1.sources.r1.channels = c1
# sink和channel绑定
a1.sinks.k1.channel = c1
三、测试
1、启动flume
bin/flume-ng agent --conf conf \
--conf-file conf/xxx_xxx.properties \
--name a1 \
-Dflume.root.logger=INFO,console
# 或者是
bin/flum-ng agent -c conf \
-f conf/xxx_xxx.proeprties \
-n a1 -Dflume.root.logger=INFO,console
2、在/root/flume目录下放置文件(新建/移动)
source中配置了监控文件的格式为txt文件
3、观察hdfs目录/flume/%Y-%m-%d下的变化
— 要养成终生学习的习惯 —
Flume - [03] HDFS Sink的更多相关文章
- Hadoop实战-Flume之Hdfs Sink(十)
a1.sources = r1 a1.sinks = k1 a1.channels = c1 # Describe/configure the source a1.sources.r1.type = ...
- [bigdata] 使用Flume hdfs sink, hdfs文件未关闭的问题
现象: 执行mapreduce任务时失败 通过hadoop fsck -openforwrite命令查看发现有文件没有关闭. [root@com ~]# hadoop fsck -openforwri ...
- [ETL] Flume 理论与demo(Taildir Source & Hdfs Sink)
一.Flume简介 1. Flume概述 Flume是Cloudera提供的一个高可用的,高可靠的,分布式的海量日志采集.聚合和传输的系统,Flume支持在日志系统中定制各类数据发送方,用于收集数据: ...
- Flume中的HDFS Sink配置参数说明【转】
转:http://lxw1234.com/archives/2015/10/527.htm 关键字:flume.hdfs.sink.配置参数 Flume中的HDFS Sink应该是非常常用的,其中的配 ...
- 修改Flume-NG的hdfs sink解析时间戳源码大幅提高写入性能
Flume-NG中的hdfs sink的路径名(对应参数"hdfs.path",不允许为空)以及文件前缀(对应参数"hdfs.filePrefix")支持正则解 ...
- HDFS Sink使用技巧
1.文件滚动策略 在HDFS Sink的文件滚动就是文件生成,即关闭当前文件,创建新文件.它的滚动策略由以下几个属性控制: hdfs.rollInterval 基于时间间隔来进行文件滚动,默认是30, ...
- kafka产生的数据通过Flume存到HDFS中
试验目标: 把kafka的生产者发出的数据流经由Flume放到HDFS来存储. 试验环境: java:1.8 kafka:2.11 flume:1.6 hadoop:2.8.5 试验流程: 1.进入z ...
- flume 中的 hdfs sink round 和roll
http://blog.csdn.net/kntao/article/details/49278239 http://flume.apache.org/FlumeUserGuide.html#exec ...
- flume集成hdfs(hdfs开启kerberos认证)
)当 sink 到 hdfs 时: ) 需修改 flume-env.sh 配置,增添 hdfs 依赖库: FLUME_CLASSPATH="/root/TDH-Client/hadoop/h ...
- 自定义flume的hbase sink 的序列化程序
package com.hello.hbase; import java.nio.charset.Charset; import java.text.SimpleDateFormat; import ...
随机推荐
- Write failed: Broken pipe > Couldn‘t read packet: Connection reset by peer SFTP服务器连接出现的问题
如果你链接服务器的时候出现下面的提示: Write failed: Broken pipeCouldn't read packet: Connection reset by peer这个问题的原因是C ...
- k8s calico-node错误日志 listen tcp: lookup localhost on 8.8.4.4:53: no such host
项目场景:K8s搭建 问题描述:查看pods状态,发现 calico-node异常[root@k8s-master ~]# kubectl get pods --all-namespacesNAMES ...
- MySQL百万级数据量分页查询方法及其优化
1. 直接用limit start, count分页语句, 也是我程序中用的方法: select * from product limit start, count 当起始页较小时,查询没有性能问题, ...
- IDEA跳转到上一个下一个方法的快捷键
假如一个方法很不规范,写了好几百行,你想去下一个方法,如果用鼠标往下滑,会挺崩溃的.或者有的时候,就是需要一个一个方法往下看,那么IDEA有没有这样方便的快捷键呢?是有的:按住Alt键,再按上/下方向 ...
- Qt编写视频监控系统79-四种界面导航栏的设计
一.前言 最初视频监控系统按照二级菜单的设计思路,顶部标题栏一级菜单,左侧对应二级菜单,最初采用图片在上面,文字在下面的按钮方式展示,随着功能的增加,二级菜单越来越多,如果都是这个图文上下排列的按钮, ...
- 如何在cmake中添加lib库
如何在cmake中添加lib库: 生成lib文件 libhello.a add_library(hello hello.cxx) # 在top level添加子目录 add_subdirectory( ...
- C#程序如何把窗体文件从一个项目中复制到另一个项目
一个窗体有三个文件,全部拷贝到新的项目中 在新的项目中点击显示所有文件,然后右击导入的文件,点击包括在项目中,会自动修改颜色(此时还没有被识别为窗体) 重启这个项目,三个文件已经被识别出来了 原文链接 ...
- Eclipse中如何将web应用部署到tomcat
第1种方法: 将workspace下的复制到tomcat的webapp下(我看度还是算了,看着都觉得麻烦). 第2种方法:总体思路就是:(1)先为web应用创建Tomcat Server:(2)再将w ...
- Solution Set -「LOCAL」冲刺省选 Round XXIX
\(\mathscr{Summary}\) 啊--说老实话,早上昏昏欲睡的,起码浪费了一个多小时.比赛打麻了 qwq. A 题类似费用提前计算,回忆起这个 trick 之后就简单了.B 题又错 ...
- net core 中的[FromBody]
一.针对.net core中post类型的api注意的地方(前提是Controller上加[ApiController]特性).默认是这个. 1.如果客户端Content-Type是applicati ...