복붙노트

[HADOOP] HDFS에 대한 원격 액세스는 Kubernets에 있습니다.

HADOOP

HDFS에 대한 원격 액세스는 Kubernets에 있습니다.

나는 minikube (지금은)와 나중에 DEV kubernetes 클러스터에 HDFS를 설치하려고 시도하고 있으므로 Spark와 함께 사용할 수 있습니다. Spark을 내 컴퓨터에서 로컬로 실행하여 개발 중에 디버그 모드로 실행할 수 있으므로 K8에서 내 HDFS에 액세스 할 수 있어야합니다.

이미 하나의 namenode 배치와 datanode statefulset (3 replicas)을 설정했으며 클러스터 내에서 HDFS를 사용하고있을 때 제대로 작동합니다. 나는 datanodes에 대한 헤드리스 서비스와 namenode에 대한 cluster-ip 서비스를 사용하고 있습니다.

문제는 hdfs를 노출하려고 할 때 시작됩니다. 나는 그것을 위해 입구를 사용하려고 생각했지만 클러스터의 포트 80을 외부로 노출시키고 클러스터 내의 다른 서비스로 경로를 매핑합니다. 이것은 내가 찾고있는 것이 아닙니다. 내가 아는 한 내 로컬 스파크 작업 (또는 hdfs 클라이언트)은 각 데이터 블록의 주소로 응답하는 namenode와 대화합니다. 이 주소는 172.17.0.x : 50010과 같지만 물론 내 로컬 컴퓨터에서는 볼 수 없습니다.

이 일을하는 방법이 있습니까? 미리 감사드립니다.

해결법

  1. ==============================

    1.나는이 문제가 dev 환경에서 돌아가는 것에 관한 것이라는 것을 알고 있지만, HDFS는 K8에서 매우 많은 작업을 진행하고 있으므로, (필자는이 글을 쓰면서) 프로덕션 환경에서 실행하지 않을 것입니다. 다음과 같은 이유로 컨테이너 오케스트레이션 시스템에서 작업하는 것은 매우 까다로운 작업입니다.

    나는이 문제가 dev 환경에서 돌아가는 것에 관한 것이라는 것을 알고 있지만, HDFS는 K8에서 매우 많은 작업을 진행하고 있으므로, (필자는이 글을 쓰면서) 프로덕션 환경에서 실행하지 않을 것입니다. 다음과 같은 이유로 컨테이너 오케스트레이션 시스템에서 작업하는 것은 매우 까다로운 작업입니다.

    DC / OS를 보면 플랫폼에서 작동하도록 만들 수 있으므로 지침을 얻을 수 있습니다.

    K8에서는 기본적으로 모든 네임 노드 포트와 모든 데이터 노드 포트에 대한 서비스를 생성해야합니다. 고객은 모든 이름 노드와 데이터 노드를 읽고 쓸 수 있어야합니다. 또한 일부 포트는 레이어 4 포트 (TCP) (예 : namenode의 IPC 포트 8020 및 데이터 노드의 50020)이기 때문에 Ingress를 통과 할 수 없습니다.

    희망이 도움이됩니다!

  2. from https://stackoverflow.com/questions/53133913/remote-access-to-hdfs-on-kubernetes by cc-by-sa and MIT license