Flume环境搭建_五种案例

http://flume.apache.org/FlumeUserGuide.html

A simple example

Here, we give an example configuration file, describing a single-node Flume deployment. This configuration lets a user generate events and subsequently logs them to the console.

# example.conf: A single-node Flume configuration

# 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

This configuration defines a single agent named a1. a1 has a source that listens for data on port 44444, a channel that buffers event data in memory, and a sink that logs event data to the console. The configuration file names the various components, then describes their types and configuration parameters. A given configuration file might define several named agents; when a given Flume process is launched a flag is passed telling it which named agent to manifest.

Given this configuration file, we can start Flume as follows:

$ bin/flume-ng agent --conf conf --conf-file example.conf --name a1 -Dflume.root.logger=INFO,console

Note that in a full deployment we would typically include one more option: --conf=<conf-dir>. The <conf-dir> directory would include a shell script flume-env.sh and potentially a log4j properties file. In this example, we pass a Java option to force Flume to log to the console and we go without a custom environment script.

From a separate terminal, we can then telnet port 44444 and send Flume an event:

$ telnet localhost 44444
Trying 127.0.0.1...
Connected to localhost.localdomain (127.0.0.1).
Escape character is '^]'.
Hello world! <ENTER>
OK

The original Flume terminal will output the event in a log message.

12/06/19 15:32:19 INFO source.NetcatSource: Source starting
12/06/19 15:32:19 INFO source.NetcatSource: Created serverSocket:sun.nio.ch.ServerSocketChannelImpl[/127.0.0.1:44444]
12/06/19 15:32:34 INFO sink.LoggerSink: Event: { headers:{} body: 48 65 6C 6C 6F 20 77 6F 72 6C 64 21 0D Hello world!. }

Congratulations - you’ve successfully configured and deployed a Flume agent! Subsequent sections cover agent configuration in much more detail.

以下为具体搭建流程

Flume搭建_案例一:单个Flume

 

安装node2上

1.   上传到/home/tools,解压,解压后移动到/home下

2.   重命名,并修改flume-env.sh

vi flume-env.sh

 
3.   配置Flume的环境变量
vi /etc/profile

source /etc/profile
查看Flume的版本,看Flume的环境变量是否配置成功

 
4.    在/home下创建tests_flume, 并创建flume配置文件

cd test_flume
vi flume1
 
5.    命令测试Flume是否安装成功
flume-ng agent --conf /home/test_flume --conf-file /home/test_flume/flume1 --name a1 -Dflume.root.logger=INFO,console

 
安装telnet
随意输入 
hi flume

切换窗口查看

 
退出 ctrl+]  quit
 

Flume搭建_案例二:两个Flume做集群

安装node1,node2上
  1. MemoryChanel配置
  2. capacity:默认该通道中最大的可以存储的event数量是100,
  3. trasactionCapacity:每次最大可以从source中拿到或者送到sink中的event数量也是100
  4. keep-alive:event添加到通道中或者移出的允许时间
  5. byte**:即event的字节量的限制,只包括eventbody
1.   node1,node2,上传压缩包到/home/tools下,解压,
2.

修改conf下的flume-env.sh中的java环境变量,
3.

在/etc/profile下

配置Flume的环境变量
4.

node1,node2下创建测试目录test_flume,并分别在node1,node2下创建配置文件——flume21,flume22

node1下创建flume21

 
node2下创建flume22

 
5.   node1,node2分别启动flume(注意因为node2在后面,所以先启动node2中flume,再启动node1中flume)
  1. 先启动node02的Flume
  2. flume-ng agent -n a1 -c conf -f avro.conf -Dflume.root.logger=INFO,console
  3. flume-ng agent -n a1 -c conf -f /home/test_flume/flume22 -Dflume.root.logger=INFO,console
  4. 再启动node01的Flume
  5. flume-ng agent -n a1 -c conf -f simple.conf2 -Dflume.root.logger=INFO,console
  6. flume-ng agent -n a1 -c conf -f /home/test_flume/flume21 -Dflume.root.logger=INFO,console
node2:

node1:

 
6.   打开telnet测试,node2输出结果

 

Flume搭建_案例三:如何监控一个文件的变化?

安装node2上
1.   node2,上传压缩包到/home/tools下,解压,
2.

