网赢中国专注大数据营销 [会员登录][免费注册][网赢中国下载]我要投稿|加入合伙人|设为首页|收藏|RSS
网赢中国是大数据营销代名词。
大数据营销
当前位置:网赢中国 > 行业资讯 > 技术文章 > 大数据营销技术文章 > Flume介绍、安装与应用案例-Hadoop
Flume介绍、安装与应用案例-Hadoop
编辑:石山园 发布时间: 2015-7-23    文章来源:博客园
大数据营销


本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,博主为石山园,博客地址为 http://www.cnblogs.com/shishanyuan  。该系列课程是应邀实验楼整理编写的,这里需要赞一下实验楼提供了学习的新方式,可以边看博客边上机实验,课程地址为 https://www.shiyanlou.com/courses/237


【注】该系列所使用到安装包、测试数据和代码均可在百度网盘下载,具体地址为 http://pan.baidu.com/s/10PnDs,下载该PDF文件


1搭建环境


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


Hadoop搭建环境:


l  虚拟机操作系统: CentOS6.6  64位,单核,1G内存


l  JDK1.7.0_55 64


l  Hadoop1.1.2


2Flume介绍


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


Flume具有ReliabilityScalabilityManageabilityExtensibility特点:


1.ReliabilityFlume提供3中数据可靠性选项,包括End-to-endStore on failureBest effort。其中End-to-end使用了磁盘日志和接受端Ack的方式,保证Flume接受到的数据会最终到达目的。Store on failure在目的不可用的时候,数据会保持在本地硬盘。和End-to-end不同的是,如果是进程出现问题,Store on failure可能会丢失部分数据。Best effort不做任何QoS保证。


2.ScalabilityFlume3大组件:collectormasterstorage tier都是可伸缩的。需要注意的是,Flume中对事件的处理不需要带状态,它的Scalability可以很容易实现。


3.ManageabilityFlume利用ZooKeepergossip,保证配置数据的一致性、高可用。同时,多Master,保证Master可以管理大量的节点。


4.Extensibility:基于Java,用户可以为Flume添加各种新的功能,如通过继承Source,用户可以实现自己的数据接入方式,实现Sink的子类,用户可以将数据写往特定目标,同时,通过SinkDecorator,用户可以对数据进行一定的预处理。


2.1 Flume架构


clip_image001 


 


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


Flume提供了从console(控制台)、RPCThrift-RPC)、text(文件)、tailUNIX tail)、syslogsyslog日志系统,支持TCPUDP2种模式),exec(命令执行)等数据源上收集数据的能力。同时,Flume的数据接受方,可以是console(控制台)、text(文件)、dfsHDFS文件)、RPCThrift-RPC)和syslogTCPTCP syslog日志系统)等。


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


1. Push Sources:外部系统会主动地将数据推送到Flume中,如RPCsyslog


2. Polling SourcesFlume到外部系统中获取数据,一般使用轮询的方式,如textexec


注意,在Flume中,agentcollector对应,而sourcesink对应。Sourcesink强调发送、接受方的特性(如数据格式、编码等),而agentcollector关注功能。


2.2 Flume管理方式


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


clip_image002 


为了保证可扩展性,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


clip_image004


也可以在/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


clip_image006


3.1.2 设置/etc/profile参数


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


export FLUME_HOME=/app/flume-1.5.2


export FLUME_CONF_DIR=$FLUME_HOME/conf


export PATH=$PATH:$FLUME_HOME/bin


clip_image008


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


source /etc/profile


echo $PATH


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


$FLUME_HOME/conf 下复制改名flume-env.sh.templateflume-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'


clip_image010


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


clip_image012


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


clip_image014


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


telnet localhost 44444


hello world


clip_image016


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


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


clip_image018


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


clip_image020


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


clip_image022


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


clip_image024


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


clip_image026


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


hadoop fs -ls /class12/out_flume


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


clip_image028



大数据营销
编辑推荐
图片行业资讯
  • 雷军隔空喊话董明珠:格力 小米欢迎你
  • 杨元庆:Moto在华上市一周预定量超100万
  • 小米洪锋谈O2O布局:做商城不做具体服务
  • 盖茨向不知名实体捐赠15亿美元微软股票 持股降至3%
  • 刘强东:允许我获取数据 冰箱免费送给你
营销资讯搜索
大数据营销
推荐工具
    热点关注
    大数据营销
    大数据营销
    大数据营销
    大数据营销
     

    大数据营销之企业名录

    网络营销之邮件营销

    大数据营销之搜索采集系列

    大数据营销之QQ号采集

    大数据营销之QQ精准营销

    大数据营销之QQ消息群发

    大数据营销之空间助手

    大数据营销之QQ联盟

    大数据营销之QQ群助手
     
    设为首页 | 营销资讯 | 营销学院 | 营销宝典 | 本站动态 | 关于网赢中国 | 网站地图 | 网站RSS | 友情链接
    本站网络实名:网赢中国  国际域名:www.softav.com  版权所有 2004-2015  深圳爱网赢科技有限公司
    邮箱:web@softav.com 电话:+86-755-26010839(十八线) 传真:+86-755-26010838
    在线咨询:点击这里给我发消息 点击这里给我发消息 点击这里给我发消息  点击这里给我发消息  点击这里给我发消息

    深圳网络警
    察报警平台
    公共信息安
    全网络监察
    经营性网站
    备案信息
    不良信息
    举报中心
    中国文明网
    传播文明
    分享