|
@@ -24,6 +24,7 @@ from django.utils.translation import ugettext as _
|
|
|
from desktop.lib.exceptions_renderable import PopupException
|
|
from desktop.lib.exceptions_renderable import PopupException
|
|
|
from desktop.lib.rest.http_client import RestException
|
|
from desktop.lib.rest.http_client import RestException
|
|
|
|
|
|
|
|
|
|
+from hadoop.conf import YARN_CLUSTERS
|
|
|
from hadoop.cluster import rm_ha
|
|
from hadoop.cluster import rm_ha
|
|
|
|
|
|
|
|
import hadoop.yarn.history_server_api as history_server_api
|
|
import hadoop.yarn.history_server_api as history_server_api
|
|
@@ -68,10 +69,15 @@ class YarnApi(JobBrowserApi):
|
|
|
"""
|
|
"""
|
|
|
def __init__(self, user):
|
|
def __init__(self, user):
|
|
|
self.user = user
|
|
self.user = user
|
|
|
- self.resource_manager_api = resource_manager_api.get_resource_manager(user.username)
|
|
|
|
|
- self.mapreduce_api = mapreduce_api.get_mapreduce_api(user.username)
|
|
|
|
|
- self.history_server_api = history_server_api.get_history_server_api(user.username)
|
|
|
|
|
- self.spark_history_server_api = spark_history_server_api.get_history_server_api() # Spark HS does not support setuser
|
|
|
|
|
|
|
+ self.resource_manager_api = None
|
|
|
|
|
+ self.mapreduce_api = None
|
|
|
|
|
+ self.history_server_api = None
|
|
|
|
|
+ self.spark_history_server_api = None
|
|
|
|
|
+ if YARN_CLUSTERS.keys():
|
|
|
|
|
+ self.resource_manager_api = resource_manager_api.get_resource_manager(user.username)
|
|
|
|
|
+ self.mapreduce_api = mapreduce_api.get_mapreduce_api(user.username)
|
|
|
|
|
+ self.history_server_api = history_server_api.get_history_server_api(user.username)
|
|
|
|
|
+ self.spark_history_server_api = spark_history_server_api.get_history_server_api() # Spark HS does not support setuser
|
|
|
|
|
|
|
|
def get_job_link(self, job_id):
|
|
def get_job_link(self, job_id):
|
|
|
return self.get_job(job_id)
|
|
return self.get_job(job_id)
|
|
@@ -93,11 +99,14 @@ class YarnApi(JobBrowserApi):
|
|
|
if kwargs.get('time_value'):
|
|
if kwargs.get('time_value'):
|
|
|
filters['startedTimeBegin'] = self._get_started_time_begin(kwargs.get('time_value'), kwargs.get('time_unit'))
|
|
filters['startedTimeBegin'] = self._get_started_time_begin(kwargs.get('time_value'), kwargs.get('time_unit'))
|
|
|
|
|
|
|
|
- json = self.resource_manager_api.apps(**filters)
|
|
|
|
|
|
|
+ if self.resource_manager_api: # This happens when yarn is not configured, but we need jobbrowser for Impala
|
|
|
|
|
+ json = self.resource_manager_api.apps(**filters)
|
|
|
|
|
+ else:
|
|
|
|
|
+ json = {}
|
|
|
if type(json) == str and 'This is standby RM' in json:
|
|
if type(json) == str and 'This is standby RM' in json:
|
|
|
raise Exception(json)
|
|
raise Exception(json)
|
|
|
|
|
|
|
|
- if json['apps']:
|
|
|
|
|
|
|
+ if json.get('apps'):
|
|
|
jobs = [Application(app) for app in json['apps']['app']]
|
|
jobs = [Application(app) for app in json['apps']['app']]
|
|
|
else:
|
|
else:
|
|
|
return []
|
|
return []
|