----------------------------------------------------------- This is an automatically generated e-mail. To reply, visit: https://reviews.apache.org/r/57410/#review168287 -----------------------------------------------------------
Ship it! Ship It! - Sebastian Toader On March 8, 2017, 5:08 a.m., Robert Levas wrote: > > ----------------------------------------------------------- > This is an automatically generated e-mail. To reply, visit: > https://reviews.apache.org/r/57410/ > ----------------------------------------------------------- > > (Updated March 8, 2017, 5:08 a.m.) > > > Review request for Ambari, Attila Magyar, bhuvnesh chaudhary, Balázs Bence > Sári, Eugene Chekanskiy, jun aoki, Laszlo Puskas, and Sebastian Toader. > > > Bugs: AMBARI-20349 > https://issues.apache.org/jira/browse/AMBARI-20349 > > > Repository: ambari > > > Description > ------- > > When SPNEGO authentication is enabled for Hadoop in a cluster where NN HA is > enabled, PXF Process alert fails with the following errors in the > ambari-agent.log file > > ``` > ERROR 2017-03-07 18:03:58,417 jmx.py:44 - Getting jmx metrics from NN failed. > URL: > http://c6401.ambari.apache.org:50070/jmx?qry=Hadoop:service=NameNode,name=FSNamesy > stem > Traceback (most recent call last): > File > "/usr/lib/python2.6/site-packages/resource_management/libraries/functions/jmx.py", > line 41, in get_value_from_jmx > data_dict = json.loads(data) > File "/usr/lib/python2.6/site-packages/ambari_simplejson/__init__.py", line > 307, in loads > return _default_decoder.decode(s) > File "/usr/lib/python2.6/site-packages/ambari_simplejson/decoder.py", line > 335, in decode > obj, end = self.raw_decode(s, idx=_w(s, 0).end()) > File "/usr/lib/python2.6/site-packages/ambari_simplejson/decoder.py", line > 353, in raw_decode > raise ValueError("No JSON object could be decoded") > ValueError: No JSON object could be decoded > INFO 2017-03-07 18:04:02,769 logger.py:71 - call['ambari-sudo.sh su hdfs -l > -s /bin/bash -c 'curl --negotiate -u : -s > '"'"'http://c6402.ambari.apache.org:50070/jmx?qry=Hadoop:service=NameNode,name=FSNamesystem'"'"' > 1>/tmp/tmphTXg76 2>/tmp/tmp5bm2nM''] {'quiet': False} > INFO 2017-03-07 18:04:02,797 logger.py:71 - call returned (0, '') > ERROR 2017-03-07 18:04:02,798 jmx.py:44 - Getting jmx metrics from NN failed. > URL: > http://c6402.ambari.apache.org:50070/jmx?qry=Hadoop:service=NameNode,name=FSNamesystem > Traceback (most recent call last): > File > "/usr/lib/python2.6/site-packages/resource_management/libraries/functions/jmx.py", > line 41, in get_value_from_jmx > data_dict = json.loads(data) > File "/usr/lib/python2.6/site-packages/ambari_simplejson/__init__.py", line > 307, in loads > return _default_decoder.decode(s) > File "/usr/lib/python2.6/site-packages/ambari_simplejson/decoder.py", line > 335, in decode > obj, end = self.raw_decode(s, idx=_w(s, 0).end()) > File "/usr/lib/python2.6/site-packages/ambari_simplejson/decoder.py", line > 353, in raw_decode > raise ValueError("No JSON object could be decoded") > ValueError: No JSON object could be decoded > ``` > > # Cause > During the test for the _PXF Process_ alert, the Active NN is found using a > JMX call. This call requires SPNEGO authentication since SPNEGO > authentication is turned on for the Hadoop web interfaces. However, a valid > Kerberos ticket is not found in the configured user's Kerberos ticket cache. > In this case, the configured users is the HDFS user - which technically is > not necessary. > > This occurs in `common-services/PXF/3.0.0/package/alerts/api_status.py:137` > ``` > if CLUSTER_ENV_SECURITY in configurations and > configurations[CLUSTER_ENV_SECURITY].lower() == "true": > if 'dfs.nameservices' in configurations[HDFS_SITE]: > namenode_address = > get_active_namenode(ConfigDictionary(configurations[HDFS_SITE]), > configurations[CLUSTER_ENV_SECURITY], configurations[HADOOP_ENV_HDFS_USER])[1] > else: > namenode_address = > configurations[HDFS_SITE]['dfs.namenode.http-address'] > > token = _get_delegation_token(namenode_address, > configurations[HADOOP_ENV_HDFS_USER], > > configurations[HADOOP_ENV_HDFS_USER_KEYTAB], > > configurations[HADOOP_ENV_HDFS_PRINCIPAL_NAME], > None) > commonPXFHeaders.update({"X-GP-TOKEN": token}) > ``` > > Inside the call at > > ``` > namenode_address = > get_active_namenode(ConfigDictionary(configurations[HDFS_SITE]), > configurations[CLUSTER_ENV_SECURITY], configurations[HADOOP_ENV_HDFS_USER])[1] > ``` > > # Solution > Ensure the configured user's Kerberos ticket cache contains a valid ticket > before querying for the active NN. Possibly change the acting user to one > executing the PXF component. > > > Diffs > ----- > > > ambari-server/src/main/resources/common-services/PXF/3.0.0/package/alerts/api_status.py > d0ed0a4 > > > Diff: https://reviews.apache.org/r/57410/diff/1/ > > > Testing > ------- > > Manually tested in cluster - Ambari 2.5 with HPD 2.5 and HDB 2.1.2 > > > Thanks, > > Robert Levas > >