修改conf下的flume-env.sh中的java环境变量,
3.

在/etc/profile下

配置Flume的环境变量
4.
node2下创建测试目录test_flume,node2下创建配置文件——flume3
mkdir test_flume
vi flume3

 
5.    node2启动flume
  1. 启动Flume
  2. flume-ng agent -n a1 -c conf -f exec.conf -Dflume.root.logger=INFO,console
  3. flume-ng agent -n a1 -c conf -f /home/test_flume/flume3 -Dflume.root.logger=INFO,console
6.    测试
在/home/test_flume下创建空文件演示 touch flume.exec.log
循环添加数据
for i in {1..50}; do echo "$i hi flume" >> flume.exec.log ; sleep 0.1; done

 
 

Flume搭建_案例四: 如何监控一个文件:目录的变化?

安装node2上
1.   node2,上传压缩包到/home/tools下,解压,
2.

修改conf下的flume-env.sh中的java环境变量,
3.

在/etc/profile下

配置Flume的环境变量
4.
node2下创建测试目录test_flume,node2下创建配置文件——flume4
mkdir test_flume
vi flume4

 
5.    node2启动flume

6.    测试

 
 

Flume搭建_案例五: 如何定义一个HDFS类型的Sink?

安装node2上

Flume搭建_案例五_配置项解读

1.   Flume中日期的格式
   什么时候会用?
       Flume收集的时候根据时间来创建,比如今天的产生的数据就创建20170216,昨天的就放在20170215下
!注意

 
2.   Flume是如何找到HDFS?
    Flume如果配置的是hdfs,它会根据系统中配置的环境变量去找
 
3.   Flume什么时候滚动生成新文件?
滚动的间隔,大小,数量
hdfs.rollInterval 30 Number of seconds to wait before rolling current file (0 = never roll based on time interval)
hdfs.rollSize 1024 File size to trigger roll, in bytes (0: never roll based on file size)
hdfs.rollCount 10 Number of events written to file before it rolled (0 = never roll based on number of events)

4.   多长时间没有操作,Flume将一个临时文件生成新文件?

hdfs.idleTimeout 0 Timeout after which inactive files get closed (0 = disable automatic closing of idle files)

5.   多长时间生成一个新的目录?(比如每10s生成一个新的目录)

四舍五入,没有五入,只有四舍

(比如57分划分为55分,5,6,7,8,9在一个目录,10,11,12,13,14在一个目录)

hdfs.round false Should the timestamp be rounded down (if true, affects all time based escape sequences except %t)
hdfs.roundValue 1 Rounded down to the highest multiple of this (in the unit configured using hdfs.roundUnit), less than current time.
hdfs.roundUnit second The unit of the round down value - secondminute or hour.
1.   node2,上传压缩包到/home/tools下,解压,
2.

修改conf下的flume-env.sh中的java环境变量,
3.

    在/etc/profile下

配置Flume的环境变量
4.
node2下创建测试目录test_flume,node2下创建配置文件——flume5
mkdir test_flume
vi flume5

 
5.    node2启动flume

 
6.    测试
查看hdfs文件
hadoop fs -ls /flume/...
hadoop fs -get /flume/...

 

