小编Pad*_*ran的帖子

Kerberos身份验证错误 - 从SharedPath加载Hadoop配置文件时

我正在开发一个Java应用程序,这个应用程序正在将结果数据保存到HDFS.java应用程序应该在我的Windows机器上运行.

我们使用Kerberos身份验证,并将密钥表文件放在NAS驱动器中.我们将Hadoop配置文件保存在同一个NAS驱动器中.

我的问题是当我从NAS驱动器加载Hadoop配置文件时,它给我一些验证错误,但是如果我从本地文件系统加载配置文件,我的应用程序运行正常(我还在C:\ Hadoop中保存了配置文件) )

下面是我的工作代码片段.(NAS中的keytab文件,本地文件系统中的Hadoop配置文件)

static String KeyTabPath = "\\\\path\\2\\keytabfile\\name.keytab"
Configuration config = new Configuration();
        config.set("fs.defaultFS", "hdfs://xxx.xx.xx.com:8020");
        config.addResource(new Path("C:\\Hadoop\\core-site.xml"));
        config.addResource(new Path("C:\\Hadoop\\hdfs-site.xml"));
        config.addResource(new Path("C:\\Hadoop\\mapred-site.xml"));
        config.addResource(new Path("C:\\Hadoop\\yarn-site.xml"));
        config.set("fs.hdfs.impl", org.apache.hadoop.hdfs.DistributedFileSystem.class.getName());
        config.set("fs.file.impl",org.apache.hadoop.fs.LocalFileSystem.class.getName());
        // Kerberos Authentication
        config.set("hadoop.security.authentication", "Kerberos");
        UserGroupInformation.setConfiguration(config);
        UserGroupInformation.loginUserFromKeytab("name@xx.xx.COM",KeyTabPath);
Run Code Online (Sandbox Code Playgroud)

我也尝试从NAS驱动器加载配置文件,但是获得了kerberos身份验证错误.下面是抛出错误的代码片段(NAS中的Keytab文件和NAS中的Hadoop配置文件)

static String KeyTabPath = "\\\\path\\2\\keytabfile\\name.keytab"
Configuration config = new Configuration();
        config.set("fs.defaultFS", "hdfs://xxx.xx.xx.com:8020");
        config.addResource(new Path("\\\\NASDrive\\core-site.xml"));
        config.addResource(new Path("\\\\NASDrive\\hdfs-site.xml"));
        config.addResource(new Path("\\\\NASDrive\\mapred-site.xml"));
        config.addResource(new Path("\\\\NASDrive\\yarn-site.xml"));
        config.set("fs.hdfs.impl", org.apache.hadoop.hdfs.DistributedFileSystem.class.getName());
        config.set("fs.file.impl",org.apache.hadoop.fs.LocalFileSystem.class.getName());
        // Kerberos Authentication
        config.set("hadoop.security.authentication", "Kerberos");
        UserGroupInformation.setConfiguration(config);
        UserGroupInformation.loginUserFromKeytab("name@xx.xx.COM",KeyTabPath);
Run Code Online (Sandbox Code Playgroud)

以下是错误消息

java.io.IOException: Login failure for name@XX.XX.COM from keytab \\NASdrive\name.keytab: javax.security.auth.login.LoginException: java.lang.IllegalArgumentException: …
Run Code Online (Sandbox Code Playgroud)

java hadoop kerberos

8
推荐指数
1
解决办法
2564
查看次数

杀死配置单元查询而不退出配置单元外壳

有什么方法可以在不退出hive shell的情况下终止hive查询?例如,我错误地select从具有一百万行数据的某个表中运行了该语句,我只是想停止它,而不是从shell中退出。如果按CTRL+Z,它就会脱壳。

hive hiveql hivecli

6
推荐指数
1
解决办法
1万
查看次数

生成范围和减量器的序列号

我有一个像下面这样的表,它有开始范围和结束范围列。

+------+----------+--------+--+
|  f1  | start_r  | end_r  |
+------+----------+--------+--+
| ABC  | 31       | 29     |
+------+----------+--------+--+
Run Code Online (Sandbox Code Playgroud)

我需要使用start_r和end_r中的值并产生如下所示的输出(生成起始和终止范围之间的序列号减1)

 f1   seq_no

 ABC   31
 ABC   30
 ABC   29
Run Code Online (Sandbox Code Playgroud)

我只需要一种方法来生成值..为此,蜂巢中是否有任何buitin函数?

sql hive hiveql

1
推荐指数
1
解决办法
1352
查看次数

标签 统计

hive ×2

hiveql ×2

hadoop ×1

hivecli ×1

java ×1

kerberos ×1

sql ×1