一、概述

  将事件写入 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的更多相关文章

  1. Hadoop实战-Flume之Hdfs Sink(十)

    a1.sources = r1 a1.sinks = k1 a1.channels = c1 # Describe/configure the source a1.sources.r1.type = ...

  2. [bigdata] 使用Flume hdfs sink, hdfs文件未关闭的问题

    现象: 执行mapreduce任务时失败 通过hadoop fsck -openforwrite命令查看发现有文件没有关闭. [root@com ~]# hadoop fsck -openforwri ...

  3. [ETL] Flume 理论与demo(Taildir Source & Hdfs Sink)

    一.Flume简介 1. Flume概述 Flume是Cloudera提供的一个高可用的,高可靠的,分布式的海量日志采集.聚合和传输的系统,Flume支持在日志系统中定制各类数据发送方,用于收集数据: ...

  4. Flume中的HDFS Sink配置参数说明【转】

    转:http://lxw1234.com/archives/2015/10/527.htm 关键字:flume.hdfs.sink.配置参数 Flume中的HDFS Sink应该是非常常用的,其中的配 ...

  5. 修改Flume-NG的hdfs sink解析时间戳源码大幅提高写入性能

    Flume-NG中的hdfs sink的路径名(对应参数"hdfs.path",不允许为空)以及文件前缀(对应参数"hdfs.filePrefix")支持正则解 ...

  6. HDFS Sink使用技巧

    1.文件滚动策略 在HDFS Sink的文件滚动就是文件生成,即关闭当前文件,创建新文件.它的滚动策略由以下几个属性控制: hdfs.rollInterval 基于时间间隔来进行文件滚动,默认是30, ...

  7. kafka产生的数据通过Flume存到HDFS中

    试验目标: 把kafka的生产者发出的数据流经由Flume放到HDFS来存储. 试验环境: java:1.8 kafka:2.11 flume:1.6 hadoop:2.8.5 试验流程: 1.进入z ...

  8. flume 中的 hdfs sink round 和roll

    http://blog.csdn.net/kntao/article/details/49278239 http://flume.apache.org/FlumeUserGuide.html#exec ...

  9. flume集成hdfs(hdfs开启kerberos认证)

    )当 sink 到 hdfs 时: ) 需修改 flume-env.sh 配置,增添 hdfs 依赖库: FLUME_CLASSPATH="/root/TDH-Client/hadoop/h ...

  10. 自定义flume的hbase sink 的序列化程序

    package com.hello.hbase; import java.nio.charset.Charset; import java.text.SimpleDateFormat; import ...

随机推荐

  1. 【报错解决】使用代理后从Github中clone仓库报错

    当电脑使用代理后,会造成Github的clone和push等功能无法正常使用 报错内容:Failed to connect to github.com port 443 after ***** ms: ...

  2. 推荐一款强大的开源物联网 Web 组态软件

    前言 快速发展的物联网(IoT)领域,设备管理和监控的需求日益增长.为了满足这一需求并提供更高效的解决方案. 向大家推荐一款强大的开源物联网Web组态软件.这款软件不仅具备灵活的可视化配置功能,还提供 ...

  3. k3s 轻量级Kubernetes 安装实例

    k3s是由Rancher开发的轻量级Kubernetes,支持嵌入式系统,边缘计算节点等 易于安装,所有组件都在一个小于100MB的二进制文件中,占用资源低 1.1.简单安装试例 curl -sfL ...

  4. 2024年1月Java项目开发指南14:关于post中的body和param以及java中的@RequestBody和@RequestParam

    在HTTP请求中,POST方法通常用于向服务器发送数据,这些数据可以在请求的body中,也可以在URL的param中.不过,这两者的使用方式和适用场景是不同的. Body:在POST请求中,body主 ...

  5. Springboot使用mongodb遇到问题及解决

    网上看到使用mongodb好像很简单,没有什么问题,可我一用就怎么都连不上,先看看我的配置 在pom.xml中添加依赖 1234 <dependency>    <groupId&g ...

  6. [转]CLion 2019去掉灰色参数提示(parameters hints)

    众所周知,clion是一个很好用的c plus plus IDE,刚装好的clion默认的设置多少有一些不符合口味的地方,在查看代码或者敲代码的时候看到如下这样的灰色提示,我是有点受不了的: 之前用的 ...

  7. python基础应用

    pip的使用 升级pip python3 -m pip install --upgrade pip 镜像源设置 查看镜像源 pip config list 指定镜像源更新依赖 pip3 install ...

  8. SQL统计数据之总结

    一.查询SQL SELECT t1.规则编号 AS 编码, t1.规则描述 AS 名称, SUM( CASE WHEN t3.DATA_SOURCES = '00' THEN 1 ELSE 0 END ...

  9. biancheng-算法教程

    目录http://c.biancheng.net/algorithm/ 1算法是什么2时间复杂度和空间复杂度3递归算法4斐波那契数列5分治算法6找数组的最大值和最小值7汉诺塔问题8贪心算法9部分背包问 ...

  10. sql注入学校后台

    有运气成分,遇到两个学校,子域名查询了一下发现有登录平台,然后就直接sql了 payload:admin'or 1=1--+ 很离谱,这年头这两学校还能直接被sql进入后台. 然后进学校后台后就可以直 ...