Ich habe Hadoop so eingerichtet, dass es als Linux-Dienst in einer AWS EC2-Instanz (bereitgestellt über eine Auto-Scaling-Gruppe) und als Spark-Benutzer ausgeführt wird. Beim Starten wird jedoch die folgende Meldung im systemctl-Status des Hadoop-Dienstes angezeigt, die besagt, dass keine Überprüfung des Masters möglich ist (ich verwende Consul für die automatische Erkennung von Master und Workern):
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.
Ich habe versucht, eine Konfigurationsdatei in mein Spark-SSH-Verzeichnis einzufügen, um die Hostüberprüfung zu ignorieren:
Host *.service.consul
StrictHostKeyChecking=no
UserKnownHostsFile=/dev/null
Was ich kenne funktioniert da wenn ich renne /opt/hadoop/sbin/start-all.sh
Als Spark-Benutzer wird sofort Folgendes autorisiert:
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
Und ich weiß, dass der Dienst beim Starten als Spark-Benutzer ausgeführt wird:
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
Ich benötige eine automatische Überprüfung für alle Instanzen in meiner Auto-Scaling-Gruppe, anstatt mich bei jeder einzelnen anmelden zu müssen. Weiß jemand, wie man das macht? Gibt es eine Einstellung in meinem Hadoop-Service, die ich vermisse?
Dies ist der Service:
[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
Lass es mich wissen, bitte. Vielen Dank.