Tôi đang cố gắng thu thập một số thông tin từ trình theo dõi công việc. Đối với người mới bắt đầu, tôi muốn bắt đầu với việc chạy thông tin công việc như id công việc hoặc tên công việc v.v. Nhưng đã bị kẹt, đây là những gì tôi có (in ra id công việc cho công việc hiện đang chạy):Lẫn lộn về công việc theo dõi công việc của người bán api
public static void main(String[] args) throws IOException {
Configuration conf = HBaseConfiguration.create();
conf.set("hbase.zookeeper.quorum", "zk1.myhost,zk2.myhost,zk3.myhost");
conf.set("hbase.zookeeper.property.clientPort", "2181");
InetSocketAddress jobtracker = new InetSocketAddress("jobtracker.mapredhost.myhost", 8021);
JobClient jobClient = new JobClient(jobtracker, conf);
JobStatus[] jobs = jobClient.jobsToComplete();
for (int i = 0; i < jobs.length; i++) {
JobStatus js = jobs[i];
if (js.getRunState() == JobStatus.RUNNING) {
JobID jobId = js.getJobID();
System.out.println(jobId);
}
}
}
Điều này trên hoạt động như sự quyến rũ khi cố gắng hiển thị id công việc, nhưng bây giờ tôi cũng muốn hiển thị tên công việc. Vì vậy, tôi đã thêm dòng này sau id công việc in ấn:
System.out.println(jobClient.getJob(jobId).getJobName());
tôi nhận được ngoại lệ này:
Exception in thread "main" java.lang.NullPointerException
at org.apache.hadoop.mapred.JobClient$NetworkedJob.<init>(JobClient.java:226)
at org.apache.hadoop.mapred.JobClient.getJob(JobClient.java:1080)
at org.apache.test.JobTracker.main(JobTracker.java:28)
jobClient
không phải là null
. Tôi biết điều này bởi vì tôi đã thử với kiểm tra nếu không có tuyên bố, nhưng điều này jobClient.getJob(jobId)
là null
. Tôi làm gì sai ở đây?
Theo API tôi nên ok,
Đầu tiên có được RunningJob
từ jobClient hơn một khi bạn đã chạy công việc sau đó nhận được đó là tên http://hadoop.apache.org/mapreduce/docs/r0.21.0/api/org/apache/hadoop/mapred/RunningJob.html#getJobName()
Bất cứ ai đã làm một cái gì đó như thế này trước đây chưa? Tôi có thể sử dụng jsoup để nhận được yêu cầu GET về thông tin này nhưng tôi nghĩ đây là cách tốt hơn để có được thông tin này.
Câu hỏi cập nhật ở đây là hadoop/HBase phụ thuộc của tôi:
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-client</artifactId>
<version>0.23.1-mr1-cdh4.0.0b2</version>
</dependency>
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-core</artifactId>
<version>0.23.1-mr1-cdh4.0.0b2</version>
<exclusions>
<exclusion>
<groupId>org.mortbay.jetty</groupId>
<artifactId>jetty</artifactId>
</exclusion>
<exclusion>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.apache.hbase</groupId>
<artifactId>hbase</artifactId>
<version>0.92.1-cdh4b2-SNAPSHOT</version>
</dependency>
Bounty cập nhật:
Dưới đây là hàng nhập khẩu của tôi:
import java.io.IOException;
import java.net.InetSocketAddress;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.HBaseConfiguration;
import org.apache.hadoop.mapred.JobClient;
import org.apache.hadoop.mapred.JobID;
import org.apache.hadoop.mapred.JobStatus;
Dưới đây là sản phẩm của System.out.println(jobId)
:
job_201207031810_1603
Chỉ có một công việc hiện đang chạy.
Phiên bản nào bạn đang sử dụng? 0,21 như trong liên kết tài liệu của bạn? –
hi Thomas là quan sát tốt tôi sẽ cập nhật câu hỏi của tôi –
Vì vậy, cụm của bạn chạy trên 0,23,1 từ CDH4 như phụ thuộc của bạn? –