四、启动Flume传输Hadoop日志(namenode或datanode日志)
-
Ubuntu 18.04
-
Oracle JDK 1.8
-
Hadoop 3.2.4
-
Flume 1.9.0
1、 点击开始实验
按钮,打开当前实验所有镜像环境 2、 进入实验环境后, 点击左上角收缩实验指南
3、 点击环境左上角的“三个横线”的标志,如下图。 最后点击“终端”。
4、 会在右下方看到打开的终端,可直接在终端中进行操作。
配置节点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
将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.xml
和 core-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
1 本站一切资源不代表本站立场,并不代表本站赞同其观点和对其真实性负责。
2 本站一律禁止以任何方式发布或转载任何违法的相关信息,访客发现请向站长举报
3 本站资源大多存储在云盘,如发现链接失效,请联系我们我们会第一时间更新。
暂无评论内容