[HADOOP] Hadoop 작업에 클래스가 없습니다.
HADOOPHadoop 작업에 클래스가 없습니다.
DocumentDB에서 입력을 가져 오는 map reduce 작업이 있습니다. jar 파일을 내 소스 코드의 lib 디렉토리 아래에 추가했으며 작업을 실행할 때 사용자에게 -libjars도 추가했습니다. 하지만 여전히 jar 파일의 클래스에 대한 클래스 오류를 찾을 수 없습니다. 내 드라이버 프로그램의 일부입니다.
public class MapReduceDriver extends Configured implements Tool {
public static void main(String[] args) throws Exception {
int res = ToolRunner.run(new Configuration(), new MapReduceDriver(), args);
System.exit(res);
}
@Override
public int run(String[] args) throws Exception {
Configuration conf = this.getConf();
....
-libjars를 사용할 때 필요한 jar 파일을 한 번 로컬 드라이버에 넣고 hdfs에 넣었지만 둘 다 작동하지 않았습니다. -libjars가 작동하는지 어떻게 확인할 수 있습니까?
추신. 2 노드 HDInsight 클러스터 (Microsoft Azure에서 실행)를 사용하고 있습니다.
내가 얻는 오류 메시지는 다음과 같습니다.
Error: java.lang.RuntimeException: java.lang.ClassNotFoundException: Class com.microsoft.azure.documentdb.hadoop.DocumentDBInputFormat not found
at org.apache.hadoop.conf.Configuration.getClass(Configuration.java:1961)
at org.apache.hadoop.mapreduce.task.JobContextImpl.getInputFormatClass(JobContextImpl.java:174)
at org.apache.hadoop.mapred.MapTask.runNewMapper(MapTask.java:726)
at org.apache.hadoop.mapred.MapTask.run(MapTask.java:340)
at org.apache.hadoop.mapred.YarnChild$2.run(YarnChild.java:168)
at java.security.AccessController.doPrivileged(Native Method)
at javax.security.auth.Subject.doAs(Subject.java:415)
at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1594)
at org.apache.hadoop.mapred.YarnChild.main(YarnChild.java:163)
Caused by: java.lang.ClassNotFoundException: Class com.microsoft.azure.documentdb.hadoop.DocumentDBInputFormat not found
at org.apache.hadoop.conf.Configuration.getClassByName(Configuration.java:1867)
at org.apache.hadoop.conf.Configuration.getClass(Configuration.java:1959)
... 8 more
해결법
-
==============================
1.여기서 찾을 수있는 DocumentDB Hadoop connector jar를 언급했다고 가정합니다 : https://github.com/Azure/azure-documentdb-hadoop
여기서 찾을 수있는 DocumentDB Hadoop connector jar를 언급했다고 가정합니다 : https://github.com/Azure/azure-documentdb-hadoop
항아리에는 종속성이 없습니다. 의존성을 검색하거나 직접 다운로드하여 직접 빌드 경로에 포함시킬 수 있습니다.
종속성은 다음과 같습니다.
-
==============================
2.HDInsight는 libjars를 지원하지 않는 템플턴을 사용하기 때문에 사용할 수 없습니다. 템플턴 워드 프로세서
HDInsight는 libjars를 지원하지 않는 템플턴을 사용하기 때문에 사용할 수 없습니다. 템플턴 워드 프로세서
또한 PowerShell 스크립트를 사용하여 사용자 정의 HDInsight 클러스터를 구축하고 있다고 가정합니다. 의존성이있는 모든 jar를 다음으로 복사 할 수 있습니다. HADOOP_HOME + '\ share \ hadoop \ common \ lib 이것은 hadoop lib 폴더 일 것입니다.
또는 종속성 jar가 포함 된 경로를 변경하여 게시 된 powershell 스크립트를 직접 사용할 수 있습니다 (파란색 Blob에 jar 파일을 포함하고 경로를 바꾸기 만하면됩니다) 파워 쉘 스크립트
from https://stackoverflow.com/questions/30447465/class-not-found-in-hadoop-job by cc-by-sa and MIT license
'HADOOP' 카테고리의 다른 글
[HADOOP] pyspark 동적 컬럼 계산 (0) | 2019.07.04 |
---|---|
[HADOOP] cumulocity의 java 클라이언트가 이벤트를 수신하는 방법은 무엇입니까? (0) | 2019.07.04 |
[HADOOP] Macos Hadoop 3.1.1 - namenode를 시작하지 못했습니다. java.io.IOException : 행을 구문 분석 할 수 없습니다 : "파일 시스템 1024 블록 사용 가능 용량이 마운트 됨" (0) | 2019.07.04 |
[HADOOP] HDFS에 프로그램을 설치해야합니까? (0) | 2019.07.04 |
[HADOOP] 작업은 Cloudera 5.1 하에서 LocalJobRunner에서 계속 실행됩니다. (0) | 2019.07.04 |