javax.security.auth.login.FailedLoginException: Null

While you are running the pump-and-dump or spoofing Streams jobs, you receive the following error:

SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
SLF4J: Actual binding is of type [org.slf4j.impl.Log4jLoggerFactory]
Exception in thread "Thread-11" java.io.IOException: Login failure for sifsuser@IBM.COM from keytab
 /etc/security/keytabs/sifsuser.keytab
at org.apache.hadoop.security.UserGroupInformation.loginUserFromKeytabAndReturnUGI(UserGroupInformation.java:1146)
at com.ibm.streamsx.hdfs.client.auth.BaseAuthenticationHelper.authenticateWithKerberos(BaseAuthenticationHelper.java:104)
at com.ibm.streamsx.hdfs.client.auth.HDFSAuthenticationHelper.connect(HDFSAuthenticationHelper.java:59)
at com.ibm.streamsx.hdfs.client.AbstractHdfsClient.connect(AbstractHdfsClient.java:35)
at com.ibm.streamsx.hdfs.client.HdfsJavaClient.connect(HdfsJavaClient.java:10)
at com.ibm.streamsx.hdfs.AbstractHdfsOperator.initialize(AbstractHdfsOperator.java:56)
at com.ibm.streamsx.hdfs.HDFS2FileSource.initialize(HDFS2FileSource.java:119)
at com.ibm.streams.operator.internal.runtime.api.OperatorAdapter.initialize(OperatorAdapter.java:735)
at com.ibm.streams.operator.internal.jni.JNIBridge.<init>(JNIBridge.java:271)
Caused by: javax.security.auth.login.FailedLoginException: Null key
at com.ibm.security.jgss.i18n.I18NException.throwFailedLoginException(I18NException.java:32)
at com.ibm.security.auth.module.Krb5LoginModule.a(Krb5LoginModule.java:722)
at com.ibm.security.auth.module.Krb5LoginModule.b(Krb5LoginModule.java:154)
at com.ibm.security.auth.module.Krb5LoginModule.login(Krb5LoginModule.java:411)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:95)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:55)

To resolve this problem, ensure the following:

  1. If IBM Streams is not installed on one of the Hadoop cluster nodes, copy the /usr/iop/4.2.0.0/hadoop and /usr/iop/4.2.0.0/hadoop-hdfs directories from one of the cluster nodes to the /home/streamsadmin/Hadoop/ directory on the IBM Streams server.
  2. Edit the streamsadmin user .bashrc file to include the following line: export HADOOP_HOME=/home/streamsadmin/Hadoop/hadoop
  3. Copy the /etc/krb5.conf file from the KDC computer to the computer where IBM Streams is installed.
  4. Install IBM Streams Fix Pack 4.2.0.3 (www.ibm.com/support/docview.wss?uid=swg21997273).
    • Check the permissions for ibmjgssprovider.jar.
    • Make a backup copy of ibmjgssprovider.jar in a different location than the original. Ensure that you place the backup copy outside of the JVM path and outside of directories in the classpath.
    • Delete the original ibmjgssprovider.jar file. Do not rename it. You must delete the file.
    • Copy the backup file to the location of the original file. Ensure that the permissions for the file are the same as were set for the original ibmjgssprovider.jar file.
    • Restart the application.