Flume

  如果数据是在MySQL中的话,需要用到Sqoop工具将数据导入大数据平台。如果是日志类型的日志,需要用到Flume导入大数据平台。
  Flume是一个分布式、 基于流式数据。Flume的灵魂(Agent)就是采集(source)、聚合(channel)、转移(sink)。对于Flume只需要会配置,并不需要(或者很少)需要自己开发代码。Flume在CDH中是更改过的,使用的是1.6.0版本,所以不能参考官网的文档,所以要参考cdh文档(http://archive.cloudera.com/cdh5/cdh/5/flume-ng-1.6.0-cdh5.7.0/)。
这里写图片描述

一、配置

  老规矩,解压,添加环境变量。

解压:
tar -zxvf flume-ng-1.6.0-cdh5.7.0.tar.gz -C ../app/
归属:
sudo chown -R hadoop:hadoop apache-flume-1.6.0-cdh5.7.0-bin/
添加环境变量:
vim ~/.bash_profile
#FLUME
export FLUME_HOME=/home/hadoop/app/apache-flume-1.6.0-cdh5.7.0-bin
export PATH=$FLUME_HOME/bin:$PATH
source ~/.bash_profile

  配置比较简单,就是在${FLUME_HOME}/conf/下设置flume-env.sh,添加java_home。

cp flume-env.sh.template flume-env.sh
flume-env.sh文件添加:
export JAVA_HOME=/usr/java/jdk1.8.0_45

二、使用

  Flume的agent配置在配置文件中,启动命令flume-ng,配置上配置文件的参数,指定agent,就可以按照事先配好的agent进行工作了。

flume-ng agent \
--name $agent_name \           //指定agent的名称
--conf ${FLUME_HOME}/conf \    //指定通用配置文件的目录
--conf-file  ${config}  \       //指定的agnet的配置文件      
-Dflume.root.logger=INFO,console \ //Log日志输出
-Dflume.monitoring.type=http \    //flume监控相关
-Dflume.monitoring.port=34343     //flume监控相关

  ${FLUME_HOME}/conf用来指定通用的配置文件夹的地址,${config}用来配置当前项目的配置文件的地址。

三、agnet配置

  上面提到特殊项目特殊配置agent。下面这个就是配置agent的flume-example.conf文件。

#模板->  <agent_name>.sources=<source1_name> <source2_name>....
a1.sources = r1
#模板->  <agent_name>.sinks=<sink1_name> <sink2_name>....
a1.sinks = k1
#模板->  <agent_name>.channels=<channel1_name> <channel2_name>....
a1.channels = c1

# Describe/configure the source
#模板->  <agent_name>.sources.<source_name>.[params] = [values]
a1.sources.r1.type = netcat
a1.sources.r1.bind = localhost
a1.sources.r1.port = 44444

# Describe the sink
#模板->  <agent_name>.sinks.<sink_name>.[params] = [values]
a1.sinks.k1.type = logger

# Use a channel which buffers events in memory
#模板->  <agent_name>.channels.<channel_name>.[params] = [values]
a1.channels.c1.type = memory
a1.channels.c1.capacity = 1000
a1.channels.c1.transactionCapacity = 100

# Bind the source and sink to the channel
#模板->  <agent_name>.sources.<source_name>.channels = <channel2_name> <channel2_name> ...
a1.sources.r1.channels = c1
#模板->  <agent_name>.sinks.<sink_name>.channel = <channel_name> 
a1.sinks.k1.channel = c1

  由以上的配置的信息知道,一个agent中可以有很多的source、channel、sink,其中source、channel应该是可以多对多,但是sink、channel只能一对一。

四、常用

4.1 常用source
名称含义注意点
avroavro协议的数据源
execunix命令可以命令监控文件 tail -F
spooldir监控一个文件夹不能含有子文件夹,不监控windows文件夹
处理完文件不能再写数据到文件
文件名不能冲突
TAILDIR既可以监控文件也可以监控文件夹支持断点续传功能,重点使用这个
netcat监听某个端口
kafka监控卡夫卡数据
4.2 常用sink
名称含义注意点
kafka写到kafka中
HDFS将数据写到HDFS中
logger输出到控制台
avroavro协议配合avro source使用
4.3 常用channel
名称含义注意点
memory存在内存中
kafka将数据存到kafka中
file存在本地磁盘文件中
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值