我有一个非常奇怪的问题。我正在使用dfs-datastores Pail抽象将数据写入Java中的HDFS。我不认为Pail这件事对这个问题很重要。
当它调用org.apache.hadoop.fs.FileSystem getFS(java.lang.String path)并在我的本地文件系统上有一个路径时,它会暂停大约2分钟似乎什么都不做然后返回。这是在我的笔记本电脑上。
奇怪的是,当我今天在办公室的网络上工作时,它工作得非常快,但现在我回家了,它又在做了。我正在使用Java 1.7运行Ubuntu 10.10 64位。
任何人都有任何想法,它在做什么?在工作和在家之间会有什么不同?
更新: 我一直在使用调试器逐步调试代码,它似乎在Configuration.loadResource()中遇到了麻烦。它多次调用,从该函数返回需要5-10秒。
UPDATE2: 我把它缩小了一点。最大的挂起似乎是它调用KerberosName.setConfiguration()时。这可以解释为什么它在工作中快速运行,因为Active Directory充当Kerberos服务器。我家里没有一个,所以找不到一个。现在他们质疑为什么在世界上它试图加载Java Kerberos的东西。
答案 0 :(得分:1)
我找到了一个解决方案(或者至少是一个解决方案)。我安装了krb5-kdc软件包,现在我的小程序运行速度快,没有任何无法解释的暂停。在此之后我移除了krb5-kdc,经过测试,它仍在快速运行。我删除了/etc/krb5.conf并再次开始暂停。看起来在Ubuntu上使用Hadoop库(至少)需要/etc/krb5.conf文件。
也许这会帮助别人。