【问题标题】:Wordcount C++ Hadoop pipes does not workWordcount C++ Hadoop 管道不起作用
【发布时间】:2011-09-09 06:43:02
【问题描述】:

我正在尝试在 C++ 中运行 wordcount 的示例,如此链接描述的方法: Running the WordCount program in C++。编译工作正常,但是当我尝试运行我的程序时,出现了错误:

bin/hadoop 管道 -conf ../dev/word.xml -input testtile.txt -output wordcount-out
11/06/06 14:23:40 WARN mapred.JobClient:没有设置作业 jar 文件。
可能找不到用户类。请参阅 JobConf(Class) 或 JobConf#setJar(String)。
2006 年 11 月 6 日 14:23:40 信息 mapred.FileInputFormat:要处理的总输入路径:1
2006 年 11 月 6 日 14:23:40 信息 mapred.JobClient:正在运行的作业:job_201106061207_0007
2006 年 11 月 6 日 14:23:41 信息 mapred.JobClient:地图 0% 减少 0%
2006 年 11 月 6 日 14:23:53 信息 mapred.JobClient:任务 ID:尝试_201106061207_0007_m_000000_0,状态:失败
java.io.IOException
在 org.apache.hadoop.mapred.pipes.OutputHandler.waitForAuthentication(OutputHandler.java:188) 在 org.apache.hadoop.mapred.pipes.Application.waitForAuthentication(Application.java:194) 在 org.apache.hadoop.mapred.pipes.Application.(Application.java:149) 在 org.apache.hadoop.mapred.pipes.PipesMapRunner.run(PipesMapRunner.java:68) 在 org.apache.hadoop.mapred.MapTask.runOldMapper(MapTask.java:435) 在 org.apache.hadoop.mapred.MapTask.run(MapTask.java:371) 在 org.apache.hadoop.mapred.Child$4.run(Child.java:259) 在 java.security.AccessController.doPrivileged(本机方法) 在 javax.security.auth.Subject.doAs(Subject.java:416) 在 org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1059) 在 org.apache.hadoop.mapred.Child.main(Child.java:253)
尝试_201106061207_0007_m_000000_0:服务器无法进行身份验证。退出

我在两个节点上的 Fedora 上运行 Hadoop,并按照该链接中的配置说明进行操作:Running Hadoop on multi-node cluster。我使用该命令尝试了 Hadoop 的 wordcount 示例:

bin/hadoop jar hadoop-examples-0.20.203.0.jar wordcount testtile.txt wordcount-out

而且该命令运行良好。这就是为什么我不明白为什么我的程序不起作用。所以我希望有人知道我做错了什么,或者是否有人已经解决了这个错误。

【问题讨论】:

    标签: c++ hadoop cluster-computing word-count


    【解决方案1】:

    我不知道我是否必须以这种方式回答我的问题,或者编辑我的问题。无论如何,我找到了解决方案,我只想告诉所有遇到相同错误的人。

    经过几天的研究和尝试,我了解到 Fedora 和 C++ on 64bits for Hadoop 不是很好的匹配。我尝试用 ant 编译 Hadoop wordcount C++,就像 wiki 中解释的那样。但是 ant 给我一些关于 libssl 和 stdint 的错误。

    首先,如果您使用 Fedora,则必须将 -lcrypto 添加到 .configure 中的 LIBS 变量中。这是因为在链接到 libssl 时,现在必须在这些平台上明确声明对 libcrypto 的依赖。(请参阅bug on Fedora)。

    第二个问题:ant 产生很多关于 C++ 文件的错误:要解决这个问题,您只需在文件顶部添加一个包含:stdint.h

    然后构建成功。然后我尝试在我的 Hadoop 集群上运行 wordcount 示例并且它可以工作,而我的没有。我预计该问题来自我刚刚更正的库,我是对的:我尝试使用 hadoop 安装目录中的库运行 Hadoop 示例,但它不起作用,我得到了同样的错误。

    这可以解释为 ant 重新编译了 Hadoop 所需的 C++ 库(我做了更正)并使用了它,而不是在 Hadoop 安装目录中提供了库。

    【讨论】:

    • 欢迎来到 SO!如果您没有得到其他可接受的答案,如果您自己找到解决方案,非常欢迎您回答自己的问题。感谢您的跟进。
    猜你喜欢
    • 2021-09-02
    • 2015-08-23
    • 2013-01-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多