2017-03-21 3 views
0

*.tar.gz 파일을 APPLICATION 레벨 가시성 아래의 실 노드에 배포하려고합니다. 디렉토리 다음 내 하둡 노드에서non-jar 파일을 실 노드에 배포하는 방법은 무엇입니까?

는 노드 관리자에 의해 생성됩니다

/tmp/hadoop-vikram/nm-local-dir/usercache/vikram/appcache/application_1490062699498_0005/container_1490062699498_0005_01_000003/ 

내가

/tmp/hadoop-vikram/nm-local-dir/usercache/vikram/appcache/application_1490062699498_0005/filecache/10/test.tar.gz 

에서 예상 파일을 참조 할하지만 응용 프로그램 코드에서 test.tar.gz의 경로를 검색하고 싶습니다.

난 당신이 컨테이너의 위치에 의존 옳은 일을하고 있다고 생각하지 않습니다

URL input = getClass().getClassLoader().getResource("jar-file-name"); 
+0

¿ 왜이 tar를 nfs에 저장하지 않으시겠습니까? – jedijs

+0

@jedijs 원사가 수행하는 파일 배포를 활용하고 싶습니다 – user3401493

답변

0

다음 사용하여 파일을 항아리하는 경로를 찾을 수 있습니다. 소규모 콜렉션의 경우, distributed cache을 사용하여 모든 태스크 노드에서 자원을 사용 가능하게 만들 것을 권장합니다. 파일을 모든 컨테이너 노드에 자동으로 업로드하여 모든 맵퍼 - 축소기에 사용할 수 있도록합니다.

파일 크기가 클 경우 실제 작업이 수행되는 모든 노드에 데이터가 복사되므로 큰 공간을 차지해야합니다. 이를 향상 시키려면 가용성을 높이기 위해 더 큰 복제 계수 (예 : 클러스터의 노드 수에 따라 다름) 10을 사용하여 파일 시스템에 파일을 직접 넣을 수 있습니다. 그런 다음 작업에서 분산 캐시 접근 방식에 비해 공간을 크게 절약 할 수있는 직접 다운로드 할 수 있지만 비용은 비 로컬 읽기에서 대역폭이됩니다. 최적의 복제 횟수를 찾기 위해이 문제를 해결할 수 있습니다.

+0

답장을 보내 주신 Alex 께 감사드립니다. 내 파일의 크기는 크지 않고 100KB 정도입니다. LocalResource 구현을 사용하여 이미 컨테이너 노드에 파일을 배포하고 있습니다. 하지만 어떻게 든이 파일이 누락 된 컨테이너에 있습니다. – user3401493

+0

@ user3401493 아마 거기에 뭔가 빠져 있습니다. 이것은 올바른 방법입니다. 컨테이너에 직접 액세스하는 대신 LocalResource를 사용하여 문제의 원인을 찾아보십시오. – Alex