AWS EMR을 통한 HDFS HTTP 액세스(WebHDFS 편)

4744 단어 AWShadooptech
https://zenn.dev/notrogue/articles/bea1dc777e9419
계속하다

컨디션


emr-6.2.0
us-east-1

차리다


보안 그룹

  • Name 노드의 9870 ingress
  • 데이터 노드의 9864 ingress
  • 서류


    HDFS에 파일을 적절히 저장
    # マスタノードから
    echo hoge > hoge
    hadoop fs -put hoge /user/hadoop/hoge
    

    평가판(ls)


    자주 노드 방문


    curl -i -L  -H "Content-Type: application/octet-stream" "http://[マスターパブリック DNS]:9870/webhdfs/v1/user/hadoop/hoge?user.name=hadoop&op=OPEN"
    
    HTTP/1.1 307 Temporary Redirect
    Date: Sat, 17 Apr 2021 09:37:28 GMT
    Cache-Control: no-cache
    Expires: Sat, 17 Apr 2021 09:37:28 GMT
    Date: Sat, 17 Apr 2021 09:37:28 GMT
    Pragma: no-cache
    X-Content-Type-Options: nosniff
    X-FRAME-OPTIONS: SAMEORIGIN
    X-XSS-Protection: 1; mode=block
    Set-Cookie: hadoop.auth="u=hadoop&p=hadoop&t=simple&e=1618688248799&s=fQnBDkvI20pwGBmv5kdWY4V5FpN79P3qZSUhNT250kU="; Path=/; HttpOnly
    Location: http://ip-172-31-0-218.ec2.internal:9864/webhdfs/v1/user/hadoop/hoge?op=OPEN&user.name=hadoop&namenoderpcaddress=ip-172-31-0-137.ec2.internal:8020&offset=0
    Content-Type: application/octet-stream
    Content-Length: 0
    
    HTTP/1.1 200 OK
    Access-Control-Allow-Methods: GET
    Access-Control-Allow-Origin: *
    Content-Type: application/octet-stream
    Connection: close
    Content-Length: 5
    
    hoge
    
    참고로 주공용 DNS 이름이 아니라 127..0.1을 지정하면 오류가 발생합니다.

    VPC 외부에서 액세스


    방금 명령이 "http://ip-172-31-0-218.ec2.internal"로 리디렉션되었습니다.
    따라서 VPC 외부에서 동일한 명령을 수행하더라도 목적지 이름을 리디렉션하는 데 문제가 발생하여 오류가 발생할 수 있습니다.
    curl -i -L  -H "Content-Type: application/octet-stream" "http://マスターパブリック DNS]:9870/webhdfs/v1/user/hadoop/hoge?user.name=hadoop&op=OPEN"
    
    HTTP/1.1 307 Temporary Redirect
    Date: Sat, 17 Apr 2021 09:37:19 GMT
    Cache-Control: no-cache
    Expires: Sat, 17 Apr 2021 09:37:19 GMT
    Date: Sat, 17 Apr 2021 09:37:19 GMT
    Pragma: no-cache
    X-Content-Type-Options: nosniff
    X-FRAME-OPTIONS: SAMEORIGIN
    X-XSS-Protection: 1; mode=block
    Set-Cookie: hadoop.auth="u=hadoop&p=hadoop&t=simple&e=1618688239198&s=wOnS1DCO1eo6JJ5sRHkMlJd+/DF7oGnCi9iIa3H5MT4="; Path=/; HttpOnly
    Location: http://ip-172-31-0-218.ec2.internal:9864/webhdfs/v1/user/hadoop/hoge?op=OPEN&user.name=hadoop&namenoderpcaddress=ip-172-31-0-137.ec2.internal:8020&offset=0
    Content-Type: application/octet-stream
    Content-Length: 0
    
    curl: (6) Could not resolve host: ip-172-31-0-218.ec2.internal
    
    목적지를 지정한 데이터 노드에 대응하는 공용 DNS 이름curl로 바꾸면 실행할 수 있습니다.
    curl -i -L  -H "Content-Type: application/octet-stream" "http://[DataNodeにのパブリックDNS名]:9864/webhdfs/v1/user/hadoop/hoge?user.name=hadoop&op=OPEN&namenoderpcaddress=[リダイレクト指示に含まれる値]:8020&offset=0"
    
    HTTP/1.1 200 OK
    Access-Control-Allow-Methods: GET
    Access-Control-Allow-Origin: *
    Content-Type: application/octet-stream
    Connection: close
    Content-Length: 5
    
    hoge
    

    VPC에서 액세스


    VPC 내 실례(※)에서 사유 DNS 명칭을 해결할 수 있기 때문에 주 노드와 같은curl을 실행할 수 있습니다.
    ※ EMR 클러스터 이외에도 가능
    curl -i -L  -H "Content-Type: application/octet-stream" "http://[マスターパブリック DNS]:9870/webhdfs/v1/user/hadoop/hoge?user.name=hadoop&op=OPEN"
    HTTP/1.1 307 Temporary Redirect
    Date: Sat, 17 Apr 2021 09:47:44 GMT
    Cache-Control: no-cache
    Expires: Sat, 17 Apr 2021 09:47:44 GMT
    Date: Sat, 17 Apr 2021 09:47:44 GMT
    Pragma: no-cache
    X-Content-Type-Options: nosniff
    X-FRAME-OPTIONS: SAMEORIGIN
    X-XSS-Protection: 1; mode=block
    Set-Cookie: hadoop.auth="u=hadoop&p=hadoop&t=simple&e=1618688864675&s=R5/v/BXIQiwWOrs6XdzUenixck3o2He284wTXO6IqRE="; Path=/; HttpOnly
    Location: http://ip-172-31-0-218.ec2.internal:9864/webhdfs/v1/user/hadoop/hoge?op=OPEN&user.name=hadoop&namenoderpcaddress=ip-172-31-0-137.ec2.internal:8020&offset=0
    Content-Type: application/octet-stream
    Content-Length: 0
    
    HTTP/1.1 200 OK
    Access-Control-Allow-Methods: GET
    Access-Control-Allow-Origin: *
    Content-Type: application/octet-stream
    Connection: close
    Content-Length: 5
    
    hoge
    

    HttpFS 와 비교할 때 어떤 것이 좋습니까?


    위에서 설명한 내용일 경우 HttpFS에 비해 번거로울 뿐입니다.
    그러나 웹HDFS에서는 NameNode를 통한 데이터 교환 없이 NameNode가 병목 현상에 빠지기 어려워 데이터 양과 요구가 많을 때 우위를 점할 수 있다.

    VPC 외부에서 리디렉션


    조사 중입니다.
  • WebHDFS를 통해 공용 DNS 이름 반환
  • AWS API 등을 통해 사유 DNS명을 공용 DNS명 등으로 전환하는 노력
  • 뭐 그런 거지?

    좋은 웹페이지 즐겨찾기