我遇到了一个非常奇怪的问题。我在Java中使用dfs-datastores抽象将数据写入HDFS。不过,我不认为Pail部分对这个问题很重要。
当它使用本地文件系统上的路径调用org.apache.hadoop.fs.FileSystem getFS(java.lang.String path)时,它暂停了大约2分钟,似乎什么也没做,然后返回。这是在我的笔记本上。
奇怪的是,当我今天在办公室上网时,它工作得非常快,但现在我回家了,它又开始工作了。我正在运行64位的Ubuntu 10.10和Java 1.7。
有人知道它在做什么吗?在工作和在家之间有什么不同?
更新:我一直在使用调试器单步执行代码,但它在Configuration.loadResource()中似乎遇到了问题。它会多次调用该函数,并需要5-10秒才能从该函数返回。
UPDATE2:我已经进一步缩小了范围。最大的挂起似乎是当它调用KerberosName.setConfiguration()时。这就解释了为什么它在工作中运行得很快,因为Active Directory充当Kerberos服务器。我家里没有,所以它找不到。现在他们的问题是,为什么它要试图加载Java Kerberos东西。
发布于 2012-04-01 10:35:20
我找到了一个解决方案(或者至少找到了一个变通的办法)。我安装了krb5-kdc包,现在我的小程序运行得很快,没有任何无法解释的停顿。在此之后,我删除了krb5-kdc,进行了测试,它仍然运行得很快。我删除了/etc/krb5.conf,它再次开始暂停。看起来在Ubuntu上使用Hadoop库(至少)需要一个/etc/krb5.conf文件。
也许这对其他人有帮助。
https://stackoverflow.com/questions/9952094
复制相似问题