автор | Дата | Погода |
---|---|---|
Юань Гонгзи | 2019-12-19 (четверг) | облачно, небольшой дождь |
Чем меньше ты знаешь, тем меньше ты не знаешь
Если у вас нет лайков друзей, вы не можете улучшать и сражаться с монстрами
1. Сплетни
Говорят, что я тянул ее несколько дней на этой неделе и не доделал, но узнал, что вчера вечером вышла новая версия. . .
Kafka Она — бренд кофе, а. . неправильный.她
Первоначально разработанная LinkedIn, это распределенная платформа для обмена сообщениями и потоковой передачи. (Это также должно быть зарегистрировано в очереди задержки для чтения исходного кода...)
Кроме того, по сравнению с RocketMQ, ее развертывание относительно простое, здесь меньше понимания, кто в доме хозяин, нужно заботиться только о том, где запустить несколько нод, а за остальные мы проголосуем внутренне.
Лоб. . . Кстати, для его использования Кафке также нужна девушка-мужчина, его зовут ZooKeeper. Официальный пакет поставляется с ZooKeeper, вы можете выбрать пакет или установить его самостоятельно.
2. Загрузите установочный пакет
Официальный адрес:kafka.apache.org/downloads
Загрузите последнюю версию программного обеспечения: kafka_2.13-2.4.0.tgz (используйте более позднюю версию Scala)
3. Проверка/подготовка системной среды
- Среда Java jdk1.8 или выше
- Пример использования операционной системы Centos7
- Промежуточное ПО ZooKeeper
В-четвертых, установите Zookeeper
Если приглашенный сотрудник выбирает официальный пакет, см.официальная документация, второй шаг описывается следующим образом:
bin/zookeeper-server-start.sh config/zookeeper.properties
Если вы очень индивидуальны и хотите заказать самостоятельно, пожалуйста, обратитесь кРазвертывание Zookeeperэто меню.
И если вы полны, пожалуйста, не обращайте внимания на ерунду выше. . .
5. Одиночная машина
В этой главе в основном описывается развертывание Kafka на одном компьютере и одном узле.
1. Создайте эксклюзивного пользователя (вы можете пропустить этот шаг и использовать пользователя root напрямую или, если хотите)
Справочная статья по созданию пользователей Linux
2. Выберите каталог установки (поместите инструментальное программное обеспечение в папку /soft или как хотите)
распаковать
[root@hadoop-master /soft]# tar -xvzf kafka_2.13-2.4.0.tgz
[root@hadoop-master /soft]# chown -R hadoop:hadoop kafka_2.13-2.4.0
Создавайте программные ссылки для облегчения последующих обновлений программного обеспечения или переключения между несколькими версиями.
[root@hadoop-master /soft]# ln -s kafka_2.13-2.4.0 kafka
3. Установите переменные среды
Добавьте следующее в конец файла
[root@hadoop-master /soft]# vi /etc/profile
export KAFKA_HOME=/soft/kafka
export PATH=$PATH:$KAFKA_HOME/bin
执行保存: Esc :wq
[root@hadoop-master /soft]# source /etc/profile
4. Изменить конфигурацию - начальный этап
- Файл конфигурации config/server.properties. Найдите в файле следующее содержимое, просмотрите и измените его.
# 高能提醒使用hadoop用户
[root@hadoop-master /soft]# su - hadoop
[hadoop@hadoop-master ~]$ mkdir -p ~/kafka/config
[hadoop@hadoop-master ~]$ cp /soft/kafka/config/server.properties ~/kafka/config/server.properties
[hadoop@hadoop-master ~]$ vi ~/kafka/config/server.properties
# broker的唯一标识,自然数
broker.id=0
# 监听信息,默认端口9092。PLAINTEXT://本机IP地址或域名:9092
listeners=PLAINTEXT://hadoop-master:9092
# 消息日志路径
log.dirs=/home/hadoop/kafka/data
# zookeeper连接信息。多个zookeeper用英文逗号分隔,可以用hostname或者ip地址+端口号方式填写。
zookeeper.connect=hadoop-master:2181,hadoop-master2:2181,hadoop-dn1:2181
# 是否自动创建topic,默认为true
# auto.create.topics.enable=false
执行保存: Esc :wq
-
параметры JVM
В bin/kafka-server-start.sh по умолчанию установлено значение 1G, которое можно настроить по мере необходимости.
[hadoop@hadoop-master ~]$ cp /soft/kafka/bin/kafka-server-start.sh /soft/kafka/bin/kafka-server-start.sh.bak
[hadoop@hadoop-master ~]$ vi /soft/kafka/bin/kafka-server-start.sh
# 找到此行修改:export KAFKA_HEAP_OPTS="-Xmx1G -Xms1G"
export KAFKA_HEAP_OPTS="-Xmx256m -Xms256m"
执行保存: Esc :wq
-
путь журнала
В bin/kafka-run-class.sh определите переменную среды LOG_DIR.
[hadoop@hadoop-master ~]$ cp /soft/kafka/bin/kafka-run-class.sh /soft/kafka/bin/kafka-run-class.sh.bak
[hadoop@hadoop-master ~]$ vi /soft/kafka/bin/kafka-run-class.sh
# 参考行limitations under the License.
# 下面增加变量,后面可以在自启动服务中定义环境变量来替换。
LOG_DIR="/home/hadoop/kafka/logs"
执行保存: Esc :wq
5. Запустите тест
Используйте пользователя Hadoop. Поскольку команда добавлена в переменную окружения, ее можно выполнять в любом каталоге.
[hadoop@hadoop-master /soft/kafka]$ kafka-server-start.sh /home/hadoop/kafka/config/server.properties
# 后台启动:kafka-server-start.sh -daemon /home/hadoop/kafka/config/server.properties
[hadoop@hadoop-master /soft/kafka]$ jps
58301 Kafka
Другие связанные команды:
Остановить службу: kafka-server-stop.sh
6. Кластер
Кластер Kafka, в основном, обратите внимание на два аспекта. Один — это файл конфигурации (server.properties) для каждого узла, а другой — путь, по которому хранятся файлы журналов. Но если вы не заботитесь о логах, этот аспект можно игнорировать. На этот раз мы все же увеличиваем сложность и разворачиваем 3 сервисных узла на одной машине. Давай, Сан Нянь. . .
Почему вы всегда получаете одну единицу, когда вы тренируетесь, слишком хлопотно иметь несколько единиц. Во-вторых, потому что такая информация все еще относительно редка в Интернете. Если вам нужно более одного приглашенного офицера, после прочтения этой статьи вы можете применить свою изобретательность и получить его самостоятельно. Тогда это не имеет ко мне никакого отношения, разве ты не изумительна~
- Добавьте три новых файла server.properties и поместите их в папку кластера следующим образом:
# 高能提醒使用hadoop用户
[hadoop@hadoop-master /soft/kafka]$ mkdir -p ~/kafka/cluster
[hadoop@hadoop-master /soft/kafka]$ cp /soft/kafka/config/server.properties ~/kafka/cluster/server-1.properties
[hadoop@hadoop-master /soft/kafka]$ cp /soft/kafka/config/server.properties ~/kafka/cluster/server-2.properties
[hadoop@hadoop-master /soft/kafka]$ cp /soft/kafka/config/server.properties ~/kafka/cluster/server-3.properties
-
Отредактируйте три файла конфигурации, в основном измените содержимое broker.id, listeners, log.dirs.
server-1.properties
[hadoop@hadoop-master /soft/kafka]$ vi ~/kafka/cluster/server-1.properties
broker.id=1
listeners=PLAINTEXT://hadoop-master:9093
log.dirs=/home/hadoop/kafka/cluster/server-1/data
zookeeper.connect=hadoop-master:2181,hadoop-master2:2181,hadoop-dn1:2181
执行保存: Esc :wq
сервер-2.properties
[hadoop@hadoop-master /soft/kafka]$ vi ~/kafka/cluster/server-2.properties
broker.id=2
listeners=PLAINTEXT://hadoop-master:9094
log.dirs=/home/hadoop/kafka/cluster/server-2/data
zookeeper.connect=hadoop-master:2181,hadoop-master2:2181,hadoop-dn1:2181
执行保存: Esc :wq
сервер-3.свойства
[hadoop@hadoop-master /soft/kafka]$ vi ~/kafka/cluster/server-3.properties
broker.id=3
listeners=PLAINTEXT://hadoop-master:9095
log.dirs=/home/hadoop/kafka/cluster/server-3/data
zookeeper.connect=hadoop-master:2181,hadoop-master2:2181,hadoop-dn1:2181
执行保存: Esc :wq
- Добавлен скрипт kafka-server-stop-single.sh для поддержки остановки одной службы. Ключ в том, чтобы заменить grep java на $1.properties
[hadoop@hadoop-master /soft/kafka]$ cp /soft/kafka/bin/kafka-server-stop.sh ~/kafka/kafka-server-stop-single.sh
[hadoop@hadoop-master /soft/kafka]$ vi ~/kafka/kafka-server-stop-single.sh
# 覆盖原命令
PIDS=$(ps ax | grep -i 'kafka\.Kafka' | grep $1.properties | grep -v grep | awk '{print $1}')
执行保存: Esc :wq
- Добавьте три новые службы запуска, в основном обратите внимание на переменные среды журнала и соответствующий файл server.properties.
кафка-1.сервис
# 高能提醒使用root用户
[root@hadoop-master /soft/kafka]# vi /etc/systemd/system/kafka-1.service
[Unit]
Description=kafka
After=syslog.target network.target
[Service]
Type=forking
User=hadoop
Group=hadoop
Environment=JAVA_HOME=/soft/jdk
Environment=LOG_DIR=/home/hadoop/kafka/cluster/server-1/logs
ExecStart=/soft/kafka/bin/kafka-server-start.sh -daemon /home/hadoop/kafka/cluster/server-1.properties
ExecStop=/home/hadoop/kafka/kafka-server-stop-single.sh server-1
[Install]
WantedBy=multi-user.target
执行保存: Esc :wq
[root@hadoop-master /soft/kafka]# chmod 755 /etc/systemd/system/kafka-1.service
[root@hadoop-master /soft/kafka]# systemctl enable kafka-1
kafka-2.service
# 只摘取不一样的配置
Environment=JAVA_HOME=/soft/jdk
Environment=LOG_DIR=/home/hadoop/kafka/cluster/server-2/logs
ExecStart=/soft/kafka/bin/kafka-server-start.sh -daemon /home/hadoop/kafka/cluster/server-2.properties
ExecStop=/home/hadoop/kafka/kafka-server-stop-single.sh server-2
执行保存: Esc :wq
[root@hadoop-master /soft/kafka]# chmod 755 /etc/systemd/system/kafka-2.service
[root@hadoop-master /soft/kafka]# systemctl enable kafka-2
kafka-3.service
Environment=JAVA_HOME=/soft/jdk
Environment=LOG_DIR=/home/hadoop/kafka/cluster/server-3/logs
ExecStart=/soft/kafka/bin/kafka-server-start.sh -daemon /home/hadoop/kafka/cluster/server-3.properties
ExecStop=/home/hadoop/kafka/kafka-server-stop-single.sh server-3
执行保存: Esc :wq
[root@hadoop-master /soft/kafka]# chmod 755 /etc/systemd/system/kafka-3.service
[root@hadoop-master /soft/kafka]# systemctl enable kafka-3
- Попробуйте запустить и остановить эти три службы. Если вы не хотите играть, попробуйте снова отключить сервис.
- спать. . .
Семь, служба самозапуска
использовать пользователя root
[root@hadoop-master /soft/kafka]# vi /etc/systemd/system/kafka.service
# 或者 vi /lib/systemd/system/kafka.service
# 文件开始
[Unit]
Description=kafka
After=syslog.target network.target
[Service]
Type=forking
User=hadoop
Group=hadoop
# 增加环境变量,或者在bin/kafka-run-class.sh中添加。不加的话,实验证明会报错
Environment=JAVA_HOME=/soft/jdk
Environment=LOG_DIR=/home/hadoop/kafka/logs
ExecStart=/soft/kafka/bin/kafka-server-start.sh -daemon /home/hadoop/kafka/config/server.properties
ExecStop=/soft/kafka/bin/kafka-server-stop.sh
# 此项会导致停止进程后,又自动启动服务,很霸道
#Restart=on-failure
[Install]
WantedBy=multi-user.target
执行保存: Esc :wq
[root@hadoop-master /soft/kafka]# chmod 755 /etc/systemd/system/kafka.service
[root@hadoop-master /soft/kafka]# systemctl enable kafka
[root@hadoop-master /soft/kafka]# service kafka start
Другие связанные команды:
- Остановка: сервис кафка стоп
- Посмотреть статус службы: статус службы kafka
- После изменения содержимого конфигурации службы вступает в силу перезагрузка: systemctl daemon-reload
- Отключить службу загрузки (удалять ли служебный файл после запрета, вы свободны): systemctl отключить kafka
- Проверяем запущена ли служба: systemctl is-enabled kafka
- Просмотрите список запущенных служб: systemctl list-unit-files --type=service | grep включен
Восемь, яма шанса встретиться
1. Процесс Кафки нельзя остановить
Я не сталкивался с этой проблемой во время развертывания, вот решение воротил онлайн, на случай, если кто-то из партнеров столкнется с этим.
Отредактируйте скрипт bin/kafka-server-stop.sh, решение: найдите идентификатор процесса Kafka из jps
# 参考行PIDS=$(ps ax | grep -i 'kafka\.Kafka' | grep java | grep -v grep | awk '{print $1}')
# 注释掉参考行,并增加以下内容代替,'kafka.Kafka'过滤字符可根据实际情况进行调整
PIDS=$(jps -lm | grep -i 'kafka.Kafka' | awk '{print $1}')
# 或者下面的命令
#PIDS=$(ps ax | grep -i 'Kafka' | grep java | grep -v grep | awk '{print $1}')
执行保存: Esc :wq
приложение:
- Официальная документация:
- Извлечение данных: