티스토리 뷰

반응형

개요

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

 

클러스터가 다른 하둡의 nameservice 를 등록하려면 어떻게 해야할까?

다음과 같은 형식으로 hdfs-site.xml 를 수정하면 여러대의 nameservice 를 사용할 수 있게 된다.

 

NameService 설정 통합방법

보면 클러스터별 hdfs-site.xml 설정파일을 받아서, nameservice 관련된 설정을 묶어서 hdfs-site.xml 설정을 만들어 내면된다.

예를 들면 다음과 같다. 원래 xml 구조이지만 가독성이 좋게 properties 형으로 표현한것이니 참고하자.

다음과 같이 A, B 클러스터의 설정이 존재한다면 두개를 합친 설정을 만들면 된다.

 

- A클러스터 (nameservice1) : 내 클러스터

dfs.nameservices=nameservice1
dfs.client.failover.proxy.provider.nameservice1=org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider
dfs.ha.namenodes.nameservice1=namenode01,namenode02
dfs.namenode.rpc-address.nameservice1.namenode01=10.10.10.1:8020
dfs.namenode.rpc-address.nameservice1.namenode02=10.10.10.2:8020

- B클러스터 (nameservice2) : 딴 사람 클러스터

dfs.nameservices=nameservice2
dfs.ha.namenodes.nameservice2=nn1,nn2
dfs.client.failover.proxy.provider.nameservice2=org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider
dfs.namenode.rpc-address.nameservice2.nn1=20.20.0.1:8020
dfs.namenode.rpc-address.nameservice2.nn2=20.20.0.2:8020

- A+B클러스터 (nameservice1, nameservice2) - 통합해서 둘다 사용

dfs.nameservices=nameservice1,nameservice2

dfs.ha.namenodes.nameservice1=namenode01,namenode02
dfs.client.failover.proxy.provider.nameservice1=org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider
dfs.namenode.rpc-address.nameservice1.namenode01=10.10.10.1:8020
dfs.namenode.rpc-address.nameservice1.namenode02=10.10.10.2:8020

dfs.ha.namenodes.nameservice2=nn1,nn2
dfs.client.failover.proxy.provider.nameservice2=org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider
dfs.namenode.rpc-address.nameservice2.nn1=20.20.0.1:8020
dfs.namenode.rpc-address.nameservice2.nn2=20.20.0.2:8020

참고로 다시 말하지만 편의상 xml 이 아니라 properties 로 표현한거고 실제 설정은 xml 이니 참고하자.

딴 클러스터의 hdfs-site.xml 설정을 요청해도 되지만, 하둡에서 마스터 노드의 주소를 알면 다음과 같은 패턴으로도 정보를 알아낼수 있다.

http://하둡주소:50070/conf

 

마무리

이렇게 hdfs-site.xml 을 수정하면, 다음과 같이 외부 클러스터도 nameservice 이름으로 접근이 가능하다.

hadoop --config <수정한 하둡설정경로> distcp hdfs://nameservice1/경로 hdfs://nameservice2/경로

얏호!

반응형
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/12   »
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
글 보관함