我想開發一個網站,允許公司內部的分析人員運行Hadoop作業(從一組定義的作業中進行選擇)並查看作業的狀態\進度。通過Web界面跟蹤Hadoop作業狀態? (將Hadoop暴露給公司內部客戶端)
有沒有一種簡單的方法可以通過Ruby \ Python執行此操作(獲取運行作業狀態等)? 如何將您的Hadoop集羣公開給內部客戶端?
我想開發一個網站,允許公司內部的分析人員運行Hadoop作業(從一組定義的作業中進行選擇)並查看作業的狀態\進度。通過Web界面跟蹤Hadoop作業狀態? (將Hadoop暴露給公司內部客戶端)
有沒有一種簡單的方法可以通過Ruby \ Python執行此操作(獲取運行作業狀態等)? 如何將您的Hadoop集羣公開給內部客戶端?
我找到了一種獲取JobTracker上的工作信息的方法。這是代碼:
Configuration conf = new Configuration();
conf.set("mapred.job.tracker", "URL");
JobClient client = new JobClient(new JobConf(conf));
JobStatus[] jobStatuses = client.getAllJobs();
for (JobStatus jobStatus : jobStatuses) {
long lastTaskEndTime = 0L;
TaskReport[] mapReports = client.getMapTaskReports(jobStatus.getJobID());
for (TaskReport r : mapReports) {
if (lastTaskEndTime < r.getFinishTime()) {
lastTaskEndTime = r.getFinishTime();
}
}
TaskReport[] reduceReports = client.getReduceTaskReports(jobStatus.getJobID());
for (TaskReport r : reduceReports) {
if (lastTaskEndTime < r.getFinishTime()) {
lastTaskEndTime = r.getFinishTime();
}
}
client.getSetupTaskReports(jobStatus.getJobID());
client.getCleanupTaskReports(jobStatus.getJobID());
System.out.println("JobID: " + jobStatus.getJobID().toString() +
", username: " + jobStatus.getUsername() +
", startTime: " + jobStatus.getStartTime() +
", endTime: " + lastTaskEndTime +
", Durration: " + (lastTaskEndTime - jobStatus.getStartTime()));
}
也許一個好的開始就是看看Cloudera Destktop。它提供了一個Web界面來啓用羣集管理和作業開發任務。它的免費下載。
這裏沒有像hadoop一樣的東西。構建這個功能應該是微不足道的。其中一些可通過JobTracker的頁面獲得,有些則必須自行構建。
自從Cloudera的Hadoop發行版本'beta 2'以來,您幾乎可以毫不費力地使用Hadoop User Experience (HUE)
,它之前稱爲Cloudera Desktop。
但是自從這個版本發展起來以後,它配備了工作設計師,配置單元界面等等。您應該確定在決定構建自己的應用程序之前檢查一下。