1-4.Flume安装配置

实验环境

实验准备

实验内容

一、初始化hadoop集群

二、下载所需安装包

三、安装配置Flume运行环境

四、启动Flume传输Hadoop日志(namenode或datanode日志)

 

 

实验环境

  1. Ubuntu 18.04

  2. Oracle JDK 1.8

  3. Hadoop 3.2.4

  4. Flume 1.9.0

实验准备

1、 点击开始实验按钮,打开当前实验所有镜像环境 2、 进入实验环境后, 点击左上角收缩实验指南 3、 点击环境左上角的“三个横线”的标志,如下图。 最后点击“终端”。 4、 会在右下方看到打开的终端,可直接在终端中进行操作。

实验内容

一、初始化hadoop集群

配置节点hosts解析

使用命令查看自己所有节点环境的IP信息:

ip addr show

把所有节点的IP记录下来,将三个节点分别命名为master、slave1、slave2,取1个IP作为master节点,其余做slave节点。 修改容器中/etc/hosts文件,根据自己的节点的IP信息,在文件末添加类似下面的内容:

下面IP仅供参考,以自己环境的实际IP为准

10.42.240.106  master
10.42.240.46 slave1
10.42.74.171 slave2

配置及节点ssh免密登录

在master节点使用命令生成key,需要填入的内容直接留空即可

ssh-keygen -b 4096

使用下面的命令把master节点的公钥拷贝到包括master节点的所有的节点,默认密码为root

ssh-copy-id -i ~/.ssh/id_rsa.pub root@master
ssh-copy-id -i ~/.ssh/id_rsa.pub root@slave1
ssh-copy-id -i ~/.ssh/id_rsa.pub root@slave2

使用ssh登录成功后后,可使用 exit 命令退出ssh会话回到原先节点终端继续操作

exit

最后,在master节点的终端使用下面的命令初始化Hadoop环境namenode

hdfs namenode -format

确保Hadoop启动并正常运行。

# hadoop的集群启动命令为:
start-all.sh

# 启动后检查是否安装成功:
hdfs dfsadmin -report

二、下载所需安装包

在节点创建需要的文件夹,作为安装包储存路径和软件安装位置

mkdir /opt/software  /opt/module

从宿主机目录下将文件apache-flume-1.9.0-bin.tar.gz复制到容器Master中的/opt/software路径中。

scp root@10.42.2.28:/opt/flume/apache-flume-1.9.0-bin.tar.gz /opt/software

三、安装配置Flume运行环境

将Master节点Flume安装包解压到/opt/module路径中:

tar -xzf /opt/software/apache-flume-1.9.0-bin.tar.gz -C /opt/module

将解压命令截图并提交到对应的任务序号下 修改节点环境中的/etc/profile文件,在文件末添加下面的内容:

# 添加flume的环境变量
export FLUME_HOME=/opt/module/apache-flume-1.9.0-bin
export PATH=$PATH:$FLUME_HOME/bin

执行下面的命令使添加的环境变量生效:

source /etc/profile

执行命令flume-ng version

flume-ng version

并将命令与执行结果截图并提交到对应的任务序号下

配置文件监控NameNode日志文件

cd /opt/module/apache-flume-1.9.0-bin/conf
cp flume-conf.properties.template flume-conf.properties

编辑flume-conf.properties,添加下面的内容:

# 定义一个名为 r1、类型为 exec 的数据源。
# 它将执行外部命令 (tail -F ...) 并使用hadoop的namenode的log输出作为数据源。
a1.sources = r1
a1.sources.r1.type = exec
a1.sources.r1.command = tail -F /opt/module/hadoop-3.2.4/logs/hadoop-root-namenode-16f7e0f335e1.log

# 定义一个名为 k1、类型为 hdfs 的数据汇。
# 它将数据写入Hadoop分布式文件系统 (HDFS)。
# 路径是动态的,基于当前日期 (%Y%m%d)。它指定了文件前缀、文件类型以及是否使用本地时间戳。
a1.sinks = k1
a1.sinks.k1.type = hdfs
a1.sinks.k1.hdfs.path = hdfs://master:9000/tmp/flume/%Y%m%d
a1.sinks.k1.hdfs.filePrefix = log-
a1.sinks.k1.hdfs.fileType = DataStream
a1.sinks.k1.hdfs.useLocalTimeStamp = true

