6、Flume安装

按照采集通道规划,需在hadoop102,hadoop104两台节点分别部署一个Flume。可参照以下步骤先在hadoop102安装,然后再进行分发。

1. Flume安装部署

1.1 安装地址

(1) Flume官网地址:Welcome to Apache Flume --- Apache Flume

(2)文档查看地址:Flume 1.11.0 User Guide --- Apache Flume

(3)下载地址:Index of /dist/flume

1.2 安装部署

(1)将apache-flume-1.10.1-bin.tar.gz上传到linux的/opt/software目录下

(2)解压apache-flume-1.10.1-bin.tar.gz到/opt/module/目录下

复制代码
[shuidi@hadoop102 software]$ tar -zxvf /opt/software/apache-flume-1.10.1-bin.tar.gz -C /opt/module/

(3)修改apache-flume-1.10.1-bin的名称为flume

复制代码
[shuidi@hadoop102 module]$ mv /opt/module/apache-flume-1.10.1-bin /opt/module/flume

(4)修改conf目录下的log4j2.xml配置文件,配置日志文件路径

复制代码
[shuidi@hadoop102 flume]$  vim log4j2.xml



<?xml version="1.0" encoding="UTF-8"?>
<!--
 Licensed to the Apache Software Foundation (ASF) under one or more
 contributor license agreements.  See the NOTICE file distributed with
 this work for additional information regarding copyright ownership.
 The ASF licenses this file to You under the Apache License, Version 2.0
 (the "License"); you may not use this file except in compliance with
 the License.  You may obtain a copy of the License at

      http://www.apache.org/licenses/LICENSE-2.0

 Unless required by applicable law or agreed to in writing, software
 distributed under the License is distributed on an "AS IS" BASIS,
 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 See the License for the specific language governing permissions and
 limitations under the License.

-->
<Configuration status="ERROR">
  <Properties>
    <Property name="LOG_DIR">/opt/module/flume/log</Property>
  </Properties>
  <Appenders>
    <Console name="Console" target="SYSTEM_ERR">
      <PatternLayout pattern="%d (%t) [%p - %l] %m%n" />
    </Console>
    <RollingFile name="LogFile" fileName="${LOG_DIR}/flume.log" filePattern="${LOG_DIR}/archive/flume.log.%d{yyyyMMdd}-%i">
      <PatternLayout pattern="%d{dd MMM yyyy HH:mm:ss,SSS} %-5p [%t] (%C.%M:%L) %equals{%x}{[]}{} - %m%n" />
      <Policies>
        <!-- Roll every night at midnight or when the file reaches 100MB -->
        <SizeBasedTriggeringPolicy size="100 MB"/>
        <CronTriggeringPolicy schedule="0 0 0 * * ?"/>
      </Policies>
      <DefaultRolloverStrategy min="1" max="20">
        <Delete basePath="${LOG_DIR}/archive">
          <!-- Nested conditions: the inner condition is only evaluated on files for which the outer conditions are true. -->
          <IfFileName glob="flume.log.*">
            <!-- Only allow 1 GB of files to accumulate -->
            <IfAccumulatedFileSize exceeds="1 GB"/>
          </IfFileName>
        </Delete>
      </DefaultRolloverStrategy>
    </RollingFile>
  </Appenders>

  <Loggers>
    <Logger name="org.apache.flume.lifecycle" level="info"/>
    <Logger name="org.jboss" level="WARN"/>
    <Logger name="org.apache.avro.ipc.netty.NettyTransceiver" level="WARN"/>
    <Logger name="org.apache.hadoop" level="INFO"/>
<Logger name="org.apache.hadoop.hive" level="ERROR"/>
# 引入控制台输出,方便学习查看日志
    <Root level="INFO">
      <AppenderRef ref="LogFile" />
      <AppenderRef ref="Console" />
    </Root>
  </Loggers>

</Configuration>

1.3 分发Flume

复制代码
[shuidi@hadoop102 conf]$ xsync /opt/module/flume/

项目经验

(1)堆内存调整

Flume堆内存通常设置为4G或更高,配置方式如下:

修改/opt/module/flume/conf/flume-env.sh文件,配置如下参数(虚拟机环境暂不配置)

复制代码
export JAVA_OPTS="-Xms4096m -Xmx4096m -Dcom.sun.management.jmxremote"

注:

-Xms表示JVM Heap(堆内存)最小尺寸,初始分配。

-Xmx 表示JVM Heap(堆内存)最大允许的尺寸,按需分配。

2.日志采集Flume

2.1 日志采集Flume配置概述

按照规划,需要采集的用户行为日志文件存放在hadoop102,故需要在该节点配置日志采集Flume。日志采集Flume需要采集日志文件内容,并对日志格式(JSON)进行校验,然后将校验通过的日志发送到Kafka。

此处可选择TaildirSource和KafkaChannel,并配置日志校验拦截器。

