flume核心概念及安装及使用

flume :实时日志收集系统。

flume是一个分布式、可靠、和高可用的海量日志采集、聚合和传输的系统。支持在日志系统中定制各类数据发送方,用于收集数据;同时,Flume提供对数据进行简单处理,并写到各种数据接受方(比如文本、HDFS、Hbase等)的能力 。

flume的基本数据单位:事件。

flume的核心概念:

       Client:Client生产数据,运行在一个独立的线程。

    Event: 一个数据单元,消息头和消息体组成。(Events可以是日志记录、 avro 对象等。)
  Flow: Event从源点到达目的点的迁移的抽象。
  Agent: 一个独立的Flume进程,包含组件Source、 Channel、 Sink。(Agent使用JVM 运行Flume。每台机器运行一个agent,但是可以在一个agent中包含多个sources和sinks。)
  Source: 数据收集组件。(source从Client收集数据,传递给Channel)
  Channel: 中转Event的一个临时存储,保存由Source组件传递过来的Event。(Channel连接 sources 和 sinks ,这个有点像一个队列。)
  Sink: 从Channel中读取并移除Event, 将Event传递到FlowPipeline中的下一个Agent(如果有的话)(Sink从Channel收集数据,运行在一个独立线程。)

flume一个简单的小应用

flume安装:

  1. 创建采集目录
    1. #mkdir –p /home/smp/cin/flume
  2. 上传flume压缩包到 /home下
  3. 解压flume压缩包
    1. #tar –zxvf flume-1.6.tar.gz
  4. 修改flume配置文件
    1. #cd /home/flume-1.6/conf
    2. #vi flume-env.sh
  5. 修改JAVA_HOME路径:
    1. export JAVA_HOME=/usr/java/jdk1.7.0_79
  6. 修改flume内存大小
    1. export JAVA_OPTS="-Xms8000m -Xmx8000m -Dcom.sun.management.jmxremote -XX:+CMSClassUnloadingEnabled -XX:+UseParNewGC -XX:+UseConcMarkSweepGC -XX:-CMSConcurrentMTEnabled -XX:CMSInitiatingOccupancyFraction=70 -XX:+CMSParallelRemarkEnabled  -XX:PermSize=512m -XX:MaxPermSize=512m"
  7. 保存修改
  8. 上传kafka.conf文件
    1. 上传flume的采集程序的配置文件kafka.conf到conf目录下 :/home/flume-1.6/conf
  9. 执行命令启动程序
    1. #cd /home/flume-1.6
    2. #nohup bin/flume-ng agent --conf conf/ --conf-file conf/kafka.conf --name agent1 -Dflume.root.logger=INFO,console > logs/kafkasink-log 2>&1 &

或者执行

#nohup /home/flume-1.6/bin/flume-ng agent --conf /home/flume-1.6/conf/ --conf-file /home/flume-1.6/conf/kafka.conf --name agent1 -Dflume.root.logger=INFO,console > /home/flume-1.6/logs/kafkasink-log 2>&1 &

  1. 查看log是否报错
    1. # tail -100 /home/flume-1.6/logs/kafkasink-log
    1. 注:如果没有报错,说明启动成功。

flume:在Hadoop上的应用,将数据写入hdfs中

创建一个文件:

agent1.channels = ch2
agent1.sources = avro-source1
agent1.sinks = shdfs

# channel
agent1.channels.ch2.type = memory

# source
agent1.sources.avro-source1.channels = ch2
agent1.sources.avro-source1.type = exec
agent1.sources.avro-source1.command= tail -f /usr/lib/flume-ng/conf/test.txt

# sink
agent1.sinks.shdfs.channel = ch2
agent1.sinks.shdfs.type = hdfs
agent1.sinks.shdfs.hdfs.path = hdfs://quickstart.cloudera:8020/user/callLog/stat_date=%Y%m%d
agent1.sinks.shdfs.hdfs.inUsePrefix = .
agent1.sinks.shdfs.hdfs.rollSize = 64000000
agent1.sinks.shdfs.hdfs.filePrefix = CallLog-%H-%{hostname}
agent1.sinks.shdfs.hdfs.fileType = DataStream
agent1.sinks.shdfs.hdfs.rollInterval = 3600
agent1.sinks.shdfs.hdfs.writeFormat = Text

(注意自己创建的test.txt的位置,和hadoop端口的位置,查看信息:hadoop/etc/hadoop/core-site.xml
在终端执行:/usr/lib/flume-ng/bin/flume-ng agent --conf/usr/lib/flume-ng/conf/ --conf-file/usr/lib/flume-ng/conf/flume1 --name agent1 -Dflume.root.longer=INFO,console
详解:/usr/lib/flume-ng/bin/flume-ng:是flume-ng的目录 /usr/lib/flume-ng/conf/ :是test.txt的目录  usr/lib/flume-ng/conf/flume1:是配置文件的位置, name agent1:运行单位的名字

                                                                                                         -------海翁失鸥

猜你喜欢

转载自blog.csdn.net/qq_38798147/article/details/86363780
今日推荐