2016-09-02 8 views
0

하둡 2.6.0에서 Giraph 1.1.0을 실행했습니다. mapredsite.xml은 giraph-site.xml의 내가 로컬 모드에서 작업을 실행하지 않으려는이로컬 모드에서 실행중인 Giraph 작업 항상

<configuration> 
<property> 
     <name>giraph.SplitMasterWorker</name> 
     <value>true</value> 
</property> 
<property> 
     <name>giraph.logLevel</name> 
     <value>error</value> 
</property> 
</configuration> 

처럼 보이는이

<configuration> 

<property> 
    <name>mapreduce.framework.name</name> 
    <value>yarn</value> 
    <description>The runtime framework for executing MapReduce jobs. Can be one of 
    local, classic or yarn.</description> 
</property> 

<property> 
<name>mapreduce.map.memory.mb</name> 
<value>4096</value> 
<name>mapreduce.reduce.memory.mb</name> 
<value>8192</value> 
</property> 
<property> 
<name>mapreduce.map.java.opts</name> 
<value>-Xmx3072m</value> 
<name>mapreduce.reduce.java.opts</name> 
<value>-Xmx6144m</value> 
</property> 
<property> 
<name>mapred.tasktracker.map.tasks.maximum</name> 
<value>4</value> 
</property> 
<property> 
<name>mapred.map.tasks</name> 
<value>4</value> 
</property> 
</configuration> 

것 같습니다. 환경 변수 MAPRED_HOME을 HADOOP_HOME으로 설정했습니다. 이것은 프로그램을 실행하는 명령입니다. 내가 그래프에서 정점의 betweenness의 중심성을 계산이 코드를 실행하면

hadoop jar myjar.jar hu.elte.inf.mbalassi.msc.giraph.betweenness.BetweennessComputation /user/$USER/inputbc/inputgraph.txt /user/$USER/outputBC 1.0 1 

, 나는 다음과 같은 예외를 얻을

Exception in thread "main" java.lang.IllegalArgumentException: checkLocalJobRunnerConfiguration: When using LocalJobRunner, you cannot run in split master/worker mode since there is only 1 task at a time! 
     at org.apache.giraph.job.GiraphJob.checkLocalJobRunnerConfiguration(GiraphJob.java:168) 
     at org.apache.giraph.job.GiraphJob.run(GiraphJob.java:236) 
     at hu.elte.inf.mbalassi.msc.giraph.betweenness.BetweennessComputation.runMain(BetweennessComputation.java:214) 
     at hu.elte.inf.mbalassi.msc.giraph.betweenness.BetweennessComputation.main(BetweennessComputation.java:218) 
     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
     at java.lang.reflect.Method.invoke(Method.java:497) 
     at org.apache.hadoop.util.RunJar.run(RunJar.java:221) 
     at org.apache.hadoop.util.RunJar.main(RunJar.java:136) 

내가 작업이 로컬 모드에서 실행되지 않도록해야합니까?

+0

예제 SimpleShortestPathsComputation을 실행하면 이상하게도이 예외가 발생하지 않습니다. 작업이 로컬 모드에서 실행되지 않습니다. –

답변

-1

당신이 사용할 수있는 노드에서 마스터 분할 이후 인 경우 : 사실 giraph.SplitMasterWorker = -ca

사용할 수있는 노동자의 양을 지정하려면 :

-w #

wher e "#"는 사용하려는 근로자의 수입니다.

+0

내 giraph-site.xml에 giraph.SplitMasterWorker가 이미 true로 설정되어 있습니다. 근로자 수와 관련하여 명령의 네 번째 매개 변수는 실제로이 경우 1 인 작업자 수를 지정합니다. –

+0

이 답변은 질문과 관련이 없습니다. OP에는 구성 파일에서만 언급 한 정확한 구성이 이미 있습니다. 근로자 수의 명세가 잘못되었습니다. 다음 코드를 참조하십시오. https://github.com/mbalassi/msc-thesis/blob/master/src/main/java/hu/elte/inf/mbalassi/msc/giraph/betweenness/BetweennessComputation.java –

0

LocalJobRunner의 구성 검사가 실패한 스택 추적에서 우리는 로컬 모델에서 실행한다고 가정하기 때문에 다소 오도 된 것입니다. 이미 책임 설정 옵션 인 : giraph.SplitMasterWorker을 발견했지만 귀하의 경우 너는 true으로 설정했다. 그러나 마지막 매개 변수가 1 인 명령 줄에서 단일 작업자 만 사용하도록 지정합니다. 따라서 프레임 워크는 반드시 로컬 모드에서 실행해야한다고 결정합니다. 클러스터에서 실행되고 있지만

  • 설정 false-giraph.SplitMasterWorker : 해결책으로 두 가지 옵션이 있습니다.
  • 마지막 매개 변수를 명령 줄 호출로 변경하여 작업자 수를 늘립니다.

    하둡 항아리 myjar.jar hu.elte.inf.mbalassi.msc.giraph.betweenness.BetweennessComputation /user/$USER/inputbc/inputgraph.txt/사용자/사용자 $/outputBC 1.0 4

로컬 모드 관련 문제에 대한 자세한 내용은 my other answer at SO (Apache Giraph master/worker mode)도 참조하십시오.

+0

시도했을 때 작업자 수를 4 명으로 늘리려면 다음 예외가 발생합니다. ** _ LocalJobRunner를 사용할 때 한 번에 하나의 작업만으로 작업자가 하나만 있어야합니다! _ ** –

+0

예제 SimpleShortestPathsComputation을 실행하면 이상하게도 이 예외. 작업이 로컬 모드에서 실행되지 않습니다. –

1

나는 며칠 전에이 문제를 만났습니다. 다행히도이 문제를 해결했습니다.

mapred-site.xml 구성 파일을 수정하고 'mapreduce.framework.name'속성의 값이 'yarn'이되고 'mapreduce.jobtracker.address'속성이 'yarn'인 속성을 추가하십시오. if 없기.

mapred-site.XML은 다음과 같습니다

<configuration> 
    <property> 
    <name>mapreduce.framework.name</name> 
    <value>yarn</value> 
    </property> 
    <property> 
    <name>mapreduce.jobtracker.address</name> 
    <value>yarn</value> 
    </property> 
</configuration> 

다시 시작 하둡을 mapred-site.xml.Then이 프로그램을 실행 이상 1 'giraph의 값으로'-w '이후 값을 설정 수정 한 후. SplitMasterWorker '를'true '로 설정하십시오. 아마도 작동 할 것입니다.

이러한 등록 정보는 단일 노드 실행을 위해 설계되었으며 노드 클러스터에서 실행될 때 으로 변경해야합니다. 이러한 상황에서 jobtracker는 NodeManager 데몬 (Hadoop 슬레이브)을 실행할 컴퓨터 중 하나를 가리켜 야합니다. 프레임 워크는 이 'yarn'으로 변경되어야합니다.