복붙노트

[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. ==============================

    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 ()에서 분산 캐시를 사용하는 것이 좋습니다.

  2. from https://stackoverflow.com/questions/3210222/distributed-cache by cc-by-sa and MIT license