2016-12-16 6 views
0

YARN을 사용하는 동안 Zeppelin에서 Scalding을 사용하려고합니다. 난 here 문서의 단계를 따라 인터프리터를 빌드하고 클래스 패스 재정의를 설정했다. 로컬 모드로 실행하면 코드가 제대로 실행됩니다. 내가 YARN을 통해 내 클러스터에서 실행하지만 때 내 작업은 실패 :YARN에서 관리되는 Zeppelin에서 Scalding하는 ClassNotFoundException

Error: java.lang.ClassNotFoundException: cascading.CascadingException 

또는

Error: java.lang.ClassNotFoundException: cascading.tuple.TupleException 

무엇을 나에게조차 낯선 내가 제플린에 가서 실행할 수입니다 :

import cascading.tuple.TupleException 
import cascading.CascadingException 

둘 다 그 클래스를 찾는 데 아무런 문제가없는 것처럼 보입니다. 타입 화 된 파이프에 데이터를로드하고 ClassNotFoundException을 가져 오는 것과 같이 실제로 찌르기 (YARN)를 사용하려고 할 때만 사용됩니다. 디버깅 방법이나 해결 방법에 대한 아이디어가 있습니까?

답변

1

캐스 케이 딩 항아리가 YARN 클러스터에 배포되지 않은 것처럼 보입니다. 스켈링 인터프리터의 args.string 속성에 "zeppelin/interpreter/scalding/*"을 추가하십시오.

여기에 우리가 사용하는 args.string입니다 :

-libjars/홈/비행선 사용자/비행선/통역/끓는//홈/비행선 사용자/배포-번들-201,608,111,417/libs와/ - Dscalding.reducer.estimator.classes = com.twitter.scalding.reducer_estimation.InputSizeReducerEstimator -Delephantbird.use.combine.input.format = 사실 -Delephantbird.combine.split.size = 134,217,728 --hdfs --repl

tmpjars YARN 클러스터에 분산 된 jar를 포함합니다. 아래 명령을 사용하여 내용을 볼 수 있습니다.

%scalding 
mode.asInstanceOf[Hdfs].conf.get("tmpjars").split(",").foreach(println)