# Перейдите в каталог вакансий
cd /opt/module/flume/conf/job
# Редактировать файл конфигурации
vim hdfs.conf
hdfsAgent.sources = hdfsSource
hdfsAgent.sinks = hdfsSinks
hdfsAgent.channels = hdfsChannel
hdfsAgent.sources.hdfsSource.type = spooldir
hdfsAgent.sources.hdfsSource.channels = hdfsChannel
hdfsAgent.sources.hdfsSource.spoolDir = /opt/module/flume/conf/data/hdfs
hdfsAgent.sources.hdfsSource.fileHeader = true
hdfsAgent.sinks.hdfsSinks.type = hdfs
hdfsAgent.sinks.hdfsSinks.hdfs.path = hdfs://master:8020/flume/events/%y-%m-%d/%H%M/%S
hdfsAgent.sinks.hdfsSinks.hdfs.filePrefix = events
hdfsAgent.sinks.hdfsSinks.hdfs.fileSuffix = log
hdfsAgent.sinks.hdfsSinks.hdfs.round = true
hdfsAgent.sinks.hdfsSinks.hdfs.roundValue = 10
hdfsAgent.sinks.hdfsSinks.hdfs.roundUnit = minute
hdfsAgent.sinks.hdfsSinks.hdfs.minBlockReplicas = 1
hdfsAgent.sinks.hdfsSinks.hdfs.rollInterval = 0
hdfsAgent.sinks.hdfsSinks.hdfs.rollSize = 134217728
hdfsAgent.sinks.hdfsSinks.hdfs.rollCount = 0
hdfsAgent.sinks.hdfsSinks.hdfs.idleTimeout = 60
hdfsAgent.sinks.hdfsSinks.hdfs.fileType = DataStream
hdfsAgent.sinks.hdfsSinks.hdfs.useLocalTimeStamp = true
hdfsAgent.channels.hdfsChannel.type = memory
hdfsAgent.channels.hdfsChannel.capacity = 1000
hdfsAgent.channels.hdfsChannel.transactionCapacity = 100
hdfsAgent.sources.hdfsSource.channels = hdfsChannel
hdfsAgent.sinks.hdfsSinks.channel = hdfsChannel
hdfsAgent.sources = hdfsSource
Здесь файл с именем hdfsSource источник данных.
hdfsAgent.sources.hdfsSource.type = spooldir
Тип источника данных: каталог спулинга, значит Flume Будет прослушивать и собирать файлы из указанного каталога.
hdfsAgent.sources.hdfsSource.channels = hdfsChannel
Этот источник данных будет использовать файл с именем hdfsChannel канал для передачи данных.
hdfsAgent.sources.hdfsSource.spoolDir = /opt/module/flume/conf/data/hdfs
Это Flume Путь к каталогу для мониторинга. Он будет проверять наличие новых файлов в этом каталоге.
hdfsAgent.sources.hdfsSource.fileHeader = true
это означает Flume Информация заголовка файла будет включена в собранные файлы, обычно используемые для записи метаданных.
hdfsAgent.sinks = hdfsSinks
Здесь файл с именем hdfsSinks куда идут данные.
hdfsAgent.sinks.hdfsSinks.type = hdfs
Тип назначения данных: HDFS, что указывает на то, что данные будут записаны в HDFS середина.
hdfsAgent.sinks.hdfsSinks.hdfs.path = hdfs://master:8020/flume/events/%y-%m-%d/%H%M/%S
Эти данные хранятся в HDFS Формат пути в формате , включая дату и время. лоток Каталог будет автоматически создан по этому пути в зависимости от времени сбора.
hdfsAgent.sinks.hdfsSinks.hdfs.filePrefix = events
Префикс выходного файла: “events”。
hdfsAgent.sinks.hdfsSinks.hdfs.fileSuffix = log
Суффикс выходного файла: “.log”。
hdfsAgent.sinks.hdfsSinks.hdfs.round = true
Указывает, что механизм прокрутки включен и файлы разделены по времени.
hdfsAgent.sinks.hdfsSinks.hdfs.roundValue = 10
Прокрутка данных срабатывает каждые 10 минут.
hdfsAgent.sinks.hdfsSinks.hdfs.roundUnit = minute
Указанная здесь единица времени — минуты.
hdfsAgent.sinks.hdfsSinks.hdfs.minBlockReplicas = 1
Минимальное количество копий 1, означает письмо HDFS Будет копия данных.
hdfsAgent.sinks.hdfsSinks.hdfs.rollInterval = 0
Установка значения 0 означает, что прокрутка не будет принудительной в зависимости от времени, в основном через round Механизм прокрутки файлов.
hdfsAgent.sinks.hdfsSinks.hdfs.rollSize = 134217728
Размер файла достигает 128MB будет прокручиваться.
hdfsAgent.sinks.hdfsSinks.hdfs.rollCount = 0
Установка значения 0 означает прокрутку без ограничения количества записей.
hdfsAgent.sinks.hdfsSinks.hdfs.idleTimeout = 60
Если данные не поступают, файл будет закрыт через 60 секунд.
hdfsAgent.sinks.hdfsSinks.hdfs.fileType = DataStream
Этот параметр указывает, что тип файла является потоком, а это означает, что данные будут записываться в виде потока.
hdfsAgent.sinks.hdfsSinks.hdfs.useLocalTimeStamp = true
Включите локальную временную метку в качестве временной метки файла.
hdfsAgent.channels.hdfsChannel.type = memory
Тип канала — канал памяти, что означает, что данные передаются в памяти.
hdfsAgent.channels.hdfsChannel.capacity = 1000
Канал памяти может хранить до 1000 событий.
hdfsAgent.channels.hdfsChannel.transactionCapacity = 100
В каждой транзакции может быть обработано не более 100 событий.
# Создайте каталог /flume/events на hdfs.
hadoop fs -mkdir -p /flume/events
# Добавить разрешения
hadoop fs -chmod 777 -R /flume/*
# Создать путь к файлу журнала
mkdir -p /opt/module/flume/conf/data/hdfs
# Создайте каталог для хранения скрипта
mkdir -p /opt/module/flume/job-shell
# Переключиться в этот каталог
/opt/module/flume/job-shell
# Редактировать сценарий
vim logData_To_Hdfs
#!/bin/bash
# Установить путь сохранения
SPOOL_DIR="/opt/module/flume/conf/data/hdfs"
# создавать spoolDir путь (если его нет)
mkdir -p "${SPOOL_DIR}"
# генерировать 5 случайные файлы журналов
for i in {1..5}; do
LOG_FILE="${SPOOL_DIR}/logfile_${i}.log"
echo "INFO: This is a simulated log entry $(date '+%Y-%m-%d %H:%M:%S')" > "${LOG_FILE
echo "Generated ${LOG_FILE}"
sleep 1 # Аналоговое сокращение интервалов
done
# Добавить разрешения
chmod 777 ./*
cd /opt/module/flume/job-shell
vim hdfs
#!/bin/bash
echo " --------запускать master Соберите данные журнала дляHDFS --------"
nohup /opt/module/flume/bin/flume-ng agent -n hdfsAgent -c /opt/module/flume/conf/ -f /opt/module/flume/conf/job/hdfs.conf >/dev/null 2>&1 &
# Добавить разрешения
chmod 777 ./*
# Сначала запустите все процессы Hadoop
allstart.sh
# Переключиться на путь запуска скрипта
cd /opt/module/flume/job-shell
# Запустите скрипт сбора лотковhdfs
# Запустить скрипт создания файла журнала
logData_To_Hdfs
hadoop fs -ls -R /flume