Hadoop学习笔记(HDP)-Part.20 安装Flume

目录
Part.01 关于HDP
Part.02 核心组件原理
Part.03 资源规划
Part.04 基础环境配置
Part.05 Yum源配置
Part.06 安装OracleJDK
Part.07 安装MySQL
Part.08 部署Ambari集群
Part.09 安装OpenLDAP
Part.10 创建集群
Part.11 安装Kerberos
Part.12 安装HDFS
Part.13 安装Ranger
Part.14 安装YARN+MR
Part.15 安装HIVE
Part.16 安装HBase
Part.17 安装Spark2
Part.18 安装Flink
Part.19 安装Kafka
Part.20 安装Flume

二十、安装Flume

1.配置Ambari的flume资源

(1)下载ambari-flume-service服务

在外网服务器上,下载ambari-flume-service服务

git clone https://github.com/maikoulin/ambari-flume-service.git

下载flume的tar包,下载链接为
https://archive.apache.org/dist/flume/1.9.0/apache-flume-1.9.0-bin.tar.gz
将apache-flume-1.9.0-bin.tar.gz放到ambari-flume-service目录下

mkdir /root/ambari-flume-service/buildrpm/rpmbuild/SOURCES
cp /root/apache-flume-1.9.0-bin.tar.gz /root/ambari-flume-service/buildrpm/rpmbuild/SOURCES

执行编译生成rpm包,需要安装rpm-build命令,需要进入到shell脚本目录下执行

yum install -y rpm-build
cd /root/ambari-flume-service/buildrpm/
sh buildrpm.sh

将/root/ambari-flume-service/目录下的FLUME文件夹复制到hdp01的/var/lib/ambari-server/resources/stacks/HDP/3.1/services/目录下
重启ambari-server

ambari-server restart

此时可在ambari界面中看到flume服务
在这里插入图片描述

(2)创建flume本地yum源

在外网服务器上,将之前生成的rpm包(/root/ambari-flume-service/buildrpm/rpmbuild/RPMS/noarch/flume-1.9.0-1.el7.noarch.rpm)拷贝至hdp01的/opt下
创建flume的本地yum源

mkdir /var/www/html/flume
cp /opt/flume-1.9.0-1.el7.noarch.rpm /var/www/html/flume/
createrepo /var/www/html/flume/

配置所有节点的flume yum源

ansible all -m yum_repository -a 'name="flume" description="flume" baseurl="http://hdp01.hdp.com/flume" enabled=yes gpgcheck=no'

查看/etc/yum.repos.d/flume.repo文件

[flume]
baseurl = http://hdp01.hdp.com/flume
enabled = 1
gpgcheck = 0
name = flume

更新所有节点的yum配置

ansible all -m shell -a 'yum clean all'
ansible all -m shell -a 'yum makecache fast'

2.安装

添加flume服务
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
需要重启HDFS、YARN等相关服务
默认安装在current下,建议将其移动至3.1.5.0-152下,并在软链接到current下

cp -r /usr/hdp/current/flume-server/ /usr/hdp/3.1.5.0-152/
rm -rf /usr/hdp/current/flume-server/
ln -s /usr/hdp/3.1.5.0-152/flume-server/ /usr/hdp/current/

3.Agent配置

(1)Sources

**Exec Source:**用于文件监控,可以实时监控文件中的新增内容,类似于tail -F的效果
**NetCat TCP/UDP Source:**采集指定端口的数据,可以读取流经端口的每一行数据
**Spooling Directory Source:**采集文件夹中新增的文件
**Kafaka Source:**从Kafaka消息队列中采集数据

(2)Channels

**File Channel:**使用文件来作为数据的存储介质。优点是数据不会丢失,缺点是相对内存效率有的慢
**Memory Channel:**使用内存作为数据的存储接受,优点效率高,缺点会丢失数据,会存在内存不足的情况
**Spillable Memory Channel:**使用内存和文件作为存储介质,即内存足够把数据存内存中,不足的时候再写入到文件中

(3)Sinks

**Logger Sink:**将数据作为日志处理,可以将其选择打印到控制台或写到文件中
**HDFS Sink:**将数据传输到HDFS中,主要针对离线计算场景
**Kafka Sink:**将数据传输到Kafka消息队列中,主要针对实时计算场景

