Hi everyone,

I've spent many hours debugging this failure. I've written a small ORC
compactor using the Java libs. Everything works locally, but deployment to
cloud running in Docker is giving me Kerberos auth failures.

public FileSystem getHadoopFs() {
  return new LocalFileSystem() {
    @Override
    public Configuration getConf() {
      Configuration conf = new Configuration();
      conf.set("hadoop.security.authorization", "false");
      conf.set("hadoop.security.authentication", "simple");
      return conf;
    }
  };
}


I've tried disabling Kerberos like so to no avail. Are there any
recommendations for how to go about this? This is just a standalone jar
running in Docker. Stack trace below.

Exception in thread "main"
org.apache.hadoop.security.KerberosAuthException: failure to login:
javax.security.auth.login.LoginException: java.lang.NullPointerException:
invalid null input: name
at
jdk.security.auth/com.sun.security.auth.UnixPrincipal.<init>(UnixPrincipal.java:67)
at
jdk.security.auth/com.sun.security.auth.module.UnixLoginModule.login(UnixLoginModule.java:129)
at
java.base/javax.security.auth.login.LoginContext.invoke(LoginContext.java:726)
at
java.base/javax.security.auth.login.LoginContext$4.run(LoginContext.java:665)
at
java.base/javax.security.auth.login.LoginContext$4.run(LoginContext.java:663)
at java.base/java.security.AccessController.doPrivileged(Native Method)
at
java.base/javax.security.auth.login.LoginContext.invokePriv(LoginContext.java:663)
at
java.base/javax.security.auth.login.LoginContext.login(LoginContext.java:574)
at
org.apache.hadoop.security.UserGroupInformation$HadoopLoginContext.login(UserGroupInformation.java:1926)
at
org.apache.hadoop.security.UserGroupInformation.doSubjectLogin(UserGroupInformation.java:1837)
at
org.apache.hadoop.security.UserGroupInformation.createLoginUser(UserGroupInformation.java:710)
at
org.apache.hadoop.security.UserGroupInformation.getLoginUser(UserGroupInformation.java:660)
at
org.apache.hadoop.security.UserGroupInformation.getCurrentUser(UserGroupInformation.java:571)
at org.apache.hadoop.fs.FileSystem$Cache$Key.<init>(FileSystem.java:3487)
at org.apache.hadoop.fs.FileSystem$Cache$Key.<init>(FileSystem.java:3477)
at org.apache.hadoop.fs.FileSystem$Cache.get(FileSystem.java:3319)
at org.apache.hadoop.fs.FileSystem.get(FileSystem.java:479)
at org.apache.hadoop.fs.FileSystem.get(FileSystem.java:227)
at org.apache.hadoop.fs.FileSystem.get(FileSystem.java:463)
at org.apache.hadoop.fs.Path.getFileSystem(Path.java:365)
at com.orc.compaction.utils.FileDump.getReader(FileDump.java:72)
at com.compaction.utils.FileDump.inferSchemaFromBinary(FileDump.java:61)
at com.orc.compaction.utils.FileDump.inferSchemaFromBinary(FileDump.java:47)
at com.orc.compaction.utils.FileDump.inferSchemaFromFiles(FileDump.java:39)
at
com.orc.compaction.CompactMonkey.retrieveWritersPerSchema(CompactMonkey.java:46)
at com,orc.compaction.CompactMonkey.processCompaction(CompactMonkey.java:69)
at com.orc.compaction.App.main(App.java:43)

at
org.apache.hadoop.security.UserGroupInformation.doSubjectLogin(UserGroupInformation.java:1847)
at
org.apache.hadoop.security.UserGroupInformation.createLoginUser(UserGroupInformation.java:710)
at
org.apache.hadoop.security.UserGroupInformation.getLoginUser(UserGroupInformation.java:660)
at
org.apache.hadoop.security.UserGroupInformation.getCurrentUser(UserGroupInformation.java:571)
at org.apache.hadoop.fs.FileSystem$Cache$Key.<init>(FileSystem.java:3487)
at org.apache.hadoop.fs.FileSystem$Cache$Key.<init>(FileSystem.java:3477)
at org.apache.hadoop.fs.FileSystem$Cache.get(FileSystem.java:3319)
at org.apache.hadoop.fs.FileSystem.get(FileSystem.java:479)
at org.apache.hadoop.fs.FileSystem.get(FileSystem.java:227)
at org.apache.hadoop.fs.FileSystem.get(FileSystem.java:463)
at org.apache.hadoop.fs.Path.getFileSystem(Path.java:365)

My ORC writer is pretty standard.

public static Writer createOrcWriter(
        Properties orcWriterProperties,
        Configuration configuration,
        Path orcOutputFile,
        TypeDescription orcSchema,
        FileSystem fs)
        throws IOException {
    OrcFile.WriterOptions opts =
            OrcFile.writerOptions(orcWriterProperties, configuration)
                    .setSchema(orcSchema)
                    .useUTCTimestamp(true);

    if (fs != null) {
        fs.setConf(configuration);
        opts.fileSystem(fs);
    }
    return OrcFile.createWriter(orcOutputFile, opts);
}

Reply via email to