环境:ubuntu16.0.4,hadoop-2.7.3+hbase-1.3.0+hive-2.1.1+zookeeper-3.4.10+jdk1.8
我的是hadoop集群,一共三个节点。
从flume官网上下载flume-1.7.0。
将压缩包放到Master用户主目录下面。
1.安装
然后在用户主目录下面解压:
ubuntuserver@Master:~$tar -zxvf apache-flume-1.7.0-bin.tar.gz
将解压后的文件移动到/usr/local目录下:
ubuntuserver@Master:~$sudo mv apache-flume-1.7.0-bin /usr/local
配置环境变量(/etc/profile),添加以下内容:
export FLUME_HOME=/usr/local/apache-flume-1.7.0-bin
export PATH=$FLUME_HOME/bin:$PATH
保存/etc/profile文件,然后执行source /etc/profile
2.配置
再进入到conf目录中:
ubuntuserver@Master:~$cd $FLUME_HOME/conf
复制一份配置文件
ubuntuserver@Master:/usr/local/apache-flume-1.7.0-bin/conf$sudo cp flume-env.sh.template flume-env.sh
然后编辑该配置文件内容,加入下面一句话(jdk的目录)
export JAVA_HOME=/usr/local/jdk1.8.0_111
然后保存文件。
然后复制另一份配置文件
ubuntuserver@Master:/usr/local/apache-flume-1.7.0-bin/conf$sudo cp flume-conf.properties.template flume.conf
将flume.conf中的内容全部注释掉,然后在文件末尾添加如下的内容
#agent1表示代理名称
agent1.sources=source1
agent1.sinks=sink1
agent1.channels=channel1
#配置source1
agent1.sources.source1.type=spooldir
agent1.sources.source1.spoolDir=/usr/local/apache-flume-1.7.0-bin/flume-logs
agent1.sources.source1.channels=channel1
agent1.sources.source1.fileHeader=false
#配置sink1
agent1.sinks.sink1.type=hdfs
agent1.sinks.sink1.hdfs.path=hdfs://Master:9000/flume-logs
agent1.sinks.sink1.hdfs.fileType=DataStream
agent1.sinks.sink1.hdfs.writeFormat=TEXT
agent1.sinks.sink1.hdfs.rollInterval=4
agent1.sinks.sink1.channel=channel1
#配置channel1
agent1.channels.channel1.type=file
agent1.channels.channel1.checkpointDir=/usr/local/apache-flume-1.7.0-bin/flume-tmp-Dir
agent1.channels.channel1.dataDirs=/usr/local/apache-flume-1.7.0-bin/flume-tmp-Dirs
然后在flume安装目录下,新建三个文件夹,分别是flume-logs,flume-tmp-Dir,flume-tmp-Dirs。
ubuntuserver@Master:/usr/local/apache-flume-1.7.0-bin$ sudo mkdir flume-logs
ubuntuserver@Master:/usr/local/apache-flume-1.7.0-bin$ sudo mkdir flume-tmp-Dir
ubuntuserver@Master:/usr/local/apache-flume-1.7.0-bin$ sudo mkdir flume-tmp-Dirs
然后修改这三个文件夹的权限。
ubuntuserver@Master:/usr/local/apache-flume-1.7.0-bin$ sudo chown -R ubuntuserver flume-logs
ubuntuserver@Master:/usr/local/apache-flume-1.7.0-bin$ sudo chown -R ubuntuserver flume-tmp-Dir
ubuntuserver@Master:/usr/local/apache-flume-1.7.0-bin$ sudo chown -R ubuntuserver flume-tmp-Dirs
然后在hdfs中创建一个目录:
ubuntuserver@Master:~$hadoop fs -mkdir /flume-logs
到此,基本工作已经完成。
3.启动
ubuntuserver@Master:~$ flume-ng agent -n agent1 -c conf -f /usr/local/apache-flume-1.7.0-bin/conf/flume.conf -Dflume.root.logger=INFO,console
可以看到flume的三大组件:channel,sink,source都已经被启动了。
4.测试
这里需要注意了,如果flume是从命令行终端启动的,那么不要关闭它。如果没有命令行终端(比如是服务器版本的
Linux)界面,那么从SecucreCRT上面启动flume。当然,启动flume之前必须先启动hadoop集群。
再启动一个命令行终端,在该终端下面输入以下命令:
通过这个命令,上传了一个文件到flume-logs文件夹。于此同时,在启动flume的那个终端界面里面,会刷出一下信息:
可以看到flumetest1.log已经被上传到hdfs的/flume-logs目录下面。
然后再从集群中的另一个节点下面查看上传的文件的内容。
可以看到文件内容为:hello flume1,。与之前在上传之前是一样的,说明文件被上传成功。