NameNode HA for HDP2 does not set up Oozie correctly
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
Sahara |
Fix Released
|
High
|
Elise Gafford | ||
Kilo |
Fix Released
|
High
|
Elise Gafford |
Bug Description
The NameNode HA feature for HDP, described here:
http://
even if it is able to turn a cluster into NameNode HA configuration, does not change the configuration of Oozie, which still points to one of the two NameNodes. If it points to the standby node, job execution does not even start with a strange error:
2015-07-01 13:46:58.882 15549 WARNING sahara.
message
description This request requires HTTP authentication. )
and keystone reports
2015-07-01 13:47:46.604 31419 WARNING keystone.
2015-07-01 13:47:46.605 31419 WARNING keystone.
which would translate as that "User admin is unauthorized for tenant services".
The errors, which could be improved, seems to be a red herring. The real issue is that Oozie returns with an exception that:
2015-07-01 09:50:07,693 INFO BaseJobServlet:539 - USER[-] GROUP[-] TOKEN[-] APP[-] JOB[-] ACTION[-] AuthorizationEx
org.apache.
at org.apache.
[...]
This is the cluster configuration used, detailed by node groups and number of nodes for each of them:
* master-ha-common (1 node)
- AMBARI_SERVER
- HISTORYSERVER
- OOZIE_SERVER
- RESOURCEMANAGER
- SECONDARY_NAMENODE
* master-ha-nn (2 nodes)
- NAMENODE
- ZOOKEEPER_SERVER
- JOURNALNODE
* master-ha-node (1 node)
- ZOOKEEPER_SERVER
- JOURNALNODE
* worker-ha (3 nodes)
- DATANODE
- HDFS_CLIENT
- MAPREDUCE2_CLIENT
- NODEMANAGER
- OOZIE_CLIENT
- PIG
- YARN_CLIENT
- ZOOKEEPER_CLIENT
The configuration key hdfs.nnha is set to true, as described by the documentation.
I tested using a beta version of RHEL-OSP7, so basically Kilo, but the relevant code did not change in master:
openstack-
openstack-
openstack-
Changed in sahara: | |
status: | New → In Progress |
Changed in sahara: | |
milestone: | none → liberty-2 |
importance: | Undecided → High |
Changed in sahara: | |
status: | Fix Committed → Fix Released |
Changed in sahara: | |
milestone: | liberty-2 → 3.0.0 |
From http:// docs.hortonwork s.com/HDPDocume nts/HDP1/ HDP-1.3. 3/bk_using_ Ambari_ book/content/ install- ha_2x.html:
If you are using Oozie, you need to use the Nameservice URI instead of the NameNode URI in your workflow files. For example, where the Nameservice ID is mycluster:
<workflow-app xmlns=" uri:oozie: workflow: 0.2" name="map- reduce- wf">
<map- reduce>
<job-tracker> ${jobTracker} </job-tracker>
<name-node> hdfs:// mycluster< /name-node>
<start to="mr-node"/>
<action name="mr-node">
From http:// 172.24. 4.230:8080/ #/main/ hosts/my- hdp2ha- b090a511- master- ha-common- f2ebfbc6- 001.novalocal/ configs (which pulls from hdfs-site.xml):
dfs.nameservices: my-hdp2ha-b090a511
From your cluster definition (which should be valid): //172.24. 4.229:8020' , u'Web UI': | 172.24. 4.229:50070'}, u'JobFlow': | 172.24. 4.230:11000'}, | 172.24. 4.230:19888', u'History | 4.230:10020' }, u'Yarn': | 172.24. 4.230:8088', | 4.230:8050' }, | 172.24. 4.230:8080'}} |
| info | {u'HDFS': {u'NameNode': |
| | u'hdfs:
| | u'http://
| | {u'Oozie': u'http://
| | u'MapReduce2': {u'Web UI': |
| | u'http://
| | Server': u'172.24.
| | {u'Web UI': u'http://
| | u'ResourceManager': u'172.24.
| | u'Ambari Console': {u'Web UI': |
| | u'http://
From sahara/ sahara/ service/ edp/oozie/ engine. py: name_node_ uri(self. cluster)
job_parameters = {
"jobTracke r": rm_path,
"nameNode" : nn_path,
"user. name": hdfs_user,
oozie_ libpath_ key: oozie_libpath,
app_ path: "%s%s" % (nn_path, path_to_workflow),
"oozie. use.system. libpath" : "true"}
nn_path = self.get_
...
From sahara/ sahara/ plugins/ hdp/edp_ engine. py: node_uri( self, cluster): 'info'] ['HDFS' ]['NameNode' ]
def get_name_
return cluster[
It seems that we've succeeded in setting up a highly available cluster, but we're hard-coding ourselves into only using Oozie through one of the nodes, rather than using the nameservice; as the [info][ HDFS][NameNode] is hardcoded as of cluster creation time, and the feature did not build any sense of nameservice into Sahara.