[HADOOP] 분산 캐시
HADOOP분산 캐시
opensuse Linux에서 hadoop 19로 작업하고 있는데, 내 시스템 자체에서 hadoop 코드를 실행하는 클러스터를 사용하고 있지 않습니다. 분산 캐시에 퍼팅에 대한 표준 기술을 따르고 있지만 분산 캐시에서 파일을 다시 액세스하는 대신 여러 번 파일의 내용을 배열에 저장했습니다. 이 파일에서 추출하는 부분은 configure () 함수에서 수행됩니다. 이름을 사용하려고하면 nullPointerException이 발생합니다. 다음은 코드의 일부입니다.
.
..part of main()
..
DistributedCache.addCacheFile(new URI("/home/hmobile/hadoop-0.19.2/output/part-00000"), conf2);
DistributedCache.addCacheFile(new URI("/home/hmobile/hadoop-0.19.2/output/part-00001"), conf2);
.
.part of mapper
public void configure(JobConf conf2)
{
String wrd; String line; try {
localFiles = DistributedCache.getLocalCacheFiles(conf2);
System.out.println(localFiles[0].getName());// error NULLPOINTEREXCEPTION
} catch (IOException ex) {
Logger.getLogger(blur2.class.getName()).log(Level.SEVERE, null, ex);
}
for(Path f:localFiles)// error NULLPOINTEREXCEPTION
{
if(!f.getName().endsWith("crc"))
{
BufferedReader br = null;
try {
br = new BufferedReader(new FileReader(f.toString()));
그런 처리는 configure ()에서 수행되지 않을 수 있습니까?
해결법
-
==============================
1.로컬 작업 주자 (mapred.job.tracker = local)를 사용하고 있거나 의사 배포 모드 (즉, mapred.job.tracker = localhost : 8021 또는 = mynode.mydomain)에서 실행 중인지 여부에 따라 다릅니다. com : 8021). 분산 캐시는 로컬 모드에서는 작동하지 않으며 의사 분배 및 완전 분산 모드에서만 작동합니다.
로컬 작업 주자 (mapred.job.tracker = local)를 사용하고 있거나 의사 배포 모드 (즉, mapred.job.tracker = localhost : 8021 또는 = mynode.mydomain)에서 실행 중인지 여부에 따라 다릅니다. com : 8021). 분산 캐시는 로컬 모드에서는 작동하지 않으며 의사 분배 및 완전 분산 모드에서만 작동합니다.
configure ()에서 분산 캐시를 사용하는 것이 좋습니다.
from https://stackoverflow.com/questions/3210222/distributed-cache by cc-by-sa and MIT license
'HADOOP' 카테고리의 다른 글
[HADOOP] Hadoop - 처리 단계를 이해하는 데 필요한 도움말 (0) | 2019.07.03 |
---|---|
[HADOOP] 돼지에 JSON 배열로드하기 (0) | 2019.07.02 |
[HADOOP] HBase에서 Hive로 테이블을 옮기는 방법은 무엇입니까? (0) | 2019.07.02 |
[HADOOP] 날짜 별 Java MapReduce 계산 (0) | 2019.07.02 |
[HADOOP] spark - java 힙 공간 문제 - ExecutorLostFailure - 상태 143으로 종료 된 컨테이너 (0) | 2019.07.02 |