Канал проекта 3 собирает данные в hbase
Канал проекта 3 собирает данные в hbase

Введение

flumeСобираем данные в Существует четыре экземпляра hbase. В этой статье они перечислены один за другим. Процессы каждого экземпляра аналогичны. Разница в основном заключается в написании файла конфигурации. Среди них 1 Более подробный процесс приведен в Примере для получения следующих примеров. 1 процесс

Пример 1

Записать файл конфигурации

  • Сначала создайте файл конфигурации в каталоге /opt/module/flume/conf/job, чтобы Flume мог собирать данные из hbase.
Язык кода:shell
копировать
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
Подробное объяснение файлов конфигурации
  • Источник
Язык кода:txt
копировать
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`, указывающий, что данные, прочитанные из этого источника, будут отправлены в этот канал.
  • Канал
Язык кода:txt
копировать
agent.channels: определение Flume Здесь настроен прокси-канал `file-channel`。

agent.channels.file-channel.type: Тип канала `файл` означает использование файловой системы для хранения данных.

agent.channels.file-channel.checkpointDir: Это каталог контрольных точек канала, используемый для хранения состояния канала для восстановления после сбоя.

agent.channels.file-channel.dataDirs: Это каталог хранения данных канала. Канал будет временно хранить здесь данные до тех пор, пока. Sink Извлечь данные.
  • Получатель
Язык кода:txt
копировать
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` означает, что он читает данные из этого канала.

Создайте соответствующие пути и файлы

Язык кода:shell
копировать
# Создание путей хранения журналов и данных
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

hbase создает связанные таблицы

Язык кода:shell
копировать
# Последовательно запустите все процессы Hadoop, Zookeeper и Hbase.
allstart.sh

# Запустить базу данных shell
hbase shell

# Создайте таблицу mikeal-hbase-table-test1.
create 'mikeal-hbase-table-test1', 'familycloml'

Написать сценарий запуска

  • Этот сценарий удобно запускает задачи Flume без ручного ввода всех команд. Он также гарантирует, что процесс Flume продолжает работать в фоновом режиме, что делает его пригодным для использования в производственных средах.