选择TailDirSource和KafkaChannel的原因如下:

1)TailDirSource

TailDirSource相比ExecSource、SpoolingDirectorySource的优势。

TailDirSource:断点续传、多目录。Flume1.6以前需要自己自定义Source记录每次读取文件位置,实现断点续传。

ExecSource可以实时搜集数据,但是在Flume不运行或者Shell命令出错的情况下,数据将会丢失。

SpoolingDirectorySource监控目录,支持断点续传。

2)KafkaChannel

采用Kafka Channel,省去了Sink,提高了效率。

日志采集Flume关键配置如下:

2.2 日志采集Flume配置实操

1)创建Flume配置文件

在hadoop102节点的Flume的job目录下创建file_to_kafka.conf。

复制代码
[shuidi@hadoop102 flume]$ mkdir job
[shuidi@hadoop102 flume]$ vim job/file_to_kafka.conf

2)配置文件内容如下

复制代码
#定义组件
a1.sources = r1
a1.channels = c1

#配置source
a1.sources.r1.type = TAILDIR
a1.sources.r1.filegroups = f1
a1.sources.r1.filegroups.f1 = /opt/module/applog/log/app.*
a1.sources.r1.positionFile = /opt/module/flume/taildir_position.json

#配置channel
a1.channels.c1.type = org.apache.flume.channel.kafka.KafkaChannel
a1.channels.c1.kafka.bootstrap.servers = hadoop102:9092,hadoop103:9092
a1.channels.c1.kafka.topic = topic_log
a1.channels.c1.parseAsFlumeEvent = false

#组装 
a1.sources.r1.channels = c1

2.3 日志采集Flume测试

1)启动Zookeeper、Kafka集群

2)启动hadoop102的日志采集Flume

复制代码
[shuidi@hadoop102 flume]$ bin/flume-ng agent -n a1 -c conf/ -f job/file_to_kafka.conf

3)启动一个Kafka的Console-Consumer

复制代码
[shuidi@hadoop102 kafka]$ bin/kafka-console-consumer.sh --bootstrap-server hadoop102:9092 --topic topic_log

4)生成数据

执行集群日志生成脚本。

复制代码
[shuidi@hadoop102 ~]$ lg.sh test 100

5)观察Kafka消费者是否能消费到数据

2.4 日志采集Flume启停脚本

1)在hadoop102节点的/home/shuidi/bin目录下创建脚本f1.sh

复制代码
[shuidi@hadoop102 bin]$ vim f1.sh

在脚本中填写如下内容。

复制代码
#!/bin/bash

case $1 in
"start"){
    echo " --------启动 hadoop102 采集flume-------"
    ssh hadoop102 "nohup /opt/module/flume/bin/flume-ng agent -n a1 -c /opt/module/flume/conf/ -f /opt/module/flume/job/file_to_kafka.conf >/dev/null 2>&1 &"
};; 
"stop"){
    echo " --------停止 hadoop102 采集flume-------"
    ssh hadoop102 "ps -ef | grep file_to_kafka | grep -v grep |awk  '{print \$2}' | xargs -n1 kill -9 "
};;
esac

2)增加脚本执行权限

复制代码
[shuidi@hadoop102 bin]$ chmod 777 f1.sh

3)f1启动

复制代码
[shuidi@hadoop102 bin]$ f1.sh start

4)f1停止

复制代码
[shuidi@hadoop102 bin]$ f1.sh stop
相关推荐
会飞的老朱3 小时前
医药集团数智化转型,智能综合管理平台激活集团管理新效能
大数据·人工智能·oa协同办公
AI_56787 小时前
AWS EC2新手入门:6步带你从零启动实例
大数据·数据库·人工智能·机器学习·aws
CRzkHbaXTmHw7 小时前
探索Flyback反激式开关电源的Matlab Simulink仿真之旅
大数据
七夜zippoe8 小时前
CANN Runtime任务描述序列化与持久化源码深度解码
大数据·运维·服务器·cann
盟接之桥8 小时前
盟接之桥说制造:引流品 × 利润品,全球电商平台高效产品组合策略(供讨论)
大数据·linux·服务器·网络·人工智能·制造
忆~遂愿8 小时前
ops-cv 算子库深度解析:面向视觉任务的硬件优化与数据布局(NCHW/NHWC)策略
java·大数据·linux·人工智能
忆~遂愿9 小时前
GE 引擎与算子版本控制:确保前向兼容性与图重写策略的稳定性
大数据·开发语言·docker
米羊1219 小时前
已有安全措施确认(上)
大数据·网络
人道领域10 小时前
AI抢人大战:谁在收割你的红包
大数据·人工智能·算法
qq_124987075311 小时前
基于Hadoop的信贷风险评估的数据可视化分析与预测系统的设计与实现(源码+论文+部署+安装)
大数据·人工智能·hadoop·分布式·信息可视化·毕业设计·计算机毕业设计