大数据学习笔记2-Flume

1010阅读 0评论2017-09-11 landuochong
分类:大数据

第二天: flume
1.关闭防火墙
    sudo iptables -P INPUT ACCEPT
    sudo iptables -P FORWARD ACCEPT
    sudo iptables -P OUTPUT ACCEPT

2.术语:
  源信息保存在namenode,NameNode为了数据同步,会通过JournalNode相互通信
  SPOF 单点故障
  HA 高可用性
  NN namenode
  DN datanode

3.Flume核心概念:
  Event数据单元,由header和byte array组成
  Client把log打包成Event发给Agent
  Agent
   1)Source接收数据放到channel里
   2)Channel缓存event,可以是文件或内存
   3)Sink 发送Event,成功后从channel移除

4.Source监听:
  spooldir:监听目录中文件变化,不检测内容,只支持文本
  taildir:检测文件内容变化,只支持文本
  exec:执行命令,将结果作为数据源
  avro:监听端口,收集数据
  等。。

5.实战:利用flume检测目录,并写入hdfs
  首先,自己写个属性文件myflume.properties,放到flume的conf目录下
       
    #Agent名字MyAgent
    MyAgent.sources = mysource
    MyAgent.channels = mychannel
    MyAgent.sinks = mysink

    #监听目录变化
    MyAgent.sources.mysource.type = spooldir
    #监听/tmp/logs目录文件变化
    MyAgent.sources.mysource.channels = mychannel
    MyAgent.sources.mysource.spoolDir =/tmp/logs
    
    #一定注意这里的mysink跟上面是对应的
    MyAgent.sinks.mysink.channel = mychannel
    MyAgent.sinks.mysink.type = hdfs
    MyAgent.sinks.mysink.hdfs.path = hdfs://master:8020/data/logs/%Y%m%d/%H/
    MyAgent.sinks.mysink.hdfs.batchSize = 1000
    MyAgent.sinks.mysink.hdfs.rollSize = 0
    MyAgent.sinks.mysink.hdfs.rollCount = 10000
    MyAgent.sinks.mysink.hdfs.useLocalTimeStamp = true

    #这里的mychannel跟上面是对应的
    MyAgent.channels.mychannel.type = memory
    MyAgent.channels.mychannel.capacity = 10000
    MyAgent.channels.mychannel.transactionCapacity = 100

  启动flume(注意文件名和MyAgent名字):
    bin/flume-ng agent -n MyAgent -c conf -f \  注:\是换行符,不需要换行的删除
    conf/myflume.properties -Dflume.root.logger=DEBUG,console

6.如果收集网络数据,更改sources配置项
 
    MyAgent.sources.mysource.type = avro
    MyAgent.sources.mysource.channels = mychannel
    MyAgent.sources.mysource.spoolDir =/tmp/logs
上一篇:大数据学习笔记1-hadoop
下一篇:大数据学习笔记3-Sqoop