4.实验1:netcat收集并写入本地文件

以netcat为监测源,将输入内容写入到本地文件中
在这里插入图片描述
配置文件如下:

# 配置一个agent,agent的名称可以自定义(如a1)
# 指定agent的sources(如s1)、sinks(如k1)、channels(如c1)
a1.sources = s1
a1.channels=  c1
a1.sinks = k1# source定义
a1.sources.s1.type = netcat
a1.sources.s1.bind = 0.0.0.0
a1.sources.s1.port = 5556# sink定义
a1.sinks.k1.type=file_roll
a1.sinks.k1.sink.directory=/data01/flume_data
a1.sinks.k1.sink.rollInterval=30# channel定义
a1.channels.c1.type = memory# 关系绑定
a1.sources.s1.channels = c1
a1.sinks.k1.channel = c1

输出的file_roll位置/data01/flume_data为目录,并非文件,并且需要手工创建

mkdir /data01/flume_data
chown flume:hadoop /data01/flume_data/

在hdp01上以netcat客户端连接hdp03.hdp.com:5556,并发送信息
nc hdp03.hdp.com 5556
在这里插入图片描述
在hdp03上查看结果文件
在这里插入图片描述

5.实验2:监控本地文件并写入到HDFS中

以本地日志文件为监测源,将输入内容写入到HDFS中
在这里插入图片描述
配置文件如下:

a2.sources = s1
a2.channels=  c1
a2.sinks = k1# source定义
a2.sources.s1.type = exec
a2.sources.s1.command = tail -f /var/log/messages
a2.sources.s1.shell = /bin/sh -c# sink定义
a2.sinks.k1.type = hdfs
a2.sinks.k1.hdfs.kerberosPrincipal = tenant1@HDP315.COM
a2.sinks.k1.hdfs.kerberosKeytab = /root/keytab/tenant1.keytab
a2.sinks.k1.hdfs.path = hdfs://hdp315/testhdfs/tenant1/pt_time=%Y%m%d%H%M
a2.sinks.k1.hdfs.useLocalTimeStamp = true
a2.sinks.k1.hdfs.fileType = DataStream
a2.sinks.k1.hdfs.writeFormat = Text
a2.sinks.k1.hdfs.filePrefix = flume-%Y%m%d%H%M
a2.sinks.k1.hdfs.round = true
a2.sinks.k1.hdfs.roundUnit = minute
a2.sinks.k1.hdfs.roundValue = 1
a2.sinks.k1.hdfs.rollInterval = 10# channel定义
a2.channels.c1.type = memory# 关系绑定
a2.sources.s1.channels = c1
a2.sinks.k1.channel = c1

sink中参数说明:
filePrefix:文件前缀,会在hdfs上生成的文件前面加上这个前缀,属于可选项
writeFormat:默认为Writable,建议改为Text,如果后期想使用hive或者impala操作这份数据的话,必须在生成数据之前设置为Text,Text表示是普通文本数据
fileType:默认为SequenceFile,还支持DataStream和CompressedStream;DataStream不会对输出数据进行压缩,CompressedStream会对输出数据进行压缩
rollInterval:默认值为30,单位是秒,表示hdfs多长时间切分一个文件,因为这个采集程序是一直运行的,只要有新数据,就会被采集到hdfs上面,hdfs默认30秒钟切分出来一个文件,如果设置为0表示不按时间切文件
rollSize:默认为1024,单位是字节,最终hdfs上切出来的文件大小都是1024字节,如果设置为0表示不按大小切文件
rollCount:默认为10,表示每隔10条数据切出来一个文件,如果设置为0表示不按数据条数切文件

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/255880.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

鸿蒙开发ArkTS语言—状态管理概述

概述 我们构建的页面多为静态界面。如果希望构建一个动态的、有交互的界面,就需要引入“状态”的概念。 图1 效果图 上面的示例中,用户与应用程序的交互触发了文本状态变更,状态变更引起了UI渲染,UI从“Hello World”变更为“Hel…

方法-TensorBoard如何在PC端远程可视化服务器的训练结果

本专栏为深度学习的一些技巧,方法和实验测试,偏向于实际应用,后续不断更新,感兴趣童鞋可关,方便后续推送 简介 TensorBoard 是 TensorFlow 的可视化工具,可以帮助用户实时监控深度神经网络的训练过程,基于PyTorch的训练过程也可以可视化。假设我在服务器上进行模型…

SpringSecurity6 | 修改默认用户

✅作者简介:大家好,我是Leo,热爱Java后端开发者,一个想要与大家共同进步的男人😉😉 🍎个人主页:Leo的博客 💞当前专栏: Java从入门到精通 ✨特色专栏: MySQL学习 🥭本文内容:SpringSecurity6 | 修改默认用户 📚个人知识库 :知识库,欢迎大家访问 学习参考…

【前端架构】清洁前端架构

探索前端架构:概述与干净的前端架构相关的一些原则(SOLID、KISS、DRY、DDD等)。 在我之前的一篇帖子中,我谈到了Signals和仍然缺少的内容[1]。现在,我想谈谈一个更通用的主题,即Clean Frontend Architectu…

用C语言的循环嵌套打印菱形

这是用循环弄出来的,看的时候可以列一个表,将空格,要打印的*数,行数对应出来,因为里面涉及到一些数学公式,写出来的话方便观察! #define _CRT_SECURE_NO_WARNINGS 1//C语言中用scanf可能会警告&…

软件开发自动化到智能文档检索:大语言模型驱动的开源项目盘点 | 开源专题 No.46

shroominic/codeinterpreter-api Stars: 2.4k License: MIT 这是一个 ChatGPT 代码解释器的开源实现项目,使用了 LangChain 和 CodeBoxes 进行后端沙盒式 Python 代码执行。该项目具有以下特性和优势: 数据集分析、股票图表绘制、图像处理等功能支持网…

Vue2脚手架搭建+项目基础依赖安装

文章目录 1. 安装 node.js2. 安装 vue-cli 脚手架3. 创建 vue2 项目4. 安装基础依赖 1. 安装 node.js 可以参考这篇文章 https://blog.csdn.net/weixin_43721000/article/details/134284418 2. 安装 vue-cli 脚手架 安装 vue-clinpm install -g vue/cli查看是否安装成功vue -…

最优化理论复习--对偶理论及灵敏度分析(一)

文章目录 上一篇对偶表示对偶问题的基本性质对偶问题的经济学解释:影子价格下一篇 上一篇 最优化理论复习–单纯形方法 对偶表示 一般情况: 对偶问题与原问题的字母表示: 对偶表示运用表格: m i n ⇒ m a x min \Rightarrow max min⇒m…

C++ vector基本操作

目录 一、介绍 二、定义 三、迭代器 四、容量操作 1、size 2、capacity 3、empty 4、resize 5、reserve 总结(扩容机制) 五、增删查改 1、push_back & pop_back 2、find 3、insert 4、erase 5、swap 6、operator[] 一、介绍 vector…

批量AI写作生成器有哪些?免费的批量AI写作生成器

当今信息爆炸的时代,文案需求量庞大,传统文案写作已无法满足快速迭代的需求。批量AI写作生成器应运而生,成为许多行业的得力助手。在众多AI写作工具中,147原创助手以其批量AI写作功能和在各大平台显示原创首发的特性脱颖而出。本文…

Linux安装mysq 8.0服务端和客户端(亲测保成功)

1. 查看当前是否有已经安装好的mysql,先卸载 # 命令 rpm -qa|grep -i mysql# 结果显示 mysql-community-libs-5.7.42-1.el7.x86_64 mysql-community-common-5.7.42-1.el7.x86_64 mysql-community-libs-compat-5.7.42-1.el7.x86_64 mysql57-community-release-el7-10.noarch my…

ProEasy机器人案例:电池边包胶

如下图所示,对一个电池三边包边,因客户现场有很多规格电池的大小,所以就需要建立动态的工具坐标来实现适配所有种类的电池 程序如下:Ddome程序 function Speed(num) --速度设置 MaxSpdL(2000) --movl最大速度…