Flume – 初识flume、source和sink

目录
基本概念
常用源 Source
常用sink

基本概念

 什么叫flume?
  分布式,可靠的大量日志收集、聚合和移动工具。

 events
  事件,是一行数据的字节数据,是flume发送文件的基本单位。

 flume配置文件
  重命名flume-env.sh.template为flume-env.sh,并添加[export JAVA_HOME=/soft/jdk]

 flume的Agent
  source //从哪儿读数据。 负责监控并收集数据。相对于channel是生产者。
  channel //数据通道。 通道,相当于数据缓冲区。
  sink //将数据传送往哪儿。 沉槽,负责将数据放置在指定位置。相对于channel是消费者。

 flume如何使用
  在flume的conf文件下,创建conf后缀的文件,使用flume命令启动

 flume命令
  启动:flume-ng agent -f /soft/flume/conf/example.conf -n a1

常用源 Source

 执行源:Exec Sour //通过linux命令作为source。缺点:失败后数据会丢失,不能保证数据的完整性。
  #定义源:exec
  a1.source.r1.type = exec
  a1.source.r1.command = tail -F /home/centos/1.txt
 滚动目录源:Spooling Directory Source //监控目录,如果目录下有新文件产生,机会将其消费
  #定义源:spoodir
  a1.source.r1.type = spooldir
  #指定监控目录
  a1.source.r1.spoolDir = /home/centos/log
 指定类型的文件:tailDir source #监控目录中指定类型的文件,并监控其消费偏移量;
 通过~/.flume/taildir_position.json监控并实时记录文件偏移量,可通过a1.sources.r1.positionFile配置进行修改
  #定义源:TAILDIR
  a1.source.r1.type = TAILDIR
  #指定监控文件组
  a1.source.r1.filegroups = g1
  #指定g1组中包含的文件
  a1.source.r1.filegroups.g1 = /home/centos/log/.*log
 顺序数字源:Sequence Generator Source //产生顺序数字的源,用作测试
  #定义源:seq
  a1.source.r1.type = seq
  #定义一次RPC产生的批次数量
  a1.source.r1.batchSize = 1024
 压力源:Stress Source //测试集群压力,用作负载测试
  #定义源:stress
  a1.source.r1.type = org.apache.flume.source.StressSource
  #一个event产生的数据量
  a1.source.r1.size = 1073741824

