티스토리 뷰

반응형

하둡 데이터를 다루다보면, 종종 다른팀의 하둡클러스터의 데이터를 복제해와야 할 경우가 존재한다.

이때,  네임노드와 호스트(혹은 ip) 와 포트를 이용해서 연결하는게 가능한데, 문제는 active, stand by 서버가 변경되면 연결이 안되는 상황이 발생되는 문제가 존재한다.

 

이런 문제를 해결하려면 nameserivce 정보를 hdfs-site.xml 에 추가해서 사용하는게 좋다. 근데, 1회성 작업이거나 연결가능여부를 테스트하기위해서 설정을 변경해보는건 꽤 번거로운 작업이 된다. 이럴때 사용할 수 있는 방법은 hadoop 명령어를 날릴때 -D 옵션을 이용해 해당 정보를 인자값으로 직접 넣어주는것이다.

 

2021.11.18 - [데이터처리/Hadoop] - [팁] 다른 hdfs 클러스터의 nameservice 등록하는 방법

 

[팁] 다른 hdfs 클러스터의 nameservice 등록하는 방법

개요 하둡클러스터가 부서별로 여러대를 운영할 경우 rpc-address 를 기반으로 접근하는 경우가 많다. 하지만 HA구성이 되어있다면 리더를 담당하는 서버가 변경되서 동작이 안되는 경우가 존재한

ngela.tistory.com

 

동적으로 네임서비스 추가해보기

hdfs-site.xml 을 수정하지 않고 다음과 같이 외부 클러스터의 정보를 인자값으로 넣어서 확인이 가능하다. (내 클러스터 설정은 변경안함)

인자값은 외부 클러스터의 client 환경변수 정보파일이 담긴 hdfs-site.xml 을 참고하여 구성하면된다. (외부 클러스터의 설정참고)

 

아래 예제는, 내 클러스터의 네임서비스는 my_service 이고, 다른 클러스터는 ext_service 라는 네임서비스를 추가하여 사용하고자 하는 예를 설명한것이다. 이런식으로 동작되는것이 확인된다면 distcp 로 클러스터간 데이터 복제도 가능하다.

hadoop fs -Ddfs.nameservices=my_service,ext_service \
    -Ddfs.client.failover.proxy.provider.ext_service=org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider \
    -Ddfs.ha.namenodes.ext_service=nn01,nn02 \
    -Ddfs.namenode.rpc-address.ext_service.nn01=hadoop-nn1.myhome.com:9820 \
    -Ddfs.namenode.rpc-address.ext_service.nn01=hadoop-nn2.myhome.com:9820 \
    -ls hdfs://ext_service/user/foo/data

 

 

물론, kerberos 인증이 들어간 하둡이라면 조금더 과정이 필요한데 이건 나중에 팁을 적어보도록 하겠다.

반응형
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/10   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
글 보관함