[HADOOP] 웹 응용 프로그램에서 맵리 듀스 작업을 실행
HADOOP웹 응용 프로그램에서 맵리 듀스 작업을 실행
비슷한 질문을 참조 : 다른 자바 프로그램에서 하둡 작업을 실행 과 간단한 자바 프로그램에서 맵리 듀스 작업을 호출
나도 하둡 원격 시스템에서 맵리 듀스 작업 jar 파일을 가지고, 나는 버튼 클릭 이벤트와, jar 파일을 불러와 작업을 실행합니다, 웹 응용 프로그램을 만드는거야. 이 웹 응용 프로그램은 별도의 시스템에서 실행되고 있습니다.
난 제공되는 단어 수 예를 들어 작업 만, 여전히 오류 메시지가 NoClassDefFoundError를 마주, 위의 글의 모두에서 제안을 시도했지만 작동 가져올 수 없습니다.
내가 부족 코드의 라인이 있습니까?
아래는 내가 가지고있는 코드는 다음과 같습니다
public void buttonClick(ClickEvent event) {
UserGroupInformation ugi;
try {
ugi = UserGroupInformation.createProxyUser("hadoopUser", UserGroupInformation.getLoginUser());
ugi.doAs(new PrivilegedExceptionAction<Object>(){
public Object run() throws Exception {
runHadoopJob();
return null;
}
});
} catch (IOException e) {
e.printStackTrace();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
private boolean runHadoopJob(){
try {
Configuration conf = new Configuration();
conf.set("fs.default.name", "hdfs://192.168.4.248:9000");
conf.set("mapred.job.tracker", "192.168.4.248:9001");
Job job = new Job(conf, "WordCount");
job.setMapperClass(TokenizerMapper.class);
job.setReducerClass(IntSumReducer.class);
job.setJarByClass(TokenizerMapper.class);
job.setOutputKeyClass(Text.class);
job.setOutputValueClass(IntWritable.class);
FileInputFormat.addInputPath(job, new Path("/flume/events/160114/*"));
Path out = new Path("output");
FileSystem fs = FileSystem.get(conf);
fs.delete(out, true);
FileOutputFormat.setOutputPath(job, out);
job.waitForCompletion(true);
System.out.println("Job Finished");
} catch (Exception e) {
e.printStackTrace();
}
return true;
}
하둡 내 hadoopUser가 속한 사용자 그룹이 내 하둡 코어 site.xml 파일에 다음을 추가
<property>
<name>hadoop.proxyuser.kohtianan.groups</name>
<value>hadoop</value>
<description></description>
</property>
<property>
<name>hadoop.proxyuser.kohtianan.hosts</name>
<value>*</value>
<description></description>
</property>
해결법
-
==============================
1.. * 항아리와 잭슨 코어-ASL - -.지도-감소 프로그램 클래스 경로에 존재하는 * jar 파일지도-감소 프로그램을 실행하려면, 당신은 잭슨 - 매퍼 - ASL이 필요합니다. 실제 jar 파일 이름은 사용중인 하둡 배포판과 버전에 따라 달라집니다.
. * 항아리와 잭슨 코어-ASL - -.지도-감소 프로그램 클래스 경로에 존재하는 * jar 파일지도-감소 프로그램을 실행하려면, 당신은 잭슨 - 매퍼 - ASL이 필요합니다. 실제 jar 파일 이름은 사용중인 하둡 배포판과 버전에 따라 달라집니다.
이 파일은 $ HADOOP_HOME / lib 폴더 아래에 존재한다. 이 문제를 해결하는 두 가지 방법 :
이 오류는 사용자 kohtianan는 하둡 DFS에 액세스 할 수 없음을 나타냅니다. 당신이 할 수있는 일은 단지 (HDFS 수퍼 유저에서) HDFS에 디렉토리를 만들고 kohtianan하는 그 디렉토리의 소유자를 변경할 수있다. 이 문제를 해결해야한다.
from https://stackoverflow.com/questions/21180120/run-mapreduce-job-from-a-web-application by cc-by-sa and MIT license
'HADOOP' 카테고리의 다른 글
[HADOOP] 계획에 대한 파일 시스템 없습니다 : HDFS (0) | 2019.10.11 |
---|---|
[HADOOP] 어떻게 하둡에서 자바에 대한 combineFileInputFormat를 사용 하는가? (0) | 2019.10.11 |
[HADOOP] 하둡 스트리밍 : 보류 상태에서 작업을 줄일 수는 "여지 작업을 줄일 수 없기 때문."라고 (0) | 2019.10.11 |
[HADOOP] 십일) HiveQL에 - 당신은 어떻게> 현재 날짜 '이벤트 날짜를받을 수 있나요? (0) | 2019.10.11 |
[HADOOP] 아파치 하둡에서 실행 helloworld.java (0) | 2019.10.11 |