# 定义一个名为 c1、类型为 memory 的通道,表示一个内存通道。
# 通道充当数据源和数据汇之间的缓冲区。
a1.channels = c1
a1.channels.c1.type = memory

# 指定了源 r1 与通道 c1 之间的连接,以及汇 k1 与通道 c1 之间的连接。
# 源产生的数据将存储在内存通道中,然后由数据汇消耗,用于写入HDFS。
a1.sources.r1.channels = c1
a1.sinks.k1.channel = c1

上面配置设置了一个Flume代理 (a1),具有一个通过exec源读取tail命令输出的内存通道,以及一个将数据写入HDFS的数据汇,路径根据日期动态生成。 注意: 下面的a1.sources.r1.command的数据源文件记得换成自己的namenode的对应的文件名,每人不一样的。 比如看我的输出,我这里就是hadoop-root-namenode-16f7e0f335e1.log

root@16f7e0f335e1:/rgsoft/Desktop/Study/task# ls -al $HADOOP_HOME/logs/
总用量 152
drwxr-xr-x 2 root root  4096 12月 18 15:13 .
drwxr-xr-x 1 root root  4096 12月 18 14:59 ..
-rw-r--r-- 1 root root 42453 12月 18 15:18 hadoop-root-namenode-16f7e0f335e1.log
-rw-r--r-- 1 root root  6440 12月 18 15:14 hadoop-root-namenode-16f7e0f335e1.out
-rw-r--r-- 1 root root    90 12月 18 15:13 hadoop-root-namenode-master.log
-rw-r--r-- 1 root root 43976 12月 18 15:09 hadoop-root-resourcemanager-16f7e0f335e1.log
-rw-r--r-- 1 root root  2314 12月 18 14:59 hadoop-root-resourcemanager-16f7e0f335e1.out
-rw-r--r-- 1 root root 33943 12月 18 15:00 hadoop-root-secondarynamenode-16f7e0f335e1.log
-rw-r--r-- 1 root root   705 12月 18 14:59 hadoop-root-secondarynamenode-16f7e0f335e1.out
-rw-r--r-- 1 root root     0 12月 18 14:59 SecurityAuth-root.audit

四、启动Flume传输Hadoop日志(namenode或datanode日志)

flume必须持有hadoop相关的包才能将数据输出到hdfs, 将如下包上传到flume/lib下:

cd /opt/module/apache-flume-1.9.0-bin/lib
cp $HADOOP_HOME/share/hadoop/common/hadoop-common-3.2.4.jar  ./
cp $HADOOP_HOME/share/hadoop/common/lib/hadoop-auth-3.2.4.jar ./
cp $HADOOP_HOME/share/hadoop/common/lib/commons-configuration2-2.1.1.jar ./

# 删除低版本的guava,检查确定存在后,输入yes确定删除
rm -i ./guava-11.0.2.jar

将hadoop的 hdfs-site.xmlcore-site.xml 放到flume/conf下:

cd /opt/module/apache-flume-1.9.0-bin/conf
cp $HADOOP_HOME/etc/hadoop/core-site.xml ./
cp $HADOOP_HOME/etc/hadoop/hdfs-site.xml ./
cd /opt/module/apache-flume-1.9.0-bin

# -n 参数用于指定代理的名称,这里将代理命名为 a1,要和上面的sources数据源的变量名保持一致。
# -c 参数用于指定 Flume 的配置文件所在的目录。
# -f 参数用于指定 Flume 的配置文件的路径。
# -D 参数用于设置 Java 虚拟机 (JVM) 的系统属性。
# flume.root.logger=DEBUG,console 设置了 Flume 的日志级别为 DEBUG,并将日志输出到控制台 (console)。
flume-ng agent -n a1 -c conf -f /opt/module/apache-flume-1.9.0-bin/conf/flume-conf.properties -Dflume.root.logger=DEBUG,console

查看HDFS中/tmp/flume目录下生成的内容:

hdfs dfs -ls /tmp/flume

 

© 版权声明
THE END
喜欢就支持一下吧
点赞107赞赏 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

夸夸
夸夸
还有吗!没看够!
取消
昵称表情代码图片

    暂无评论内容