zoukankan      html  css  js  c++  java
  • Flume的安装,配置及使用

    1,上传jar包

    2,解压

    3,改名

    4,更改配置文件

    将template文件重镜像

    root@Ubuntu-1:/usr/local/apache-flume/conf# cat flume-env.sh.template >flume-env.sh

    在flume-env.sh文件中更改JAVA_HOME地址:

    export JAVA_HOME=/usr/local/jdk1.8.0_91  //132和135中均是/usr/local/jdk1.7.0_79,不要混淆了

    检查Flume是否安装成功

      flume-ng version
    Flume 1.6.0
    Source code repository: https://git-wip-us.apache.org/repos/asf/flume.git
    Revision: 2561a23240a71ba20bf288c7c2cda88f443c2080
    Compiled by hshreedharan on Mon May 11 11:15:44 PDT 2015
    From source with checksum b29e416802ce9ece3269d34233baf43f

    成功

    4, 使用

     flume的特点:
      flume是一个分布式、可靠、和高可用的海量日志采集、聚合和传输的系统。支持在日志系统中定制各类数据发送方,用于收集数据;同时,Flume提供对数据进行简单处理,并写到各种数据接受方(比如文本、HDFS、Hbase等)的能力 。
      flume的数据流由事件(Event)贯穿始终。事件是Flume的基本数据单位,它携带日志数据(字节数组形式)并且携带有头信息,这些Event由Agent外部的Source生成,当Source捕获事件后会进行特定的格式化,然后Source会把事件推入(单个或多个)Channel中。你可以把Channel看作是一个缓冲区,它将保存事件直到Sink处理完该事件。Sink负责持久化日志或者把事件推向另一个Source。

      flume的可恢复性:
      还是靠Channel。推荐使用FileChannel,事件持久化在本地文件系统里(性能较差)。 

     flume的一些核心概念:

      • Agent        使用JVM 运行Flume。每台机器运行一个agent,但是可以在一个agent中包含多个sources和sinks。
      • Client        生产数据,运行在一个独立的线程。
      • Source        从Client收集数据,传递给Channel。
      • Sink        从Channel收集数据,运行在一个独立线程。
      • Channel        连接 sources 和 sinks ,这个有点像一个队列。
      • Events        可以是日志记录、 avro 对象等。

    Flume以agent为最小的独立运行单位。一个agent就是一个JVM。单agent由Source、Sink和Channel三大组件构成,如下图:

    1.png 

    值得注意的是,Flume提供了大量内置的Source、Channel和Sink类型。不同类型的Source,Channel和Sink可以自由组合。组合方式基于用户设置的配置文件,非常灵活。比如:Channel可以把事件暂存在内存里,也可以持久化到本地硬盘上。Sink可以把日志写入HDFS, HBase,甚至是另外一个Source等等。Flume支持用户建立多级流,也就是说,多个agent可以协同工作,并且支持Fan-in、Fan-out、Contextual Routing、Backup Routes

    2.png 

    创建conf文件,命名example.conf

    内容:

    # 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 = 0.0.0.0
    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

     启动flume:

    root@Ubuntu-1:/usr/local/apache-flume#bin/flume -ng --conf conf/ --conf-file conf/example.conf --name a1 -Dflume.monitoring.type=http -Dflume.monitoring port=34343 -Dflume.root.logger=INFO,console &

    另外打开一个shell窗口,输入

    telnet 0.0.0.0 44444

    如果要关闭telnet窗口,用CTRL+] 命令,然后quit退出

    ------avro 将本地的文件传到flume

    首先在131的conf文件下创建avro_source文件

    内容如下:

    agent1.channels = ch1
    agent1.sources = avro-source1
    agent1.sinks = log-sink1
    
    # 定义channel
    agent1.channels.ch1.type = memory
    agent1.channels.ch1.capacity = 1000
    agent1.channels.ch1.transactionCapacity = 1000
    
    # 定义source
    agent1.sources.avro-source1.channels = ch1
    agent1.sources.avro-source1.type = avro
    agent1.sources.avro-source1.bind = 0.0.0.0
    agent1.sources.avro-source1.port = 41414
    
    # 定义sink
    agent1.sinks.log-sink1.channel = ch1
    agent1.sinks.log-sink1.type = logger

    在131中启动flume进程:

     bin/flume-ng agent --conf conf/ --conf-file conf/avro_source.conf  --name agent1 -Dflume.root.logger=INFO,console &

    在132中,我将131的flume文件拷到了132中,并在132中创建一个avro.log文件,其中有一些数据,在132中执行

    bin/flume -ng avro-client --host 192.168.22.131 --port 41414 --filename /usr/local/apache-flume/logs/avro.log

    这样便将132的本地文件中的数据打到了131中

     ----------------------------------------------------------------------------------------------------------------------------------q

    切记:!!我131中的JDK后来改成了1.8,但是132中一直是1.7版本的,所以不要混淆了

  • 相关阅读:
    大数据量业务订制和解决方案思考
    gc内存回收机制
    HashMap的扩容机制, ConcurrentHashMap和Hashtable主要区别
    开源工作流引擎内核主要关心的是什么?
    mysql查询计划
    mysql 存储引擎MYSIAM和INNODB特性比较
    任意输入字符,对字符匹配进行判断
    java 对list中对象按属性排序
    mysql 写数据操作几次硬盘?
    win7_64位+U盘制作centos6.3+安装centos
  • 原文地址:https://www.cnblogs.com/huxinga/p/7228241.html
Copyright © 2011-2022 走看看