2014-05-20 2 views
5

분산 캐시는 실제로 무엇을 의미합니까? 분산 캐시에 파일을 저장하면 모든 데이터 노드에서 사용할 수 있으므로 해당 데이터에 대한 노드 간 통신이 없거나 파일이 모든 노드의 메모리에 있음을 의미합니까? 그렇지 않다면 어떤 수단으로 전체 작업에 대한 메모리에 파일을 저장할 수 있습니까? UDF뿐만 아니라 map-reduce에도이 작업을 수행 할 수 있습니까?하둡의 분산 캐시에 대한 혼동

(특히 일부 구성 데이터가 있습니다. ?)

감사합니다. Dhruv Kapur.

답변

17

DistributedCache는 Map-Reduce 프레임 워크가 응용 프로그램에 필요한 파일을 캐시하기 위해 제공하는 기능입니다. 작업을 위해 파일을 캐싱하면 hadoop 프레임 워크는 작업을 매핑/축소하는 모든 데이터 노드 (메모리가 아닌 파일 시스템)에서 사용할 수있게합니다. 그런 다음 매퍼 또는 감속기 작업에서 로컬 파일로 캐시 파일에 액세스 할 수 있습니다. 이제 캐시 파일을 읽고 코드에서 일부 콜렉션 (예 : 배열, 해시 맵 등)을 채울 수 있습니다.

은 여전히 ​​당신이 어떤 질문이 있으면 알려주세요

https://hadoop.apache.org/docs/r2.2.0/api/org/apache/hadoop/filecache/DistributedCache.html를 참조하십시오.

UDF 코드에서 로컬 파일로 캐시 파일을 읽을 수 있습니다. JAVA API를 사용하여 파일을 읽은 후 모든 콜렉션을 채 웁니다 (메모리에 있음).

]을 참조 URL http://www.lichun.cc/blog/2013/06/use-a-lookup-hashmap-in-hive-script/

-Ashish

+0

안녕 답장을 보내 주셔서 감사합니다 ... 그래서 우리가 메모리에 분산 캐시에서 뭔가를 넣어 않는 경우 및 방법에 대한 자세한 걱정? Hive의 경우 UDF 내의 분산 캐시에서이 파일에 액세스해야합니다. 나는 어떻게 그것을 얻습니까? UDF 권한 내부에서 HDFS 파일을 읽지 않아야합니까? –

+0

게시물을 수정했습니다. 언급 된 URL을 참조하기 만하면됩니다. – Ashish

+0

그게 내가 정확히 찾고있는거야. 감사! UDF 내부의 맵이 한 번만 채워지는지 여부는 아직 조금 걱정됩니다. 이것을 지원하는 하이브 문서 또는이 동작을 확인할 수있는 방법이 있습니까? –