搭建环境

部署节点操作系统为CentOS,防火墙和SElinux禁用,创建了一个shiyanlou用户并在系统根目录下创建/app目录,用于存放
Hadoop等组件运行包。因为该目录用于安装hadoop等组件程序,用户对shiyanlou必须赋予rwx权限(一般做法是root用户在根目录下
创建/app目录,并修改该目录拥有者为shiyanlou(chown –R shiyanlou:shiyanlou /app)。

Hadoop搭建环境:

  • 虚拟机操作系统: CentOS6.6 64位,单核,1G内存
  • JDK:1.7.0_55 64位
  • Hadoop:1.1.2

2 Flume介绍

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

Flume具有Reliability、Scalability、Manageability和Extensibility特点:

  1. Reliability:Flume提供3中数据可靠性选项,包括End-to-end、Store on failure和Best
    effort。其中End-to-end使用了磁盘日志和接受端Ack的方式,保证Flume接受到的数据会最终到达目的。Store on
    failure在目的不可用的时候,数据会保持在本地硬盘。和End-to-end不同的是,如果是进程出现问题,Store on
    failure可能会丢失部分数据。Best effort不做任何QoS保证。
  2. Scalability:Flume的3大组件:collector、master和storage tier都是可伸缩的。需要注意的是,Flume中对事件的处理不需要带状态,它的Scalability可以很容易实现。
  3. Manageability:Flume利用ZooKeeper和gossip,保证配置数据的一致性、高可用。同时,多Master,保证Master可以管理大量的节点。
  4. Extensibility:基于Java,用户可以为Flume添加各种新的功能,如通过继承Source,用户可以实现自己的数据接入方式,实现Sink的子类,用户可以将数据写往特定目标,同时,通过SinkDecorator,用户可以对数据进行一定的预处理。

2.1 Flume架构

上图的Flume的架构中最重要的抽象是data flow(数据流),data
flow描述了数据从产生,传输、处理并最终写入目标的一条路径(在上图中,实线描述了data flow)。
Agent用于采集数据,agent是flume中产生数据流的地方,同时,agent会将产生的数据流传输到collector。对应
的,collector用于对数据进行聚合,往往会产生一个更大的流。

Flume提供了从console(控制台)、RPC(Thrift-RPC)、text(文件)、tail(UNIX
tail)、syslog(syslog日志系统,支持TCP和UDP等2种模式),exec(命令执行)等数据源上收集数据的能力。同时,Flume的
数据接受方,可以是console(控制台)、text(文件)、dfs(HDFS文件)、RPC(Thrift-RPC)和syslogTCP(TCP
syslog日志系统)等。

其中,收集数据有2种主要工作模式,如下:

  1. Push Sources:外部系统会主动地将数据推送到Flume中,如RPC、syslog。
  2. Polling Sources:Flume到外部系统中获取数据,一般使用轮询的方式,如text和exec。

注意,在Flume中,agent和collector对应,而source和sink对应。Source和sink强调发送、接受方的特性(如数据格式、编码等),而agent和collector关注功能。

2.2 Flume管理方式

Flume Master用于管理数据流的配置,如下图。

为了保证可扩展性,Flume采用了多Master的方式。为了保证配置数据的一致性,Flume引入了ZooKeeper,用于保存配置数
据,ZooKeeper本身可保证配置数据的一致性和高可用,另外,在配置数据发生变化时,ZooKeeper可以通知Flume Master节点。
Flume Master间使用gossip协议同步数据。

3 安装部署Flume

3.1 Flume部署过程

3.1.1 下载Flume

可以到apache基金flume官网http://flume.apache.org/download.html,选择镜像下载地址http://mirrors.hust.edu.cn/apache/flume/下载一个稳定版本,如下图所示下载flume-1.5.2-bin.tar.gz:

也可以在/home/shiyanlou/install-pack目录中找到该安装包,解压该安装包并把该安装包复制到/app目录中

  • cd /home/shiyanlou/install-pack
  • tar -xzf flume-1.5.2-bin.tar.gz
  • mv apache-flume-1.5.2-bin /app/flume-1.5.2

3.1.2 设置/etc/profile参数

编辑/etc/profile文件,声明flume的home路径和在path加入bin的路径:

  • export FLUME_HOME=/app/flume-1.5.2
  • export FLUME_CONF_DIR=$FLUME_HOME/conf
  • export PATH=$PATH:$FLUME_HOME/bin

编译配置文件/etc/profile,并确认生效

  • source /etc/profile
  • echo $PATH

3.1.3 设置flume-env.sh配置文件

在$FLUME_HOME/conf 下复制改名flume-env.sh.template为flume-env.sh,修改conf/ flume-env.sh配置文件

  • cd /app/flume-1.5.2/conf
  • cp flume-env.sh.template flume-env.sh
  • sudo vi flume-env.sh

修改配置文件内容 :

  • JAVA_HOME= /app/lib/jdk1.7.0_55
  • JAVA_OPTS="-Xms100m -Xmx200m -Dcom.sun.management.jmxremote"

3.2 部署验证

3.2.1 验证安装

1.修改flume-conf配置文件
在$FLUME_HOME/conf目录下修改flume-conf.properties.template文件,复制并改名为flume-conf,

  • cd /app/flume-1.5.2/conf
  • cp flume-conf.properties.template flume-conf.properties
  • sudo vi flume-conf.properties

修改flume-conf配置文件内容

# The configuration file needs to define the sources, the channels and the sinks.# Sources, channels and sinks are defined per agent, in this case called 'a1'
a1.sources = r1
a1.sinks = k1
a1.channels = c1 # For each one of the sources, the type is defined
a1.sources.r1.type = netcat
a1.sources.r1.bind = localhost
a1.sources.r1.port = 44444#The channel can be defined as follows.
a1.sources.r1.channels = c1
# Each sink's type must be defined
a1.sinks.k1.type = logger #Specify the channel the sink should use
a1.sinks.k1.channel = c1 # Each channel's type is defined.
a1.channels.c1.type = memory
# Other config values specific to each type of channel(sink or source)# can be defined as well# In this case, it specifies the capacity of the memory channel
a1.channels.c1.capacity = 1000
a1.channels.c1.transactionCapacity = 100

2.在flume的安装目录/flume-1.5.2下运行

  • cd /app/flume-1.5.2
  • ./bin/flume-ng agent --conf ./conf/ --conf-file - ./conf/flume-conf.properties --name a1 -Dflume.root.logger=INFO,console

3.再打开一个终端,输入如下命令:

  • telnet localhost 44444
  • hello world

注:在CentOS6.5运行telnet提示"command not found",使用sudo yum install telnet进行安装

4.在原来的终端上查看,可以收到来自于telnet发出的消息

3.2.2 测试收集日志到HDFS

1.在$FLUME_HOME/conf目录下修改flume-conf.properties.template文件,复制并改名为flume-conf2.properties

  • cd /app/flume-1.5.2/conf
  • cp flume-conf.properties.template flume-conf2.properties
  • sudo vi flume-conf2.properties

a1.sources = r1
a1.sinks = k1
a1.channels = c1
a1.sources.r1.type = exec
a1.sources.r1.channels = c1
a1.sources.r1.command = tail -F /app/hadoop-1.1.2/logs/hadoop-shiyanlou-namenode-b393a04554e1.log
a1.sinks.k1.type = hdfs
a1.sinks.k1.channel = c1
a1.sinks.k1.hdfs.path = hdfs://hadoop:9000/class12/out_flume
a1.sinks.k1.hdfs.filePrefix = events-
a1.sinks.k1.hdfs.round = true
a1.sinks.k1.hdfs.roundValue = 10
a1.sinks.k1.hdfs.roundUnit = minute
a1.sinks.k1.hdfs.rollSize = 4000000
a1.sinks.k1.hdfs.rollCount = 0
a1.sinks.k1.hdfs.writeFormat = Text
a1.sinks.k1.hdfs.fileType = DataStream
a1.sinks.k1.hdfs.batchSize = 10
a1.channels.c1.type = memory
a1.channels.c1.capacity = 1000
a1.channels.c1.transactionCapacity = 100

2.在flume的安装目录/flume-1.5.2下运行

  • cd /app/flume-1.5.2
  • ./bin/flume-ng agent --conf ./conf/ --conf-file ./conf/flume-conf2.properties --name a1 -Dflume.root.logger=INFO,console

3.不断收集hadoop-hadoop-namenode-hadoop1.log的数据写入HDFS中

4.查看hdfs中/class12/out_flume中的文件

  • hadoop fs -ls /class12/out_flume
  • hadoop fs -cat /class12/out_flume/events-.1433921305493

Flume介绍与安装的更多相关文章

  1. 具体说明 Flume介绍、安装和配置

    社论: 本文总结"Hadoop生态系统"中的当中一员--Apache Flume 写在前面二: 所用软件说明: 一.什么是Apache Flume 官网:Flume is a di ...

  2. 具体图解 Flume介绍、安装配置

    写在前面一: 本文总结"Hadoop生态系统"中的当中一员--Apache Flume 写在前面二: 所用软件说明: 一.什么是Apache Flume 官网:Flume is a ...

  3. 整体认识flume:Flume介绍、分布式安装、常见问题及解决方案

    问题导读 1.什么是flume? 2.flume包含哪些组件? 3.Flume在读取utf-8格式的文件时会出现解析不了时间戳,该如何解决? Flume是一个分布式.可靠.和高可用的海量日志采集.聚合 ...

  4. Flume系列一之架构介绍和安装

    Flume架构介绍和安装 写在前面 在学习一门新的技术之前,我们得知道了解这个东西有什么用?我们可以使用它来做些什么呢?简单来说,flume是大数据日志分析中不能缺少的一个组件,既可以使用在流处理中, ...

  5. Hadoop入门进阶课程12--Flume介绍、安装与应用案例

    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,博主为石山园,博客地址为 http://www.cnblogs.com/shishanyuan  ...

  6. Flume介绍

    Flume介绍 http://flume.apache.org/FlumeUserGuide.html 一.Flume架构图 含义 Source 规定收集数据的来源 Channel 相当于一个管道,连 ...

  7. Kafka介绍及安装部署

    本节内容: 消息中间件 消息中间件特点 消息中间件的传递模型 Kafka介绍 安装部署Kafka集群 安装Yahoo kafka manager kafka-manager添加kafka cluste ...

  8. Kafka系列一之架构介绍和安装

    Kafka架构介绍和安装 写在前面 还是那句话,当你学习一个新的东西之前,你总得知道这个东西是什么?这个东西可以用来做什么?然后你才会去学习它,使用它.简单来说,kafka既是一个消息队列,如今,它也 ...

  9. 从零自学Hadoop(19):HBase介绍及安装

    阅读目录 序 介绍 安装 系列索引 本文版权归mephisto和博客园共有,欢迎转载,但须保留此段声明,并给出原文链接,谢谢合作. 文章是哥(mephisto)写的,SourceLink 序 上一篇, ...

随机推荐

  1. Springboot源码分析之番外篇

    摘要: 大家都知道注解是实现了java.lang.annotation.Annotation接口,眼见为实,耳听为虚,有时候眼见也不一定是真实的. /** * The common interface ...

  2. 部署Kettle做ETL开发并使用Crontab制作调度系统

    背景说明: 在数据量较小,且数据源和装载地都是关系型数据库时,使用Kettle做ETL较为简便. 由于调度系统产品因为服务器环境方面的因素,而无法部署,故使用Linux的crontab定时器来制作简易 ...

  3. JS如何重写一个函数

    分享一些自己在开发上遇到的问题,比如我们页面上用了大量的打印语句,但是在某些时候,我们不想要了. 解决方案1 : 我们删除这里的代码,如果太多了,那工作量太大好累,想想都不想干 解决方案2 :我们将c ...

  4. node实现后台权限管理系统

    本文面向的是node初学者,目标是搭建一个基础的后台权限系统.使用的node框架是上手最简单的express,模板是ejs,这些在node入门的书籍中都有介绍说明,所以应该是难度较低的. 对于node ...

  5. 在vue.js引用图片的问题

    <div id="img"> <img src="img.png" class="img"> </div> ...

  6. vuex详解vue简单使用

    vue概念:vuex 是 Vue 配套的 公共数据管理工具,它可以把一些共享的数据,保存到 vuex 中,方便 整个程序中的任何组件直接获取或修改我们的公共数据: 配置vuex的步骤: 1.运行cnp ...

  7. 分布式配置中心Apollo——QuickStart

    分布式配置中心 剥离配置文件,实现动态修改,自动更新. [假设没有分布式配置中心,修改配置文件后都需要重启服务,对于数量庞多的微服务开发来说,就会非常繁琐] 分布式配置中心有哪些 disconf(依赖 ...

  8. ModelAndViewContainer、ModelMap、Model详细介绍【享学Spring MVC】

    每篇一句 一个开源的技术产品做得好不好,主要是看你能解决多少非功能性问题(因为功能性问题是所有产品都能够想到的) 前言 写这篇文章非我本意,因为我觉得对如题的这个几个类的了解还是比较基础且简单的一块内 ...

  9. Delphi - cxGrid内容xlsx、xls、csv格式导出

    .xls格式导出,uses中添加cxGridExportLink 代码如下: function SaveToExcel(gridMain: TcxGrid; FileName: string): st ...

  10. Unity3D 基于ShadowMap的平滑硬阴影

    前言 传统的ShadowMap在明暗边缘处都会有很难看的锯齿,因此一般得到的结果会比较难看,常规的解决办法都会在使用ShadowMap渲染阴影的时候通过背面剔除把这种缺陷隐藏掉,最后剩下一个影子.但是 ...