В настоящее время я развернул кластер Hadoop в Kubernetes. Есть три датода (statefulset) и наменод для HDFS.
Я хочу получить доступ к данным в HDFS извне. Таким образом, я создал сервис с типом nodePort для экспорта наменода. Когда я попытался загрузить файл в HDFS, наменод перенаправил меня в датодан. Проблема в том, что домен перенаправления URL был доменом в Kubernetes, например hadoop-hdfs-dn-0.hadoop-hdfs-dn.hadoop.svc.cluster.local:50075
, к которому не удалось получить внешний доступ.
Первой моей мыслью было разрешение домена самим клиентом. Как
hadoop-hdfs-dn-0.hadoop-hdfs-dn.hadoop.svc.cluster.local:50075 => IP0:50075
hadoop-hdfs-dn-1.hadoop-hdfs-dn.hadoop.svc.cluster.local:50075 => IP1:50075
hadoop-hdfs-dn-2.hadoop-hdfs-dn.hadoop.svc.cluster.local:50075 => IP2:50075
Однако nodePort применяется ко всем узлам в кластере Kubernetes, поэтому все три указанных выше IP-адреса перейдут к одной и той же службе и могут перейти к неверному датоду.
Есть ли решение для этой ситуации?
Либо с точки зрения Hadoop или Kubernetes.
Например, принудить namenode перенаправить, как это?
hadoop-hdfs-dn-0.hadoop-hdfs-dn.hadoop.svc.cluster.local:50075 => <node IP>:50001
hadoop-hdfs-dn-1.hadoop-hdfs-dn.hadoop.svc.cluster.local:50075 => <node IP>:50002
hadoop-hdfs-dn-2.hadoop-hdfs-dn.hadoop.svc.cluster.local:50075 => <node IP>:50003
Чтобы я мог создать три службы для каждого модуля в наборе состояний.