Канал проекта 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
Углубленный анализ переполнения памяти CUDA: OutOfMemoryError: CUDA не хватает памяти. Попыталась выделить 3,21 Ги Б (GPU 0; всего 8,00 Ги Б).
boy illustration
[Решено] ошибка установки conda. Среда решения: не удалось выполнить первоначальное зависание. Повторная попытка с помощью файла (графическое руководство).
boy illustration
Прочитайте нейросетевую модель Трансформера в одной статье
boy illustration
.ART Теплые зимние предложения уже открыты
boy illustration
Сравнительная таблица описания кодов ошибок Amap
boy illustration
Уведомление о последних правилах Points Mall в декабре 2022 года.
boy illustration
Даже новички могут быстро приступить к работе с легким сервером приложений.
boy illustration
Взгляд на RSAC 2024|Защита конфиденциальности в эпоху больших моделей
boy illustration
Вы используете ИИ каждый день и до сих пор не знаете, как ИИ дает обратную связь? Одна статья для понимания реализации в коде Python общих функций потерь генеративных моделей + анализ принципов расчета.
boy illustration
Используйте (внутренний) почтовый ящик для образовательных учреждений, чтобы использовать Microsoft Family Bucket (1T дискового пространства на одном диске и версию Office 365 для образовательных учреждений)
boy illustration
Руководство по началу работы с оперативным проектом (7) Практическое сочетание оперативного письма — оперативного письма на основе интеллектуальной системы вопросов и ответов службы поддержки клиентов
boy illustration
[docker] Версия сервера «Чтение 3» — создайте свою собственную программу чтения веб-текста
boy illustration
Обзор Cloud-init и этапы создания в рамках PVE
boy illustration
Корпоративные пользователи используют пакет регистрационных ресурсов для регистрации ICP для веб-сайта и активации оплаты WeChat H5 (с кодом платежного узла версии API V3)
boy illustration
Подробное объяснение таких показателей производительности с высоким уровнем параллелизма, как QPS, TPS, RT и пропускная способность.
boy illustration
Удачи в конкурсе Python Essay Challenge, станьте первым, кто испытает новую функцию сообщества [Запускать блоки кода онлайн] и выиграйте множество изысканных подарков!
boy illustration
[Техническая посадка травы] Кровавая рвота и отделка позволяют вам необычным образом ощипывать гусиные перья! Не распространяйте информацию! ! !
boy illustration
[Официальное ограниченное по времени мероприятие] Сейчас ноябрь, напишите и получите приз
boy illustration
Прочтите это в одной статье: Учебник для няни по созданию сервера Huanshou Parlu на базе CVM-сервера.
boy illustration
Cloud Native | Что такое CRD (настраиваемые определения ресурсов) в K8s?
boy illustration
Как использовать Cloudflare CDN для настройки узла (CF самостоятельно выбирает IP) Гонконг, Китай/Азия узел/сводка и рекомендации внутреннего высокоскоростного IP-сегмента
boy illustration
Дополнительные правила вознаграждения амбассадоров акции в марте 2023 г.
boy illustration
Можно ли открыть частный сервер Phantom Beast Palu одним щелчком мыши? Супер простой урок для начинающих! (Прилагается метод обновления сервера)
boy illustration
[Играйте с Phantom Beast Palu] Обновите игровой сервер Phantom Beast Pallu одним щелчком мыши
boy illustration
Maotouhu делится: последний доступный внутри страны адрес склада исходного образа Docker 2024 года (обновлено 1 декабря)
boy illustration
Кодирование Base64 в MultipartFile
boy illustration
5 точек расширения SpringBoot, супер практично!
boy illustration
Глубокое понимание сопоставления индексов Elasticsearch.
boy illustration
15 рекомендуемых платформ разработки с нулевым кодом корпоративного уровня. Всегда найдется та, которая вам понравится.
boy illustration
Аннотация EasyExcel позволяет экспортировать с сохранением двух десятичных знаков.