链接Hadoop MapReduce与管道(c++)
Chaining Hadoop MapReduce with Pipes (C++)
有人知道如何用管道API链接两个MapReduce吗?在之前的一个项目中,我已经用JAVA链接了两个MapReduce,但是今天我需要使用c++。不幸的是,我还没有看到任何c++的例子。
已经有人做过了吗?不可能吗?使用Oozie Workflow。它允许您将pipe与通常的MapReduce作业一起使用
我终于让Hadoop Pipes工作了。这里有一些步骤,使作品的wordcount示例可以在src/examples/pipes/impl/.
我有一个工作的Hadoop 1.0.4集群,按照文档中描述的步骤进行配置。
要编写Pipes作业,我必须在初始包中包含已经编译的Pipes库。这可以在32位和64位架构的c++文件夹中找到。但是,我必须重新编译它,这可以按照以下步骤完成:
# cd /src/c++/utils
# ./configure
# make install
# cd /src/c++/pipes
# ./configure
# make install
这两个命令将为我们的架构编译库,并在/src/c++中创建一个' install '目录,其中包含编译后的文件。
此外,我必须添加−lssl
和−lcrypto
链接标志来编译我的程序。没有它们,我在运行时遇到了一些身份验证异常。多亏了这些步骤,我能够运行wordcount - simple,可以在src/examples/pipes/impl/目录中找到。
# bin/hadoop pipes −D hadoop.pipes.java.recordreader=false −D hadoop.pipes.java.recordwriter=false −libjars hadoop−1.0.4/build/hadoop−test−1.0.4.jar −inputformat org.apache.hadoop.mapred.pipes.WordCountInputFormat −input file:///input/file −output file:///tmp/output −program wordcount−nopipe
此外,如果我们看一下1.0.4版本的org.apache.hadoop.mapred.pipes. submit .java,如果您使用InputFormat选项,当前的实现禁用了指定非java记录读取器的能力。因此,您必须注释setIsJavaRecordReader(job,true);
行以使其成为可能,并重新编译核心源代码以考虑此更改(http://web.archiveorange.com/archive/v/RNVYmvP08OiqufSh0cjR)。
if(results.hasOption("−inputformat")) {
setIsJavaRecordReader(job, true);
job.setInputFormat(getClass(results, "−inputformat", job,InputFormat.class));
}
- 在进程中对同一管道进行读取和写入时C++管道出现问题
- IPC使用多个管道和分支进程来运行Python程序
- 如何创建函数管道,以便函数一个接一个地运行?
- Gstreamer 管道从命令 lne 到 c 代码
- 外壳包装器句柄/执行交互式命令管道C++ UNIX
- 将旧管道转换为现代 openGL 时出现问题
- 如何使用管道在父级和子级之间来回传递文件
- 在没有管理员权限的情况下连接到同一网络中的命名管道
- 如何测量管道延迟?
- 我如何使用此程序管道多个命令?C++
- 先进先出:一个进程永远不会从管道读取
- Node.js fs.open() 在尝试打开 4 个以上的命名管道 (FIFO) 后挂起
- 使用模板而不是虚拟方法的管道模式
- 我可以写入关闭的套接字并强制纠正损坏的管道错误吗?
- 在 Azure DevOps 构建管道中使用英特尔C++编译器为 Linux 环境构建C++代码
- Opencv GStreamer管道在Raspberry Pi 4上不起作用
- 阻塞管道连接命名管道不触发
- GLib-ERROR:为GWakeup创建管道:打开的文件太多
- 向 vulkan 管道添加额外的 UBO 会停止所有几何体渲染
- 在命名管道中发送标准::字符串流