Я настроил Hadoop для запуска в качестве службы linux в экземпляре AWS EC2 (развернутого через группу автоматического масштабирования) и запускаю его как пользователь-искровщик. Однако, когда я запускаю его, я получаю следующее сообщение в статусе systemctl службы Hadoop с жалобой на то, что он не может проверить по мастеру (я использую Consul для автоматического обнаружения мастера и работников):
Jan 11 23:40:23 ip-172-21-1-19.us-west-2.compute.internal hadoop[12095]: Stopping namenodes on [spark-master.service.consul]
Jan 11 23:40:23 ip-172-21-1-19.us-west-2.compute.internal hadoop[12095]: spark-master.service.consul: Host key verification failed.
Jan 11 23:40:23 ip-172-21-1-19.us-west-2.compute.internal hadoop[12095]: spark-worker.service.consul: Host key verification failed.
Jan 11 23:40:24 ip-172-21-1-19.us-west-2.compute.internal hadoop[12095]: Stopping secondary namenodes [0.0.0.0]
Jan 11 23:40:24 ip-172-21-1-19.us-west-2.compute.internal hadoop[12095]: 0.0.0.0: Host key verification failed.
Jan 11 23:40:25 ip-172-21-1-19.us-west-2.compute.internal hadoop[12095]: stopping yarn daemons
Jan 11 23:40:25 ip-172-21-1-19.us-west-2.compute.internal hadoop[12095]: no resourcemanager to stop
Jan 11 23:40:25 ip-172-21-1-19.us-west-2.compute.internal hadoop[12095]: spark-worker.service.consul: Host key verification failed.
Jan 11 23:40:25 ip-172-21-1-19.us-west-2.compute.internal hadoop[12095]: no proxyserver to stop
Jan 11 23:40:25 ip-172-21-1-19.us-west-2.compute.internal systemd[1]: Started Hadoop.
Я попытался добавить файл конфигурации в мой каталог spark .ssh, чтобы игнорировать проверку хоста:
Host *.service.consul
StrictHostKeyChecking=no
UserKnownHostsFile=/dev/null
Я знаю, что это работает, потому что, если я запускаю /opt/hadoop/sbin/start-all.sh
как пользователь spark, он немедленно авторизуется:
spark-master.service.consul: Warning: Permanently added 'spark-master.service.consul,172.21.3.106' (ECDSA) to the list of known hosts.
spark-master.service.consul: starting namenode, logging to /var/log/hadoop/hadoop-spark-namenode-ip-172-21-3-106.us-west-2.compute.internal.out
spark-worker.service.consul: Warning: Permanently added 'spark-worker.service.consul,172.21.1.19' (ECDSA) to the list of known hosts.
spark-worker.service.consul: datanode running as process 7173. Stop it first.
Starting secondary namenodes [0.0.0.0]
0.0.0.0: Warning: Permanently added '0.0.0.0' (ECDSA) to the list of known hosts.
0.0.0.0: starting secondarynamenode, logging to /var/log/hadoop/hadoop-spark-secondarynamenode-ip-172-21-1-19.us-west-2.compute.internal.out
starting yarn daemons
starting resourcemanager, logging to /opt/hadoop/logs/yarn-spark-resourcemanager-ip-172-21-1-19.us-west-2.compute.internal.out
spark-worker.service.consul: Warning: Permanently added 'spark-worker.service.consul,172.21.1.19' (ECDSA) to the list of known hosts.
spark-worker.service.consul: starting nodemanager, logging to /opt/hadoop/logs/yarn-spark-nodemanager-ip-172-21-1-19.us-west-2.compute.internal.out
И я точно знаю, что когда я запускаю сервис, он работает как мой искровой пользователь:
spark 13987 1 0 23:44 ? 00:00:00 bash /opt/hadoop/sbin/start-all.sh
spark 14000 13987 0 23:44 ? 00:00:00 bash /opt/hadoop/sbin/start-dfs.sh --config /opt/hadoop/etc/hadoop
spark 14074 14000 0 23:44 ? 00:00:00 bash /opt/hadoop/sbin/slaves.sh --config /opt/hadoop/etc/hadoop cd /opt/hadoop ; /opt/hadoop/sbin/hadoop-daemon.sh --config /opt/hadoop/etc/hadoop --script /opt/hadoop/sbin/hdfs start namenode
spark 14099 14074 0 23:44 ? 00:00:00 ssh spark-master.service.consul cd /opt/hadoop ; /opt/hadoop/sbin/hadoop-daemon.sh --config /opt/hadoop/etc/hadoop --script /opt/hadoop/sbin/hdfs start namenode
Мне нужна автоматическая проверка для всех экземпляров, развернутых в моей группе автоматического масштабирования, а не для входа в каждый из них. Так кто-нибудь знает, как это сделать? Есть ли какие-то настройки в моем сервисе Hadoop, которые мне не хватает?
Это сервис:
[root@ip-172-21-1-19 ~]# cat /usr/lib/systemd/system/hadoop.service
[Unit]
Description=Hadoop
After=syslog.target network.target remote-fs.target nss-lookup.target network-online.target spark-worker.service
Requires=network-online.target spark-worker.service
[Service]
User=spark
Group=spark
Type=forking
PermissionsStartOnly=true
ExecStartPre=/usr/bin/install -o spark -g spark -d /var/run/hadoop
ExecStart=/opt/hadoop/sbin/start-all.sh
ExecStop=/opt/hadoop/sbin/stop-all.sh
WorkingDirectory=/opt/hadoop
TimeoutStartSec=2min
Restart=on-failure
SyslogIdentifier=hadoop
StandardOutput=journal
StandardError=journal
LimitNOFILE=infinity
LimitMEMLOCK=infinity
LimitNPROC=infinity
LimitAS=infinity
SuccessExitStatus=143
RestartSec=20
[Install]
WantedBy=multi-user.target
Пожалуйста, дайте мне знать. Благодарю.