做网站流程图,如何做p2p网站,网站开发人员的职责是什么,北京百度seo服务1 Flume简介 Flume是一个高可用、高可靠、分布式的海量日志采集、聚合和传输的系统 主要特性#xff1a; 它有一个简单、灵活的基于流的数据流结构#xff08;使用Event封装#xff09;具有负载均衡机制和故障转移机制一个简单可扩展的数据模型(Source、Channel、Sink) Sou…1 Flume简介 Flume是一个高可用、高可靠、分布式的海量日志采集、聚合和传输的系统 主要特性 它有一个简单、灵活的基于流的数据流结构使用Event封装具有负载均衡机制和故障转移机制一个简单可扩展的数据模型(Source、Channel、Sink) Source组件 从外界采集各种类型数据将数据传递给Channel支持类型有文件、目录、端口、Kafka等Exec Source实现文件监控注意 tail -F跟踪文件 和 tail -f 的区别NetCat TCP/UDP Source 采集指定端口(tcp、udp)的数据Spooling Directory Source采集文件夹里新增的文件Kafka Source从Kafka消息队列中采集数据 Channel组件 接受Source发出的数据临时存储支持类型有内存、文件内存文件、JDBC等Memory Channel使用内存作为数据的存储内存有限临时存储File Channel使用文件来作为数据的存储Spillable Memory Channel使用内存和文件作为数据存储即先存到内存中如果内存中数据达到阈值再flush到文件中 Sink组件 从Channel中读取数据并存储到指定目的地表现形式控制台、HDFS、Kafka等注意Channel中的数据直到进入目的地才会被删除当Sink写入失败后可以自动重写不会造成数据丢失Logger Sink将数据作为日志处理HDFS Sink将数据传输到HDFS中Kafka Sink将数据发送到kafka消息队列中 2 Flume部署
访问flume下载地址下载apache-flume-1.9.0-bin.tar.gz安装包在/data/soft目录下解压
2.1 修改flume-env.sh文件
cd /data/soft/apache-flume-1.9.0-bin/conf
mv flume-env.sh.template flume-env.sh将flume-env.sh.template剪切放到flume-env.sh中 2.2 示例
# example.conf: A single-node Flume configuration# Name the components on this agent 定义组件名称
# 这里定义了一个agent代理名为a1包含了一个source数据源r1一个sink数据汇k1以及一个channel通道c1。
a1.sources r1
a1.sinks k1
a1.channels c1# Describe/configure the source 配置数据源
# 这里设置数据源r1的类型为netcat通过网络接收数据绑定的IP地址为0.0.0.0监听端口为44444。
a1.sources.r1.type netcat
a1.sources.r1.bind 0.0.0.0
a1.sources.r1.port 44444# Describe the sink 配置数据汇
# 这里设置数据汇k1的类型为logger打印日志。
a1.sinks.k1.type logger# Use a channel which buffers events in memory 配置通道
# 这里设置通道c1的类型为memory内存缓冲区容量为1000事务容量为100。
a1.channels.c1.type memory
a1.channels.c1.capacity 1000
a1.channels.c1.transactionCapacity 100# Bind the source and sink to the channel 绑定数据源和数据汇到通道
# 这里将数据源r1绑定到通道c1将数据汇k1绑定到通道c1。
a1.sources.r1.channels c1
a1.sinks.k1.channel c1这段代码是一个单节点的Flume配置文件用于将网络上的数据通过netcat source接收并通过logger sink输出到日志中。
通过这个配置文件Flume Agent将会监听44444端口上的网络流量并将收到的数据通过logger sink输出到日志中。通道c1将以内存缓冲的方式在数据源和数据汇之间传递数据。 执行命令
cd /data/soft/apache-flume-1.9.0-bin
bin/flume-ng agent --conf conf --conf-file conf/example.conf --name a1 -Dflume.root.loggerINFO,console该命令是用于启动 Apache Flume 的代理(agent)。以下是对各个部分的解释 bin/flume-ng: 这是 Flume 的启动脚本用于执行 Flume 的命令。agent: 表示要启动的 Flume 组件是一个代理(agent)。--conf conf: 指定 Flume 配置文件的目录即 conf 目录。--conf-file conf/example.conf: 指定 Flume 使用的配置文件路径这里的路径是 conf/example.conf。--name a1: 给代理(agent)指定一个名称此处为 a1。-Dflume.root.loggerINFO,console: 设置 Flume 的日志级别为 INFO并将日志输出到控制台。 综上所述该命令将使用指定的配置文件(conf/example.conf)启动一个名为 a1 的 Flume 代理(agent)并将日志输出到控制台。 开启另一个Terminal执行远程连接命令并输入传输内容
telnet localhost 44444telnet localhost 44444 是一条命令用于在本地主机上使用 Telnet 协议连接到端口号为 44444 的服务。 Telnet 是一种远程登录协议允许你通过网络通常是互联网与其他计算机建立终端会话。在这种情况下你正在尝试连接到本地主机localhost上的 44444 端口。 如果 44444 端口上有运行并配置为接受 Telnet 连接的服务该命令将建立与该服务的连接。然而如果该端口上没有运行任何服务或者被防火墙阻止连接尝试将失败。 一旦 Telnet 会话建立你可以使用基于文本的命令与远程服务进行交互。 3 高级组件
相关配置需要参考官方文档 Source InterceptorsSource可以指定一个或者多个拦截器按先后顺序依次对采集到的数据进行处理 Channel SelectorsSource发往多个Channel的策略设置 Sink ProcessorsSink发送数据的策略设置 Event Event是Flume传输数据的基本单位也是事务的基本单位在文本文件中通常一行记录就是一个EventEvent里有header和bodyheader类型为MapString, String可以在Source中增加header的key, value在Channel和Sink中使用header中的值
3.1 Source Interceptors
常见Interceptors类型Timestamp Interceptor、Host Interceptor、Search and Replace Interceptor 、Static Interceptor、Regex Extractor Interceptor等 3.2 Channel Selectors
Channel Selectors类型包括Replicating Channel Selector(default)和Multiplexing Channel SelectorReplicating会将Source采集过来的Event发往所有ChannelMultiplexing会根据Event中header里面的值将Event发往不同的Channel 3.3 Sink Processors
Sink Processors类型包括Default Sink Processor、Load balancing Sink Processor和Failover Sink ProcessorDefault是默认的不用配置sinkgroupLoad balancing是负载均衡Failover是故障转移后面需要定义sinkgroup 4 性能优化 Flume优化 调整Flume进程的内存大小建议设置1G~2G内存设置太小可能导致频繁GC启动多个Flume进程时建议修改配置区分日志文件复制多个conf目录修改log4j.properties文件 Flume进程监控 Flume是一个单进程程序会存在单点故障所以需要有一个监控机制发现Flume进程Down掉之后需要重启通过Shell脚本使用jps命令对Flume进程进行监控、告警之后并自动重启