Hello all,
I have a flink job that is using the HbaseSinkFunction as specified
here: flink/flink-connectors/flink-connector-hbase-2.2
at master ยท a0x8o/flink (github.com)
<https://github.com/a0x8o/flink/tree/master/flink-connectors/flink-connector-hbase-2.2#writing-into-hbase-tables-from-datastreams>

I'm deploying the job to a cluster in yarn per-job mode. Using flink run -d
job.jar.

The job gets accepted and I get the address of the UI but when looking at
the UI the job stays at CREATED and never actually runs. After some time it
stops.

This error stands out when looking at the logs:
WARN [main] org.apache.hadoop.security.LdapGroupsMapping: Exception while
trying to get password for alias
hadoop.security.group.mapping.ldap.bind.password:
java.io.IOException: Configuration problem with provider path.
        at
org.apache.hadoop.conf.Configuration.getPasswordFromCredentialProviders(Configuration.java:2428)
        at
org.apache.hadoop.conf.Configuration.getPassword(Configuration.java:2347)
        at
org.apache.hadoop.security.LdapGroupsMapping.getPassword(LdapGroupsMapping.java:797)
        at
org.apache.hadoop.security.LdapGroupsMapping.setConf(LdapGroupsMapping.java:680)
        at
org.apache.hadoop.util.ReflectionUtils.setConf(ReflectionUtils.java:77)
        at
org.apache.hadoop.util.ReflectionUtils.newInstance(ReflectionUtils.java:137)
        at org.apache.hadoop.security.Groups.<init>(Groups.java:105)
        at org.apache.hadoop.security.Groups.<init>(Groups.java:101)
        at
org.apache.hadoop.security.Groups.getUserToGroupsMappingService(Groups.java:476)
        at
org.apache.hadoop.security.UserGroupInformation.initialize(UserGroupInformation.java:352)
        at
org.apache.hadoop.security.UserGroupInformation.ensureInitialized(UserGroupInformation.java:314)
        at
org.apache.hadoop.security.UserGroupInformation.doSubjectLogin(UserGroupInformation.java:1996)
        at
org.apache.hadoop.security.UserGroupInformation.createLoginUser(UserGroupInformation.java:743)
        at
org.apache.hadoop.security.UserGroupInformation.getLoginUser(UserGroupInformation.java:693)
        at
org.apache.hadoop.security.UserGroupInformation.getCurrentUser(UserGroupInformation.java:604)
        at
org.apache.hadoop.yarn.server.nodemanager.containermanager.localizer.ContainerLocalizer.main(ContainerLocalizer.java:468)
Caused by: java.nio.file.AccessDeniedException:
/var/run/.../process/1546359139-yarn-NODEMANAGER/creds.localjceks
        at
sun.nio.fs.UnixException.translateToIOException(UnixException.java:84)
        at
sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:102)
        at
sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:107)
        at
sun.nio.fs.UnixFileSystemProvider.newByteChannel(UnixFileSystemProvider.java:214)
        at java.nio.file.Files.newByteChannel(Files.java:361)
        at java.nio.file.Files.newByteChannel(Files.java:407)
        at
java.nio.file.spi.FileSystemProvider.newInputStream(FileSystemProvider.java:384)
        at java.nio.file.Files.newInputStream(Files.java:152)
        at
org.apache.hadoop.security.alias.LocalKeyStoreProvider.getInputStreamForFile(LocalKeyStoreProvider.java:76)
        at
org.apache.hadoop.security.alias.AbstractJavaKeyStoreProvider.locateKeystore(AbstractJavaKeyStoreProvider.java:325)
        at
org.apache.hadoop.security.alias.AbstractJavaKeyStoreProvider.<init>(AbstractJavaKeyStoreProvider.java:86)
        at
org.apache.hadoop.security.alias.LocalKeyStoreProvider.<init>(LocalKeyStoreProvider.java:56)
        at
org.apache.hadoop.security.alias.LocalJavaKeyStoreProvider.<init>(LocalJavaKeyStoreProvider.java:42)
        at
org.apache.hadoop.security.alias.LocalJavaKeyStoreProvider.<init>(LocalJavaKeyStoreProvider.java:34)
        at
org.apache.hadoop.security.alias.LocalJavaKeyStoreProvider$Factory.createProvider(LocalJavaKeyStoreProvider.java:68)
        at
org.apache.hadoop.security.alias.CredentialProviderFactory.getProviders(CredentialProviderFactory.java:73)
        at
org.apache.hadoop.conf.Configuration.getPasswordFromCredentialProviders(Configuration.java:2409)
        ... 15 more

This seems as if it tries to access by password based authentication but on
the cluster only Kerberos based authentication should be used.

The log output when scheduling the job might be a clue:
org.apache.flink.yarn.Utils         [] - Attempting to obtain Kerberos
security token for HBase
org.apache.flink.yarn.Utils         [] - Hbase is not available (not
packaged with this application): ClassNotFoundException :
"org.apache.hadoop.hbase.HbaseConfiguration".

The flink-connector-hbase-2.2 dependecy has been specified in the compile
scope and the hadoop-common in the provided scope in the jobs' pom.xml. I
have also tried including more dependencies as hbase-common, hbase-client
without any luck.
I have also tried setting the HBASE_HOME, HBASE_CONF_DIR, HADOOP_CLASSPATH
and HBASE_CLASSPATH environment variables.
I have also made sure that the host where the job is deployed (flink run is
called) is also an HBase gateway node.

Looking at the hadoop classpath I haven't found the hbase-common.jar. Could
this possibly be the issue? I'm unsure if yarn looks for this dependency
inside the compiled job or in the hadoop classpath.

Any help with this issue would be appreciated.

Best Regards
Kamil

Reply via email to