Язык кода:shell
копировать
# Переключиться на путь к скрипту
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 ./*

Начать процесс

Язык кода:shell
копировать
# Переключиться на путь запуска скрипта
cd /opt/module/flume/job-shell

# Запустите скрипт сбора лотков
test-flume-into-hbase-1

# Добавить данные в файл журнала
/data/flume-hbase-test/mkhbasetable/data
cat data-test1.txt >> test.log 

Результаты испытаний

Пример 2

Записать файл конфигурации

Язык кода:shell
копировать
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

Подробное объяснение файлов конфигурации

Язык кода:txt
копировать
Пример 2 Используйте режим сериализации SimpleAsyncHbaseEventSerializer для сбора данных, другие режимы в основном такие же, как в примере 1 последовательный

hbase создает связанные таблицы

Язык кода:shell
копировать
create 'mikeal-hbase-table-test2', 'familycloml'

Написать сценарий запуска

Язык кода:shell
копировать
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 ./*

Начать процесс

Язык кода:shell
копировать
# Переключиться на путь запуска скрипта
cd /opt/module/flume/job-shell

# Запустите скрипт сбора лотков
test-flume-into-hbase-2

# Добавить данные в файл журнала
cd /data/flume-hbase-test/mkhbasetable/data
cat data-test1.txt >> test.log 

Результаты испытаний

Пример третий

Записать файл конфигурации

Язык кода:shell
копировать
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

Подробное объяснение файлов конфигурации

Язык кода:txt
копировать
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。

hbase создает связанные таблицы

Язык кода:shell
копировать
create 'mikeal-hbase-table-test3', 'familycloml'

Отредактируйте данные, необходимые для проверки файла журнала.

Язык кода:txt
копировать
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

Написать сценарий запуска

Язык кода:shell
копировать
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 ./*

Начать процесс

Язык кода:shell
копировать
# Переключиться на путь запуска скрипта
cd /opt/module/flume/job-shell

# Запустите скрипт сбора лотков
test-flume-into-hbase-3

# Добавить данные в файл журнала
cd /data/flume-hbase-test/mkhbasetable/data
cat nginx-data.txt >> nginx.log 

Результаты испытаний

Пример 4

Записать файл конфигурации

Язык кода:shell
копировать
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

Подробное объяснение файлов конфигурации

Язык кода:txt
копировать
Конфигурация основана на трех предыдущих примерах и добавляет двухканальный режим.

Создание связанных путей

Язык кода:shell
копировать
# Создайте путь контрольной точки канала и путь промежуточной передачи данных канала.
mkdir -p /data/flume-hbase-test/checkpoint2
mkdir -p /data/flume-hbase-test/data2

hbase создает связанные таблицы

Язык кода:shell
копировать
create 'mikeal-hbase-table-test-multi-position', 'familycloml1', 'familycloml2'

Написать сценарий запуска

Язык кода:shell
копировать
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 ./*

Начать процесс

Язык кода:shell
копировать
# Переключиться на путь запуска скрипта
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

Результаты испытаний

boy illustration
Неразрушающее увеличение изображений одним щелчком мыши, чтобы сделать их более четкими артефактами искусственного интеллекта, включая руководства по установке и использованию.
boy illustration
Копикодер: этот инструмент отлично работает с Cursor, Bolt и V0! Предоставьте более качественные подсказки для разработки интерфейса (создание навигационного веб-сайта с использованием искусственного интеллекта).
boy illustration
Новый бесплатный RooCline превосходит Cline v3.1? ! Быстрее, умнее и лучше вилка Cline! (Независимое программирование AI, порог 0)
boy illustration
Разработав более 10 проектов с помощью Cursor, я собрал 10 примеров и 60 подсказок.
boy illustration
Я потратил 72 часа на изучение курсорных агентов, и вот неоспоримые факты, которыми я должен поделиться!
boy illustration
Идеальная интеграция Cursor и DeepSeek API
boy illustration
DeepSeek V3 снижает затраты на обучение больших моделей
boy illustration
Артефакт, увеличивающий количество очков: на основе улучшения характеристик препятствия малым целям Yolov8 (SEAM, MultiSEAM).
boy illustration
DeepSeek V3 раскручивался уже три дня. Сегодня я попробовал самопровозглашенную модель «ChatGPT».
boy illustration
Open Devin — инженер-программист искусственного интеллекта с открытым исходным кодом, который меньше программирует и больше создает.
boy illustration
Эксклюзивное оригинальное улучшение YOLOv8: собственная разработка SPPF | SPPF сочетается с воспринимаемой большой сверткой ядра UniRepLK, а свертка с большим ядром + без расширения улучшает восприимчивое поле
boy illustration
Популярное и подробное объяснение DeepSeek-V3: от его появления до преимуществ и сравнения с GPT-4o.
boy illustration
9 основных словесных инструкций по доработке академических работ с помощью ChatGPT, эффективных и практичных, которые стоит собрать
boy illustration
Вызовите deepseek в vscode для реализации программирования с помощью искусственного интеллекта.
boy illustration
Познакомьтесь с принципами сверточных нейронных сетей (CNN) в одной статье (суперподробно)
boy illustration
50,3 тыс. звезд! Immich: автономное решение для резервного копирования фотографий и видео, которое экономит деньги и избавляет от беспокойства.
boy illustration
Cloud Native|Практика: установка Dashbaord для K8s, графика неплохая
boy illustration
Краткий обзор статьи — использование синтетических данных при обучении больших моделей и оптимизации производительности
boy illustration
MiniPerplx: новая поисковая система искусственного интеллекта с открытым исходным кодом, спонсируемая xAI и Vercel.
boy illustration
Конструкция сервиса Synology Drive сочетает проникновение в интрасеть и синхронизацию папок заметок Obsidian в облаке.
boy illustration
Центр конфигурации————Накос
boy illustration
Начинаем с нуля при разработке в облаке Copilot: начать разработку с минимальным использованием кода стало проще
boy illustration
[Серия Docker] Docker создает мультиплатформенные образы: практика архитектуры Arm64
boy illustration
Обновление новых возможностей coze | Я использовал coze для создания апплета помощника по исправлению домашних заданий по математике
boy illustration
Советы по развертыванию Nginx: практическое создание статических веб-сайтов на облачных серверах
boy illustration
Feiniu fnos использует Docker для развертывания личного блокнота Notepad
boy illustration
Сверточная нейронная сеть VGG реализует классификацию изображений Cifar10 — практический опыт Pytorch
boy illustration
Начало работы с EdgeonePages — новым недорогим решением для хостинга веб-сайтов
boy illustration
[Зона легкого облачного игрового сервера] Управление игровыми архивами
boy illustration
Развертывание SpringCloud-проекта на базе Docker и Docker-Compose