2013-09-06 6 views
1

가상 배포 VM에 HBase 및 Hadoop이 의사 배포 모드로 실행됩니다. 몇 가지 간단한 MapReduce 코드를 수정하여 주어진 HBase 테이블 (Hbase MapReduce RowCounter 코드)의 행 수를 계산했습니다. 수정 된 코드를 jar 파일로 컴파일하고 VM으로 전송 한 다음 hadoop 명령 행을 통해 정상적으로 실행하면 모든 것이 잘됩니다. 그러나 내가 할 수 있기를 원하는 것은 내 Windows 컴퓨터의 자바 클라이언트 (hadoop 명령 줄 (예 : hadoop jar)를 실행하는 ssh 명령이 아닌 Java 코드)에서 실행하는 것입니다. Windows 측 (Java 클라이언트)에서 실행하려고하면 필요한 모든 연결이 VM에서 Hadoop 및 HBase로 이루어 지지만 Hadoop이 Mapper 클래스를 찾을 수없는 "classnotfoundexception"을 수신합니다.Java 클라이언트에서 원격으로 Hadoop 작업 실행

수동으로 jar 파일을 HDFS에 복사했으며 구성 옵션 (conf.set ("mapred.jar", "hdfs : ///RowCountTest.jar") 설정을 통해 Java 클라이언트를 해당 위치로 지정하려고했습니다. ;). 그러나 여전히 클래스를 찾을 수 없습니다 (항아리를 찾고 있는지 여부는 알 수 없음).

먼저 원격 클라이언트에서 작업을 실행할 때 Hadoop이 jar에 저장된 클래스 파일을 인식하기 위해 수행해야 할 작업을 알고 있습니까?

둘째, jar 파일을 미리로드하지 않고 작업과 함께 필요한 클래스 파일을 클러스터에 "전달"할 수있는 방법이 있는지 알고 있습니까?

+1

코드와 오류를 알려주십시오. – Tariq

답변

0

LocalFileSystem (HDFS가 아닌)의 위치에 jar 파일을 복사하고 hadoop-env.sh 파일의 HADOOP_CLASSPATH 변수를 동일하게 지정해야합니다.

hadoop-env.sh 파일을 변경 한 후 mapreduce 서비스를 다시 시작해야합니다. - JobTracker에 - TaskTracker

참고 : 맵리 듀스 작업이 HADOOP_CLASSPATH 변수에 지정된 위치에서 클래스 (항아리)를 찾습니다.

관련 문제