Flume环境搭建_五种案例的更多相关文章

  1. Flume环境搭建_五种案例(转)

    Flume环境搭建_五种案例 http://flume.apache.org/FlumeUserGuide.html A simple example Here, we give an example ...

  2. Hadoop Hive概念学习系列之hive三种方式区别和搭建、HiveServer2环境搭建、HWI环境搭建和beeline环境搭建(五)

     说在前面的话 以下三种情况,最好是在3台集群里做,比如,master.slave1.slave2的master和slave1都安装了hive,将master作为服务端,将slave1作为服务端. 以 ...

  3. 从环境搭建到回归神经网络案例,带你掌握Keras

    摘要:Keras作为神经网络的高级包,能够快速搭建神经网络,它的兼容性非常广,兼容了TensorFlow和Theano. 本文分享自华为云社区<[Python人工智能] 十六.Keras环境搭建 ...

  4. 03 Mybatis:01.Mybatis课程介绍及环境搭建&&02.Mybatis入门案例

    mybatis框架共四天第一天:mybatis入门 mybatis的概述 mybatis的环境搭建 mybatis入门案例 -------------------------------------- ...

  5. Kafka开发环境搭建(五)

    如果你要利用代码来跑kafka的应用,那你最好先把官网给出的example先在单机环境和分布式环境下跑通,然后再逐步将原有的consumer.producer和broker替换成自己写的代码.所以在阅 ...

  6. [刘阳Java]_EasyUI环境搭建_第2讲

    在EasyUI的第1讲中我们介绍了学习EasyUI能够做什么,这次我们得快速搭建一个EasyUI环境,来测试一下它的运行效果 1.jQuery EasyUI环境搭建 <script type=& ...

  7. 第3章 文件I/O(5)_五种I/O模型

    6. I/O处理方式(5种I/O模型) 6.1 几个概念的辨析 (1)同步和异步 ①是访问数据的方式,主要是针对IO(资源.数据)而言的.关键在于I/O操作完成后,有没有提供通知机制. ②同步的IO, ...

  8. Linux 下LAMP环境搭建_【all】

    LAMP = Linux + Apache + Mysql + PHP 0. Linux环境搭建 Linux 系统安装[Redhat] 1.http服务软件分类及企业实战用途介绍 静态程序: Apac ...

  9. Linux 下LNMP环境搭建_【all】

    LNMP = Linux + Nginx + Mysql + PHP 1.0 Linux环境搭建 Linux 系统安装[Redhat] 1.1. FastCGI介绍 1.什么是CGI(common g ...

随机推荐

  1. Webpack 2 视频教程 014 - 深入理解 Webpack 2 中的 loader

    原文发表于我的技术博客 这是我免费发布的高质量超清「Webpack 2 视频教程」. Webpack 作为目前前端开发必备的框架,Webpack 发布了 2.0 版本,此视频就是基于 2.0 的版本讲 ...

  2. Git详解之九:Git内部原理

    Git 内部原理 不管你是从前面的章节直接跳到了本章,还是读完了其余各章一直到这,你都将在本章见识 Git 的内部工作原理和实现方式.我个人发现学习这些内容对于理解 Git 的用处和强大是非常重要的, ...

  3. Optimize For Ad Hoc Workloads

    --临时工作负载优化   即席查询:也就是查询完没放到Cache当中,每次查询都要重新经过编译,并发高的时候很耗性能: 参数化查询: 一方面解决了重编译问题,但随着数据库数据数据的变更,统计信息的更新 ...

  4. Shell脚本实现文件遍历和删除操作

    本文需要实现的功能如下:某文件夹下具有由按数字编号命名的文件夹,需要删除除最大编码外的文件. 具体实现 大致思路:循环遍历该文件夹下所有文件,正则匹配出最大编码文件:然后循环文件,删除除最大编码外的文 ...

  5. unittest单元测试框架详解

    unittest单元测试框架不仅可以适用于单元测试,还可以适用WEB自动化测试用例的开发与执行,该测试框架可组织执行测试用例,并且提供了丰富的断言方法,判断测试用例是否通过,最终生成测试结果.今天笔者 ...

  6. Java编程思想读书笔记(一)【对象导论】

    2018年1月7日15:45:58 前言 作为学习Java语言的经典之作<Java编程思想>,常常被人提起.虽然这本书出版十年有余,但是内容还是很给力的.很多人说这本书不是很适合初学者,我 ...

  7. Java第二章----对象和类

    从第一章到第二章整整隔了一个月的时间,这速度也是慢的无语了.因为这个月负责开发公司一个SaaS类型APP,忙的昏天暗地终于上线了,这才有时间写个博客.本章还是以概念为主,有点枯燥重在理解. 第一节:对 ...

  8. 在单链表和双链表中删除倒数第k个结点

    题目: 分别实现两个函数,一个可以删除单链表中倒数第K个节点,另一个可以删除双链表中倒数第K个节点. 要求: 如果链表长度为N,时间复杂度达到O(N),额外空间复杂度达到O(1). 解答: 让链表从头 ...

  9. Oracle 存储过程以及存储函数

    以下的一些例子是基于scott用户下的emp表的数据,一和二使用的均为in,out参数,最后一个综合练习使用了 in out参数 一.存储过程 1.创建无参的存储过程示例  ------ hello ...

  10. if与while相互嵌套,菱形*的实现.py

    """    *           * *         * * *       * * * *     * * * * *     * * * *       * ...