Flume安装与使用(仅为课堂任务)
随着大数据时代的到来,数据科学与大数据技术已经成为了一个热门领域。作为一名学习了三年数据科学与大数据技术的学生,我在这个领域中遇到了很多挑战,也掌握了很多知识和技术。
在这篇博客中,我将分享虚拟机的Flume安装与使用。
安装与使用
安装
在linux系统下打开火狐浏览器搜索
https://www.apache.org/dyn/closer.lua/flume/1.9.0/apache-flume-1.9.0-bin.tar.gz 进入官网点击红色框下载。
点击红色框的链接后会跳出以下界面,一共有两种方法,后面分别有对其的介绍。
下载方法一
点击打开,通过这个选项,会下载到归档管理器里,不是/home/Hadoop/下载/中,且无法复制粘贴。可以直接将文件提取到/home/Hadoop/下载/目录下。
在终端输入sudo nautilus命令进行文件的复制,因为复制到/usr/local/需要权限,直接简单的进行复制会提示‘没有再次文件夹中创建归档文件的权限’。由于之后许多的步骤要用到/usr/local/这个目录,所以要将文件移动到该目录下。但通过该方法的不需要进行解压,因为提取的文件是已经解压好的。
将文件名称修改为flume,简化文件名方便之后的操作,操作命令如下:
cd /usr/local
sudo mv ./apache-flume-1.9.0-bin ./flume
下载方法二
由于本书全部采用hadoop用户登录Linux系统,所以点击保存文这个选项的话,apache-flume-1.9.0-bin.tar.gz文件会被保存到“/home/Hadoop/下载/“目录下。该方法比较简单,打开一个终端,直接输入代码,移动解压到/usr/local/ 目录下。改名操作同方法一一致。
cd ~
cd sudo tar -zxvf /home/hadoop/下载apache-flume-1.9.0-bin.tar.gz -C /usr/local
其中,要注意的是,将apache-flume-1.9.0-bin.tar.gz文件解压到/usr/local/目录下时,命令中一定要加上-C,否则会出现归档找不到的错误。
配置环境变量
使用vim编辑器打开~/.bashrc文件,命令如下:
sudo vim ~/.bashrc
在该文件开头加入以下代码,原来已有的环境变量可以保留:
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64;
export FLUME_HOME=/usr/local/flume
export FLUME_CONF_DIR=$FLUME_HOME/conf
export PATH=$PATH:$FLUME_HOME/bin
执行语句使修改文件生效。
source ~/.bashrc
修改配置文件flume-env.sh,命令如下:
cd /usr/local/flume/conf
sudo mv flume-env.sh.template flume-env.sh
sudo vim flume-env.sh
需要注意的是,不同版本的flume安装包的文件flume-env.sh位置可能不同,有的直接在/usr/local/flume目录下,有的在/usr/local/flume/conf下,要根据自己下载版本的位置写路径。
在flume-env.sh文件开头加入如下语句:
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64;
输入以下代码,出现下图内容则说明启动成功。
cd /usr/local/flume
./bin/flume-ng version
**本文使用的虚拟机是已经安装过HBase,根据上述方法进行配置会出现‘找不到或无法加载主类org.apache.flume.tools.GetJavaProperty’。**可以通过修改hbase-env.sh文件来解决该问题,首先使用vim编辑器打开hbase-env.sh文件,输入代码命令如下:
cd /usr/local/hbase/conf
sudo vim hbase-env.sh
一个案例 |
使用Flume接受来自AvroSource的信息
AvroSource可以发送一个给定的文件给 Flume,Flume 接收到以后可以进行相应的处理,例如显示到屏幕上。
- 创建Agent配置文件
使用如下命令在/usr/local/flume/conf目录下创建一个新文件avro.conf:
cd /usr/local/flume
sudo vim ./conf/avro.conf
在avro.conf文件中写入以下内容:
#配置一个agent,agent的名称可以自定义(如a1)
#指定agent的sources(如s1)、sinks(如k1)、channels(如c1)
#分别指定agent的sources,sinks,channels的名称 名称可以自定义
a1.sources = s1
a1.sinks = k1
a1.channels = c1
#配置source
a1.sources.s1.channels = c1
a1.sources.s1.type = avro
a1.sources.s1.bind = 0.0.0.0
a1.sources.s1.port = 4141
#配置channels
a1.channels.c1.type = memory
a1.channels.c1.capacity = 1000
a1.channels.c1.transactionCapacity = 100
#配置sinks
a1.sinks.k1.channel = c1
a1.sinks.k1.type = logger
#为sources和sinks绑定channels
a1.sources.s1.channels = c1
注意,该配置文件的内容可能会更新,所以要根据去官网(‘下载专区’)搜新的配置文件信息,用旧的信息配置,运行后面内容是会报错的。
2)启动Flume Agent al
执行如下命令启动日志控制台:
/usr/local/flume/bin/flume-ng agent -c . -f /usr/local/flume/conf/avro.conf -n a1 -Dflume.root.logger=INFO,console
出现以下截图说明启动成功:
3)创建制定文件
打开另一个Linux终端,使用如下命令在/usr/local/flume目录下新建一个文件log.11,并在文件中加入一行内容‘I love flume’;
cd /usr/local/flume
sudo sh -c 'echo "I love flume" > /usr/local/flume/log.11'
4)再打开另一个终端,执行下面命令:
cd /usr/local/flume
./bin/flume-ng avro-client --conf conf -H localhost -p 4141 -F /usr/local/flume/log.11
注意,该命令行如果出现./logs/flume.log (没有那个文件或目录)这个报错,如下图所示。
首先查看自己的路径有无问题,不能排除是因为版本的问题导致文件放置位置的不同,排除这个问题还有这个报错,就是在/usr/local/目录下没有授权的原因,无法搜索本地计算机的绝对路径,需要在root和普通用户之间进行切换。输入代码如下:
sudo passwd root#重新设置root密码,否则容易报su认证失败的错
su
chown hadoop 文件名
授权输入后不再报错。
\centering
\includegraphics[scale=0.65]{figures/p20.png}
\label{fig:label12}
\caption{授权输入代码成功后界面}
执行完后,AvroSource就向Flume发送了一个文件,这是切换回之前的日志控制台所在的终端窗口,就可以看到Flume已接收到信息。
可能出现报错的原因
(1)运行文件路径有问题
(2)当前运行文件的地址没有授权
(3)配置文件信息过时