我有一个很奇怪的问题。我正在使用dfs-datastores Pail抽象将数据写入Java中的HDFS。我不认为“桶装”对这个问题很重要。

当它使用本地文件系统上的路径调用org.apache.hadoop.fs.FileSystem getFS(java.lang.String path)时,它将暂停约2分钟,似乎什么也没做,然后返回。这是在我的笔记本电脑上。

奇怪的是,当我今天在办公室连接网络时,它的运行速度非常快,但是现在我回到家了,它又在做。我正在使用Java 1.7运行64位Ubuntu 10.10。

任何人都知道它在做什么吗?在工作和在家之间会有什么不同?

更新:
我一直在调试器中逐步调试代码,并且在Configuration.loadResource()中似乎遇到了麻烦。它被多次调用,并且需要5到10秒才能从该函数返回。

UPDATE2:
我将范围缩小了一点。最大的麻烦似乎是当它调用KerberosName.setConfiguration()时。这将解释为什么由于Active Directory充当Kerberos服务器,它为什么可以快速运行。我家里没有一个,所以找不到。现在,他们提出了一个问题,那就是为什么在世界上它试图加载Java Kerberos。

最佳答案

我找到了解决方案(或至少可以解决)。我安装了krb5-kdc软件包,现在我的小程序运行很快,没有任何无法解释的暂停。在此之后,我删除了krb5-kdc,进行了测试,它仍在快速运行。我删除了/etc/krb5.conf,它再次开始暂停。看起来(至少)在Ubuntu上使用Hadoop库需要一个/etc/krb5.conf文件。

也许这会帮助别人。

10-08 12:38