标签:系统 权限 man 取数 round 路径 技术分享 3.2 cap
搭建环境
部署节点操作系统为CentOS,防火墙和SElinux禁用,创建了一个shiyanlou用户并在系统根目录下创建/app目录,用于存放 Hadoop等组件运行包。因为该目录用于安装hadoop等组件程序,用户对shiyanlou必须赋予rwx权限(一般做法是root用户在根目录下 创建/app目录,并修改该目录拥有者为shiyanlou(chown –R shiyanlou:shiyanlou /app)。
Hadoop搭建环境:
2 Flume介绍
Flume是Cloudera提供的日志收集系统,Flume支持在日志系统中定制各类数据发送方,用于收集数据;同时,Flume提供对数据进行 简单处理,并写到各种数据接受方(可定制)的能力。 Flume是一个分布式、可靠和高可用的海量日志采集、聚合和传输的系统。
Flume具有Reliability、Scalability、Manageability和Extensibility特点:
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种主要工作模式,如下:
注意,在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目录中
3.1.2 设置/etc/profile参数
编辑/etc/profile文件,声明flume的home路径和在path加入bin的路径:
编译配置文件/etc/profile,并确认生效
3.1.3 设置flume-env.sh配置文件
在$FLUME_HOME/conf 下复制改名flume-env.sh.template为flume-env.sh,修改conf/ flume-env.sh配置文件
修改配置文件内容 :
3.2 部署验证
3.2.1 验证安装
1.修改flume-conf配置文件 在$FLUME_HOME/conf目录下修改flume-conf.properties.template文件,复制并改名为flume-conf,
修改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下运行
3.再打开一个终端,输入如下命令:
注:在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
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下运行
3.不断收集hadoop-hadoop-namenode-hadoop1.log的数据写入HDFS中
4.查看hdfs中/class12/out_flume中的文件
标签:系统 权限 man 取数 round 路径 技术分享 3.2 cap
原文地址:http://www.cnblogs.com/charlist/p/7063933.html