복붙노트

[HADOOP] 어떻게 매퍼 하둡에서 시스템 환경 변수를 설정하는 방법?

HADOOP

어떻게 매퍼 하둡에서 시스템 환경 변수를 설정하는 방법?

라인 아래의 문제는 해결하지만 또 다른 문제에 직면하고있다.

나는이 일을하고있다 :

DistributedCache.createSymlink(job.getConfiguration()); 
DistributedCache.addCacheFile(new URI   
("hdfs:/user/hadoop/harsh/libnative1.so"),conf.getConfiguration()); 

그리고 매퍼 :

System.loadLibrary("libnative1.so");

(또한 시도 System.loadLibrary를 ( "libnative1"); System.loadLibrary를 ( "native1");

그러나 나는이 오류가 무엇입니까 :

java.lang.UnsatisfiedLinkError: no libnative1.so in java.library.path

나는 내가 무엇에 java.library.path를 설정해야 완전히 우둔입니다 .. 나는 / 홈으로 설정 시도하고 모든 분산 캐시에서 / 가정 /하지만 여전히 작동하지 않았다에 .SO 복사 :(

어떤 제안 / 솔루션하세요?

IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII

나는 매퍼가 실행중인 시스템의 시스템 환경 변수를 (특히, LD_LIBRARY_PATH) 설정하려는.

나는 시도했다 :

Runtime run = Runtime.getRuntime();
Process pr=run.exec("export LD_LIBRARY_PATH=/usr/local/:$LD_LIBRARY_PATH");

그러나 IOException이 발생합니다.

나는 또한에 대해 알고

JobConf.MAPRED_MAP_TASK_ENV

하지만 작업 및 구성 대신 JobConf을 가지고 하둡 버전 0.20.2을 사용하고 있습니다.

나는 그러한 변수를 찾을 수없는 나는,이 또한하지 하둡 특정 환경 변수하지만, 시스템 환경 변수입니다.

모든 솔루션 / 제안? 미리 감사드립니다 ..

해결법

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

    1.왜 클러스터의 모든 노드에서이 변수를 수출 해달라고?

    왜 클러스터의 모든 노드에서이 변수를 수출 해달라고?

    작업을 제출하면서 어쨌든, 다음과 같이 구성 클래스를 사용

    Configuration conf = new Configuration();
    conf.set("mapred.map.child.env",<string value>);
    Job job = new Job(conf);
    

    값의 형식은 K1 = V2 = V1을, K2이고

  2. from https://stackoverflow.com/questions/10246301/how-to-set-system-environment-variable-from-mapper-hadoop by cc-by-sa and MIT license