복붙노트

[HADOOP] Hadoop 클라이언트에서 Hadoop 서버로 연결할 수 없습니다.

HADOOP

Hadoop 클라이언트에서 Hadoop 서버로 연결할 수 없습니다.

Hadoop 서버는 Kubernetes에 있습니다. 또한 Hadoop 클라이언트는 외부 네트워크에 있습니다. 그래서 kubernetes-service를 사용하여 Hadoop 서버를 사용하려고합니다. 그러나 hadoop fs -put은 Hadoop 클라이언트에서 작동하지 않습니다. 내가 아는 한 namenode는 datanode IP를 Hadoop 클라이언트에 제공합니다. 그렇다면 namenode는 어디에서 IP를 가져 옵니까?

해결법

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

    1.내 다른 대답을 확인할 수 있습니다. HDFS는 K8에서 아직 준비되지 않았습니다 (이 글을 쓰는 시점에서).

    내 다른 대답을 확인할 수 있습니다. HDFS는 K8에서 아직 준비되지 않았습니다 (이 글을 쓰는 시점에서).

    namenode는 클라이언트에게 데이터 노드의 IP 주소를 알려주고 아래와 같이 클러스터에 가입 할 때이를 인식합니다.

    K8의 문제는 각 데이터 노드를 서비스 또는 외부 IP로 노출해야하지만 namenode는 데이터 노드가 외부 세계에서 사용할 수없는 IP 주소로 표시된다는 것입니다. 또한 HDFS는 서비스 IP 사용을 강제 할 수있는 각 datanode 구성에 대한 게시 IP를 제공하지 않으므로 멋진 사용자 정의 네트워킹을 수행하거나 클라이언트가 podCidr에 있어야합니다 (어느 종류의 목적을 저지해야합니까? HDFS는 분산 파일 시스템 임).

  2. ==============================

    2.포드를 실행하는 IP 노드가 필요한 경우 ENV를 사용할 수 있습니다.

    포드를 실행하는 IP 노드가 필요한 경우 ENV를 사용할 수 있습니다.

    apiVersion: v1
    kind: Pod
    metadata:
      name: get-host-ip
    spec:
      containers:
        - name: test-container
          image: k8s.gcr.io/busybox
          command: [ "sh", "-c"]
          args:
          - while true; do
              printenv HOST_IP;
            done;
          env:
            - name: HOST_IP
              valueFrom:
                fieldRef:
                  fieldPath: status.hostIP
      restartPolicy: Never
    

    API 문서 : PodStatus v1 핵심

  3. from https://stackoverflow.com/questions/53156162/i-cant-get-through-to-hadoop-server-from-hadoop-client by cc-by-sa and MIT license