flumeСобираем данные в Существует четыре экземпляра hbase. В этой статье они перечислены один за другим. Процессы каждого экземпляра аналогичны. Разница в основном заключается в написании файла конфигурации. Среди них 1 Более подробный процесс приведен в Примере для получения следующих примеров. 1 процесс
cd /opt/module/flume/conf/job
vim test-flume-into-hbase-1.conf
agent.sources = logfile-source
agent.channels = file-channel
agent.sinks = hbase-sink
agent.sources.logfile-source.type = exec
agent.sources.logfile-source.command = tail -f /data/flume-hbase-test/mkhbasetable/data/test.log
agent.sources.logfile-source.checkerpiodic = 50
agent.sources.logfile-source.channels = file-channel
agent.channels.file-channel.type = file
agent.channels.file-channel.checkpointDir = /data/flume-hbase-test/checkpoint
agent.channels.file-channel.dataDirs = /data/flume-hbase-test/data
agent.sinks.hbase-sink.type = org.apache.flume.sink.hbase.HBaseSink
agent.sinks.hbase-sink.table = mikeal-hbase-table-test1
agent.sinks.hbase-sink.columnFamily = familycloml
agent.sinks.hbase-sink.serializer = org.apache.flume.sink.hbase.SimpleHbaseEventSerializer
agent.sinks.hbase-sink.serializer.payloadcolumn = column-1
agent.sinks.hbase-sink.channel = file-channel
agent.sources: определение Flume Источник прокси, установленный здесь `logfile-source`。
agent.sources.logfile-source.type: Тип источника `exec` означает, что он выполнит команду для получения данных.
agent.sources.logfile-source.command: Укажите команду для выполнения, `tail -f /data/flume-hbase-test/mkhbasetable/data/test.log` Используется для отслеживания в реальном времени. `test.log` Файл, вывод нового содержимого в файл.
agent.sources.logfile-source.checkerpiodic: Это опечатка, так и должно быть `checker. period`, его функция — установить продолжительность проверки источника (в миллисекундах) и определить, сколько времени потребуется для проверки наличия у источника новых данных. Здесь установлено значение «каждые». 50 Проверяйте раз в миллисекунды.
agent.sources.logfile-source.channels: Определяет соединение между источником и каналом, здесь указывает на `file-channel`, указывающий, что данные, прочитанные из этого источника, будут отправлены в этот канал.
agent.channels: определение Flume Здесь настроен прокси-канал `file-channel`。
agent.channels.file-channel.type: Тип канала `файл` означает использование файловой системы для хранения данных.
agent.channels.file-channel.checkpointDir: Это каталог контрольных точек канала, используемый для хранения состояния канала для восстановления после сбоя.
agent.channels.file-channel.dataDirs: Это каталог хранения данных канала. Канал будет временно хранить здесь данные до тех пор, пока. Sink Извлечь данные.
agent.sinks: определение Flume Здесь настроен приемник прокси-сервера `hbase-sink`。
agent.sinks.hbase-sink.type: Тип приемника HBaseSink означает, что этот приемник записывает данные в HBase база данных.
agent.sinks.hbase-sink.table: Укажите, что написать HBase Название таблицы, вот `mikeal-hbase-table-test1`。
agent.sinks.hbase-sink.columnFamily: обозначение HBase Имя семейства столбцов таблицы, вот `семейный`. Необходимо подтвердить, существует ли уже семейство столбцов в HBase стол.
agent.sinks.hbase-sink.serializer: обозначение Как сериализовать данные в класс,Здесь простой HBase сериализатор событий `SimpleHbaseEventSerializer`。
agent.sinks.hbase-sink.serializer.payloadcolumn: данные изображения должны быть сохранены в HBase Здесь указывается имя столбца `column-1`, это значение будет соответствовать HBase Столбец таблицы.
agent.sinks.hbase-sink.channel: обозначение Канал, используемый этим ресивером,Это указывает на `file-channel` означает, что он читает данные из этого канала.
# Создание путей хранения журналов и данных
mkdir -p /data/flume-hbase-test/mkhbasetable/data/
# Создайте путь контрольной точки канала и путь промежуточной передачи данных канала.
mkdir -p /data/flume-hbase-test/data
mkdir -p /data/flume-hbase-test/checkpoint
# Создать пустой файл журнала
cd /data/flume-hbase-test/mkhbasetable/data/
touch test.log
# Редактировать файлы данных моделирования
vim data-test1.txt
134.3
726.9
262.0
902.8
665.8
153.2
618.3
333.4
985.7
201.2
970.3
234.8
# Последовательно запустите все процессы Hadoop, Zookeeper и Hbase.
allstart.sh
# Запустить базу данных shell
hbase shell
# Создайте таблицу mikeal-hbase-table-test1.
create 'mikeal-hbase-table-test1', 'familycloml'
# Переключиться на путь к скрипту
cd /opt/module/flume/job-shell
# Редактировать сценарий запуска
vim test-flume-into-hbase-1
#!/bin/bash
echo " --------запускать master Сбор данных журнала в Hbase Тест 1--------"
nohup /opt/module/flume/bin/flume-ng agent -n agent -c /opt/module/flume/conf/ -f /opt/module/flume/conf/job/test-flume-into-hbase-1.conf >/dev/null 2>&1 &
# Добавить разрешения
chmod 777 ./*
# Переключиться на путь запуска скрипта
cd /opt/module/flume/job-shell
# Запустите скрипт сбора лотков
test-flume-into-hbase-1
# Добавить данные в файл журнала
/data/flume-hbase-test/mkhbasetable/data
cat data-test1.txt >> test.log
cd /opt/module/flume/conf/job
vim test-flume-into-hbase-2.conf
agent.sources = logfile-source
agent.channels = file-channel
agent.sinks = hbase-sink
agent.sources.logfile-source.type = exec
agent.sources.logfile-source.command = tail -f /data/flume-hbase-test/mkhbasetable/data/test.log
agent.sources.logfile-source.checkPeriodic = 50
agent.channels.file-channel.type = file
agent.channels.file-channel.checkpointDir = /data/flume-hbase-test/checkpoint
agent.channels.file-channel.dataDirs = /data/flume-hbase-test/data
agent.sinks.hbase-sink.type = org.apache.flume.sink.hbase.AsyncHBaseSink
agent.sinks.hbase-sink.table = mikeal-hbase-table-test2
agent.sinks.hbase-sink.columnFamily = familycloml
agent.sinks.hbase-sink.serializer = org.apache.flume.sink.hbase.SimpleAsyncHbaseEventSerializer
agent.sinks.hbase-sink.serializer.payloadColumn = column-1
agent.sources.logfile-source.channels = file-channel
agent.sinks.hbase-sink.channel = file-channel
Пример 2 Используйте режим сериализации SimpleAsyncHbaseEventSerializer для сбора данных, другие режимы в основном такие же, как в примере 1 последовательный
create 'mikeal-hbase-table-test2', 'familycloml'
vim test-flume-into-hbase-2
#!/bin/bash
echo " --------запускать master Сбор данных журнала в Hbase Тест 2--------"
nohup /opt/module/flume/bin/flume-ng agent -n agent -c /opt/module/flume/conf/ -f /opt/module/flume/conf/job/test-flume-into-hbase-2.conf >/dev/null 2>&1 &
# Добавить разрешения
chmod 777 ./*
# Переключиться на путь запуска скрипта
cd /opt/module/flume/job-shell
# Запустите скрипт сбора лотков
test-flume-into-hbase-2
# Добавить данные в файл журнала
cd /data/flume-hbase-test/mkhbasetable/data
cat data-test1.txt >> test.log
cd /opt/module/flume/conf/job
vim test-flume-into-hbase-3.conf
agent.sources = logfile-source
agent.channels = file-channel
agent.sinks = hbase-sink
agent.sources.logfile-source.type = exec
agent.sources.logfile-source.command = tail -f /data/flume-hbase-test/mkhbasetable/data/nginx.log
agent.sources.logfile-source.checkperiodic = 50
agent.channels.file-channel.type = file
agent.channels.file-channel.checkpointDir = /data/flume-hbase-test/checkpoint
agent.channels.file-channel.dataDirs = /data/flume-hbase-test/data
agent.sinks.hbase-sink.type = org.apache.flume.sink.hbase.HBaseSink
agent.sinks.hbase-sink.table = mikeal-hbase-table-test3
agent.sinks.hbase-sink.columnFamily = familycloml
agent.sinks.hbase-sink.serializer = org.apache.flume.sink.hbase.RegexHbaseEventSerializer
agent.sinks.hbase-sink.serializer.regex = (\\d+\\.\\d+\\.\\d+\\.\\d+) \\[(.*?)\\] \\w+ (.+)
agent.sinks.hbase-sink.serializer.colNames = ip, time, url
agent.sources.logfile-source.channels = file-channel
agent.sinks.hbase-sink.channel = file-channel
agent.sinks.hbase-sink.serializer = org.apache.flume.sink.hbase.RegexHbaseEventSerializer: обозначение Используйте сериализатор регулярных выражений для сериализации событий как HBase Приемлемые форматы.
agent.sinks.hbase-sink.serializer.regex =(\\d+\\.\\d+\\.\\d+\\.\\d+) \\[(.*?)\\] \\w+ (.+): определениерегулярное выражение,Извлеките соответствующие данные
agent.sinks.hbase-sink.serializer.colNames = ip, time, url: обозначение Имя столбца, который нужно извлечь,Данные, проанализированные из журнала, будут сопоставлены с HBase столбцы таблицы. вот ip、time и url。
create 'mikeal-hbase-table-test3', 'familycloml'
vim nginx-data.txt
192.168.1.1 [27/Sep/2024:10:28:00 -0400] GET /path/to/resource?param=value HTTP/1.1
10.0.0.2 [27/Sep/2024:10:32:31 -0400] POST /api/v1/data HTTP/1.1
172.16.0.3 [27/Sep/2024:10:34:45 -0400] DELETE /api/v2/resource HTTP/1.1
cd /data/flume-hbase-test/mkhbasetable/data
vim test-flume-into-hbase-3
#!/bin/bash
echo " --------запускать master Сбор данных журнала в Hbase Тест 3--------"
nohup /opt/module/flume/bin/flume-ng agent -n agent -c /opt/module/flume/conf/ -f /opt/module/flume/conf/job/test-flume-into-hbase-3.conf >/dev/null 2>&1 &
# Добавить разрешения
chmod 777 ./*
# Переключиться на путь запуска скрипта
cd /opt/module/flume/job-shell
# Запустите скрипт сбора лотков
test-flume-into-hbase-3
# Добавить данные в файл журнала
cd /data/flume-hbase-test/mkhbasetable/data
cat nginx-data.txt >> nginx.log
cd /opt/module/flume/conf/job
vim test-flume-into-hbase-multi-position.conf
agent.sources = logfile-source-1, logfile-source-2
agent.channels = file-channel-1, file-channel-2
agent.sinks = hbase-sink-1, hbase-sink-2
agent.sources.logfile-source-1.type = exec
agent.sources.logfile-source-1.command = tail -f /data/flume-hbase-test/mkhbasetable/data/nginx.log
agent.sources.logfile-source-1.checkperiodic = 50
agent.sources.logfile-source-2.type = exec
agent.sources.logfile-source-2.command = tail -f /data/flume-hbase-test/mkhbasetable/data/tomcat.log
agent.sources.logfile-source-2.checkperiodic = 50
agent.channels.file-channel-1.type = file
agent.channels.file-channel-1.checkpointDir = /data/flume-hbase-test/checkpoint
agent.channels.file-channel-1.dataDirs = /data/flume-hbase-test/data
agent.channels.file-channel-2.type = file
agent.channels.file-channel-2.checkpointDir = /data/flume-hbase-test/checkpoint2
agent.channels.file-channel-2.dataDirs = /data/flume-hbase-test/data2
agent.sinks.hbase-sink-1.type = org.apache.flume.sink.hbase.HBaseSink
agent.sinks.hbase-sink-1.table = mikeal-hbase-table-test-multi-position
agent.sinks.hbase-sink-1.columnFamily = familycloml1
agent.sinks.hbase-sink-1.serializer = org.apache.flume.sink.hbase.RegexHbaseEventSerializer
agent.sinks.hbase-sink-1.serializer.regex = (\\d+\\.\\d+\\.\\d+\\.\\d+) \\[(.*?)\\] \\w+ (.+)
agent.sinks.hbase-sink-1.serializer.colNames = ip, time, url
agent.sinks.hbase-sink-2.type = org.apache.flume.sink.hbase.HBaseSink
agent.sinks.hbase-sink-2.table = mikeal-hbase-table-test-multi-position
agent.sinks.hbase-sink-2.columnFamily = familycloml2
agent.sinks.hbase-sink-2.serializer = org.apache.flume.sink.hbase.RegexHbaseEventSerializer
agent.sinks.hbase-sink-2.serializer.regex = (\\d+\\.\\d+\\.\\d+\\.\\d+) \\[(.*?)\\] \\w+ (.+)
agent.sinks.hbase-sink-2.serializer.colNames = ip, time, url
agent.sources.logfile-source-1.channels = file-channel-1
agent.sinks.hbase-sink-1.channel = file-channel-1
agent.sources.logfile-source-2.channels = file-channel-2
agent.sinks.hbase-sink-2.channel = file-channel-2
Конфигурация основана на трех предыдущих примерах и добавляет двухканальный режим.
# Создайте путь контрольной точки канала и путь промежуточной передачи данных канала.
mkdir -p /data/flume-hbase-test/checkpoint2
mkdir -p /data/flume-hbase-test/data2
create 'mikeal-hbase-table-test-multi-position', 'familycloml1', 'familycloml2'
cd /data/flume-hbase-test/mkhbasetable/data
vim test-flume-into-hbase-multi-position
#!/bin/bash
echo " --------запускать master Сбор данных журнала в Hbase Тест 4--------"
nohup /opt/module/flume/bin/flume-ng agent -n agent -c /opt/module/flume/conf/ -f /opt/module/flume/conf/job/test-flume-into-hbase-multi-position.conf >/dev/null 2>&1 &
# Добавить разрешения
chmod 777 ./*
# Переключиться на путь запуска скрипта
cd /opt/module/flume/job-shell
# Запустите скрипт сбора лотков
test-flume-into-hbase-multi-position
# Добавить данные в файл журнала
cd /data/flume-hbase-test/mkhbasetable/data
cat nginx-data.txt >> nginx.log && cat nginx-data.txt >> tomcat.log