博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Flume
阅读量:5327 次
发布时间:2019-06-14

本文共 3233 字,大约阅读时间需要 10 分钟。

 

一、Flume概述

      Flume是一个分布式的数据收集系统, 具有高可靠、 高可用、 事务管理、 失 败重启等功能。 数据处理速度快, 完全可以用于生产环境。
      Flume的核心是agentagent是一个java进程, 运行在日志收集端, 通过agent 接收日志, 然后暂存起来, 再发送到目的地。 
     

 

1、Flume是一个海量日志收集系统,由Cloudera公司推出。

2、Flume中,事务(Event)是最小的数据单位,通常代表一行记录(一条记
录)。Event由source从外部数据源获取,传给channel暂存,然后传
给sink,通过sink传到目的地(HDFS)中。
3、Flume中,Agent是运行的核心,它包括3个组件:
1)source,可以从外部数据源中获取数据。例如,它可以对某一
目录(文件夹)进行监控,如果目录中有新的文件产生,source会
自动读取新文件的内容,然后将内容传递给channel进行暂存。
2)channel,可以接收source传递的数据,并将数据进行暂存,
然后将数据传递给sink。直到sink将数据成功传到目的地之后,
channel才将暂存的数据删除。
channel是source与sink之间连接的桥梁,source与sink之间不能
直接发生连接,只能通过channel进行连接。
3)sink,可以接收channel传递的数据,并将数据传到目的地中。

 

二、Flume核心概念

核心概念: agentsourcechannelsinkinterceptor
source可以接收各种格式的数据, 如consolethriftexechttpdent
sink可以发送到各种不同的目的地, 如hdfshbase、 文件、 控制台等
channel缓冲数据, 可以放在内存、 文件、 数据库等
interceptor可以在数据传递过程中改变其属性信息

三、安装步骤:

1、解压缩:tar -zxvf apache-flume-1.6.0-bin.tar.gz

重命名:mv ******* flume

配置相关的环境变量:

vi    .bash_profile

export FLUME_HOME=/home/hadoop/apps/flume

export FLUME_CONF_DIR=$FLUME_HOME/conf
export PATH=$PATH:$FLUME_HOME/bin
2、vi flume-conf.properties
#agent1表示代理名称
agent1.sources=source1
agent1.sinks=sink1
agent1.channels=channel1
#配置source1
agent1.sources.source1.type=spooldir
agent1.sources.source1.spoolDir=/home/hadoop/flumeinfo
agent1.sources.source1.channels=channel1
agent1.sources.source1.fileHeader = false
agent1.sources.source1.interceptors = i1
agent1.sources.source1.interceptors.i1.type = timestamp
#配置channel1
agent1.channels.channel1.type=file
agent1.channels.channel1.checkpointDir=/home/hadoop/flume_tmp_cp
agent1.channels.channel1.dataDirs=/home/hadoop/flume_tmp
#配置sink1
agent1.sinks.sink1.type=hdfs
agent1.sinks.sink1.hdfs.path=hdfs://liuwei1:9000/logs(如果高可就集群则hdfs://myha01/logs)
agent1.sinks.sink1.hdfs.fileType=DataStream
agent1.sinks.sink1.hdfs.writeFormat=TEXT
agent1.sinks.sink1.hdfs.rollInterval=1
agent1.sinks.sink1.channel=channel1
agent1.sinks.sink1.hdfs.filePrefix=%Y-%m-%d
  
3、创建本地文件夹: mkdir /home/hadoop/flumeinfo                   mkdir /home/hadoop/flume_tmp_cp           mkdir /home/hadoop/flume_tmp
      创建HDFS文件夹: hdfs dfs -mkdir /logs
4、启动脚本

进入bin目录下    执行  ./flume-ng agent -n agent1 -c conf -f /home/hadoop/apps/flume/conf/flume-conf.properties -Dflume.root.logger=DEBUG,console

新建一份文件, 移动到/home/hadoop/flumeinfo目录下, flume就会自动上传到HDFS/logs目录中

四、Flume+Spark Streaming 

vi flume-conf.properties1 

修改 配置sink1 (其他不用修改)

agent1.sinks.sink1.type = avro

agent1.sinks.sink1.channel = channel1
agent1.sinks.sink1.hostname =0.0.0.0
agent1.sinks.sink1.port = 41414

再启动  ./flume-ng agent -n agent1 -c conf -f /home/hadoop/apps/flume/conf/flume-conf.properties1 -Dflume.root.logger=DEBUG,console (启动相关flume-conf.properties1)

object produce {  def main(args: Array[String]): Unit = {    val conf=new SparkConf().setAppName("produce").setMaster("local[2]")    val ssc=new StreamingContext(conf,Seconds(5))    val linesDStream=FlumeUtils.createStream(ssc,"0.0.0.0",41414)    val wordsDStream=linesDStream.flatMap(line=>{      val inf=new String(line.event.getBody.array())      inf.split(" ")    })    val resultDStream=wordsDStream.map((_,1)).reduceByKey(_+_)    resultDStream.print()    ssc.start()    ssc.awaitTermination()  }

  

 

转载于:https://www.cnblogs.com/liuwei6/p/6647666.html

你可能感兴趣的文章
小强升职计读书笔记
查看>>
常用的107条Javascript
查看>>
#10015 灯泡(无向图连通性+二分)
查看>>
获取EXe版本信息
查看>>
elasticsearch 集群
查看>>
忘记root密码,怎么办
查看>>
linux设备驱动归纳总结(三):1.字符型设备之设备申请【转】
查看>>
《黑客与画家》 读书笔记
查看>>
bzoj4407: 于神之怒加强版
查看>>
从qplot开始
查看>>
mysql统计一张表中条目个数的方法
查看>>
ArcGIS多面体(multipatch)解析——引
查看>>
JS 在火狐浏览器下关闭弹窗
查看>>
css3渐变画斜线 demo
查看>>
UIView中的坐标转换
查看>>
JS性能DOM优化
查看>>
设计模式 单例模式 使用模板及智能指针
查看>>
c++11 多线程依次打印ABC
查看>>
c#的const可以用于引用类型吗
查看>>
手动实现二值化
查看>>