常用sink

 日志&控制台:logger sink
  a1.sinks.k1.type = logger
 存储在本地文件:File Roll Sink
  #设置滚动文件sink
  a1.sinks.k1.type = file_roll
  #指定文件位置。若文件不存在会报错
  a1.sinks.k1.directory = /home/centos/log2
  #设置滚动周期间隔,0即不滚动;默认30s。
  a1.sinks.k1.sink.rollInterval = 0
 写入到hdfsL:HDFS Sink //默认SequenceFile,可以通过hdfs.fileType指定(SequenceFile, DataStream or CompressedStream)
  #指定类型
  a1.sinks.k1.type = hdfs
  #指定路径,不用单独创建文件夹
  a1.sinks.k1.hdfs.path = /flume/events/%y-%m-%d/%H
  #时间相关的配置,必须指定时间戳
  a1.sinks.k1.hdfs.useLocalTimeStamp = true
  #实例化文件的前缀
  a1.sinks.k1.hdfs.filePrefix = events-
  #滚动间隔,0为不滚动
  a1.sinks.k1.hdfs.rollInterval = 0
  #滚动大小;默认1024
  a1.sinks.k1.hdfs.rollSize = 1024
  #指定数据类型;默认为 sequenceFile
  a1.sinks.k1.hdfs.fileType = CompressedStream
  #指定压缩编解码器
  a1.sinks.k1.hdfs.codeC = gzip
 写入到Hbase:hbase sink //需要创建表,无法指定rowkey和col
  #设置类型
  a1.sinks.k1.type = hbase
  a1.sinks.k1.table = ns1:flume
  a1.sinks.k1.columnFaminly = f1
 写入到Hbase:regexhbase sink //需要创建表,可以手动指定rowKey和col
  #设置正则hbase类型
  a1.sinks.k1.type = hbase
  a1.sinks.k1.serializer = org.apache.flume.sink.hbase.RegexHbaseEventSerializer
  #手动指定rowkey和列,[ROW_KEY]必须些,且大写
  a1.sinks.k1.serializer.colNames = ROW_KEY,name,age
  #指定正则,与col对应
  a1.sinks.k1.serializer.regex = (.*),(.*),(.*)
  #指定rowkey索引
  a1.sinks.k1.serializer.rowKeyIndex = 0
  a1.sinks.k1.table = ns1:flume
  a1.sinks.k1.coluFamily = f1
 写入到Hive:hive sink //需要启动hive的事务性
  # 设置hive sink
  a1.sinks.k1.type = hive
  # 需要启动hive的metastore:hive --service metastore //metastore源数据仓库
  a1.sinks.k1.hive.metastore = thrift://s101:9083
  a1.sinks.k1.hive.database = default
  # 需要创建事务表
  a1.sinks.k1.hive.table = tx2
  # 指定列和字段的映射
  a1.sinks.k1.serializer = DELIMITED
  # 指定输入的格式,必须是双引号
  a1.sinks.k1.serializer.delimiter = "\t"
  # 指定hive存储文件展现方式,必须是单引号
  a1.sinks.k1.serializer.serdeSeparator = '\t'
  a1.sinks.k1.serializer.fieldnames =id,name,age
 写入到hive补充
  1、首先将/soft/hive/hcatalog/share/hcatalog中的所有jar拷贝到hive的lib库中
    cp /soft/hive/hcatalog/share/hcatalog/* /soft/hive/lib/
  2、启动hive的metastore
    hive --service metastore
  3、启动hive并创建事务表
    SET hive.support.concurrency = true;
    SET hive.enforce.bucketing = true;
    SET hive.exec.dynamic.partition.mode = nonstrict;
    SET hive.txn.manager = org.apache.hadoop.hive.ql.lockmgr.DbTxnManager;
    SET hive.compactor.initiator.on = true;
    SET hive.compactor.worker.threads = 1;
    create table tx2(id int ,name string, age int ) clustered by (id) into 2 buckets stored as orc TBLPROPERTIES('transactional'='true');
  4、启动flume,并使用以上的配置文件
    flume-ng agent -f k_hive.conf -n a1
  5、输入数据验证
    1 tom 18

Flume:source和sink的更多相关文章

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

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

  2. flume组件汇总 source、sink、channel

    Flume Source Source类型 说明 Avro Source 支持Avro协议(实际上是Avro RPC),内置支持 Thrift Source 支持Thrift协议,内置支持 Exec  ...

  3. Flume自定义Source、Sink和Interceptor(简单功能实现)

    1.Event event是flume传输的最小对象,从source获取数据后会先封装成event,然后将event发送到channel,sink从channel拿event消费. event由头he ...

  4. flume-ng 自定义sink消费flume source

    如何从一个已经存在的Flume source消费数据 1.下载flume wget http://www.apache.org/dist/flume/stable/apache-flume-1.5.2 ...

  5. Flume的Avro Sink和Avro Source研究之二 : Avro Sink

    啊,AvroSink要复杂好多:< 好吧,先确定主要问题: AvroSink为啥这么多代码?有必要吗?它都有哪些逻辑需要实现? 你看,avro-rpc-quickstart里是这么建client ...

  6. FLUME KAFKA SOURCE 和 SINK 使用同一个 TOPIC

    FLUME KAFKA SOURCE 和 SINK 使用同一个 TOPIC 最近做了一个事情,过滤下kakfa中的数据后,做这个就用到了flume,直接使用flume source 和 flume s ...

  7. Flume的Source、Sink总结,及常用使用场景

    数据源Source RPC异构流数据交换 Avro Source Thrift Source 文件或目录变化监听 Exec Source Spooling Directory Source Taild ...

  8. Flume(二) —— 自定义拦截器、Source、Sink

    自定义拦截器 自定义Source 自定义Sink 引入依赖 <dependency> <groupId>org.apache.flume</groupId> < ...

  9. Flume的Avro Sink和Avro Source研究之一: Avro Source

    问题 : Avro Source提供了怎么样RPC服务,是怎么提供的? 问题 1.1 Flume Source是如何启动一个Netty Server来提供RPC服务. 由GitHub上avro-rpc ...

随机推荐

  1. 设计模式:备忘录(Memento)模式

    设计模式:备忘录(Memento)模式 一.前言   备忘录模式用于保存和恢复对象的状态,相信大家看过我前面的拙作就会想到原型模式也能保存一个对象在某一个时刻的状态,那么两者有何不同的呢?原型模式保存 ...

  2. shell----删除文件中的^M

    在Linux下使用vi来查看一些在Windows下创建的文本文件,有时会发现在行尾有一些“^M”.有几种方法可以处理. 1.使用vi的替换功能.启动vi,进入命令模式,输入以下命令: :%s/^M$/ ...

  3. ZT ---- 给孩子的信(孩子写给爸爸妈妈的信在24、25、26楼)

    胡同口 > 情感 > 婚后空间 > 给孩子的信(孩子写给爸爸妈妈的信在24.25.26楼) 给孩子的信(孩子写给爸爸妈妈的信在24.25.26楼)分享: 腾讯微博 新浪微博 QQ空间 ...

  4. Android进阶笔记14:3种JSON解析工具(org.json、fastjson、gson)

    一. 目前解析json有三种工具:org.json(Java常用的解析),fastjson(阿里巴巴工程师开发的),Gson(Google官网出的),其中解析速度最快的是Gson. 3种json工具下 ...

  5. jsp 页面显示格式化的日期

    在页面引入 <%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %> 使用 ...

  6. Linux修改权限命令chmod用法详解

    Linux系统中的每个文件和目录都有访问许可权限,用它来确定谁可以通过何种方式对文件和目录进行访问和操作. 文件或目录的访问权限分为只读,只写和可执行三种.以文件为例,只读权限表示只允许读其内容,而禁 ...

  7. iOS学习笔记09-核心动画CoreAnimation

    http://www.cnblogs.com/liutingIOS/p/5368536.html 一.CALayer CALayer包含在QuartzCore框架中,具有跨平台性,在iOS中使用Cor ...

  8. Selenium应用代码(读取excel的内容进行注册的案例)

    1. 封装读取excel数据的方法:import java.io.*;import java.util.ArrayList;import java.util.List; import jxl.*;im ...

  9. Coursera 机器学习基石 第4讲 学习的可行性

    这一节讲述的是机器学习的核心.根本性问题——学习的可行性.学过机器学习的我们都知道,要衡量一个机器学习算法是否具有学习能力,看的不是这个模型在已有的训练数据集上的表现如何,而是这个模型在训练数据外的数 ...

  10. Windows 10推送的锁屏壁纸保存方法

    Windows 10推送的锁屏壁纸保存方法 工作中使用的系统为Windows 10,锁屏时显示的壁纸很漂亮,并且每天都会更新,有几张特别喜欢,于是就想这些壁纸到底保存在哪里呢?经过一番摸索,终于搞明白 ...