티스토리 뷰
하둡 데이터를 다루다보면, 종종 다른팀의 하둡클러스터의 데이터를 복제해와야 할 경우가 존재한다.
이때, 네임노드와 호스트(혹은 ip) 와 포트를 이용해서 연결하는게 가능한데, 문제는 active, stand by 서버가 변경되면 연결이 안되는 상황이 발생되는 문제가 존재한다.
이런 문제를 해결하려면 nameserivce 정보를 hdfs-site.xml 에 추가해서 사용하는게 좋다. 근데, 1회성 작업이거나 연결가능여부를 테스트하기위해서 설정을 변경해보는건 꽤 번거로운 작업이 된다. 이럴때 사용할 수 있는 방법은 hadoop 명령어를 날릴때 -D 옵션을 이용해 해당 정보를 인자값으로 직접 넣어주는것이다.
2021.11.18 - [데이터처리/Hadoop] - [팁] 다른 hdfs 클러스터의 nameservice 등록하는 방법
동적으로 네임서비스 추가해보기
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 인증이 들어간 하둡이라면 조금더 과정이 필요한데 이건 나중에 팁을 적어보도록 하겠다.
'데이터처리 > Hadoop' 카테고리의 다른 글
[HDFS] 클러스터간 distcp 문제 해결방법 총정리 - kerberos 인증이 있다면? (0) | 2023.12.08 |
---|---|
[Hadoop] HDFS 파일생성 여부 체크방법 (loop 돌면서) (0) | 2023.05.23 |
[Hadoop] 커버로스 인증을 변경후 접근시 not allowed 오류 (0) | 2023.03.14 |
[하둡] Can't get Kerberos realm 오류 해결법 - krb5.conf 경로문제 (0) | 2023.03.08 |
[하둡] Server asks us to fall back to SIMPLE auth, but this client is configured to only allow secure connections 문제 해결하기 (0) | 2022.10.04 |