복붙노트

[HADOOP] 하둡 2.X에서 DistributedCache

HADOOP

하둡 2.X에서 DistributedCache

나는이 문제를 해결 일하는 사람들을 발견, 하둡에서 DistributedCache에서이 문제를 새로운 API를 2.x으로 가지고 있지만, 그것은 내 문제의 예를 해결하지 않습니다

내가 DistributedCache에서 데이터를 검색하는 것을 시도는 NullPointerException을 가지고 있기 때문에이 솔루션은 나와 함께 작동하지 않습니다

다음과 같이 내 구성은 다음과 같습니다

    public int run(String[] arg) throws Exception {
        Configuration conf = this.getConf();
        Job job= new Job(conf,"job Name");
        ...
        job.addCacheFile(new URI(arg[1]);
    protected void setup(Context context)
            throws IOException, InterruptedException {
        Configuration conf = context.getConfiguration();
        URI[] cacheFiles = context.getCacheFiles();
        BufferedReader dtardr = new BufferedReader(new FileReader(cacheFiles[0].toString()));

그것은이 NullPointerException이 발생 버퍼링 리더 context.getCacheFiles 때문에 happenning 작성을 개시 할 때 여기 (); 항상 NULL을 반환한다. 어떻게 (HDFS, 또는 로컬 파일 시스템)이 문제를 해결하기 위해, 어디는 캐시 파일이 저장됩니다

해결법

  1. ==============================

    1.당신은 하둡의 로컬 JobRunner를 사용하는 경우 (단일 자바 프로세스로, 모드를 비는 분산), 다음 로컬 데이터 디렉토리가 생성되지 않습니다; getLocalCacheFiles () 또는 getCacheFiles는 () 호출은 당신이 분산 또는 의사 분산 모드에서 작업을 실행하고 있는지 확인 results.Can의 빈 세트를 반환합니다.

    당신은 하둡의 로컬 JobRunner를 사용하는 경우 (단일 자바 프로세스로, 모드를 비는 분산), 다음 로컬 데이터 디렉토리가 생성되지 않습니다; getLocalCacheFiles () 또는 getCacheFiles는 () 호출은 당신이 분산 또는 의사 분산 모드에서 작업을 실행하고 있는지 확인 results.Can의 빈 세트를 반환합니다.

    하둡 프레임 작업은 작업의 각 작업의 로컬 작업 디렉토리에 분산 캐시에 설정 파일을 복사합니다. 각 작업자 시스템의 로컬 파일 시스템에 위치 캐시 된 모든 파일의 복사본이 있습니다. (그들은 mapred.local.dir의 하위 디렉토리에있을 것입니다.)

    당신은 DistributedCache에 대한 자세한 이해를 위해이 링크를 참조 할 수 있습니다.

  2. from https://stackoverflow.com/questions/20497968/distributedcache-in-hadoop-2-x by cc-by-sa and MIT license