在线精品99_中国九九盗摄偷拍偷看_91免费版在线观看_91.app_91高清视频在线_99热最新网站

Hadoop Pipes编程中C++如何实现WordCount

129次阅读
没有评论

共计 3792 个字符,预计需要花费 10 分钟才能阅读完成。

本篇文章给大家分享的是有关 Hadoop Pipes 编程中 C ++ 如何实现 WordCount,丸趣 TV 小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着丸趣 TV 小编一起来看看吧。

Hadoop 虽然用 java 实现,但是同样可以支持其他语言的 Map 和 Reduce。由于需要学习 C ++ 方面的 Hadoop 实现,所以最近一直在研究 Hadoop Streaming 编程,其中 Hadoop pipes 允许 C ++ 程序员编写 mapreduce 程序,它允许用户混用 C ++ 和 Java 的 RecordReader,Mapper,Partitioner,Rducer 和 RecordWriter 等五个组件,下面是我的搭建以及遇到的问题。

一般这种搭建的流程都是从官网看比较好,参考 http://wiki.apache.org/hadoop/C++WordCount,里面的流程简单易懂。进入 hadoop 的安装目录,执行:

ant -Dcompile.c++=yes examples

根据错误提示,安装 ant:

 sudo apt-get install ant

下面是源源不断的错误以及源源不断的解决办法。。。

Error1:/build.xml:634: Execute failed: java.io.IOException: Cannot run program autoreconf (in directory /home/hadoop/hadoop-1.2.1/src/native): error=2, No such file or directory

Solution1:根据报错是由于没有安装 automake 工具,所以执行:

 sudo apt-get install automake

Error2:build.xml:634: exec returned: 1

Solution2:http://stackoverflow.com/questions/23112074/building-hadoop-1-2-1-core-jar-using-ant-failed,执行:

sudo apt-get install libtool

Error3:build.xml:2164: exec returned: 255

Solution3:forum.hadoop.tw/viewtopic.php?f=7 t=37970,参考里面的实现步骤。

1)安装 g ++

sudo apt-get install g++

2)编译 wordcount.cpp

g++ -I/home/hadoop/hadoop-1.2.1/c++/Linux-i386-32/include -c wordcount.cpp

3)生成可执行文件

g++ wordcount.o -o wordcount -L/home/hadoop/hadoop-1.2.1/c++/Linux-i386-32/lib -lnsl -lpthread -lhadooppipes –lhadooputils

Error4:In function `HadoopPipes::BinaryProtocol::createDigest(std::string , std::string) :

Solution4:http://blog.sina.com.cn/s/blog_605f5b4f010195w6.html,

Step1:

sudo apt-get install libssl-dev

Step2:

g++ wordcount.o -o wordcount -L/home/hadoop/hadoop-1.2.1/c++/Linux-i386-32/lib -lnsl -lpthread -lhadooppipes -lhadooputils –lcrypto

经历了上面的重重问题,现在终于生成了可执行程序 WordCount 了,然后需要上传到 HDFS,利用可执行文件执行。下面是命令:

/pre 
hadoop fs -mkdir wordcount/bin
hadoop fs -mkdir wordcount/input
hadoop fs -put wordcount.cpp /user/hadoop/wordcount/input/
hadoop fs -put wordcount /user/hadoop/wordcount/bin/
hadoop pipes -D hadoop.pipes.java.recordreader=true -D hadoop.pipes.java.recordwriter=true -program /user/hadoop/wordcount/bin/wordcount -input /user/hadoop/wordcount/input/ -output /user/hadoop/wordcount/output

其中我以 wordcount.cpp 为输入文件,将可执行文件上传到 bin 目录,输出目录是 output。

执行的过程中又遇到问题:

Error5:java.io.IOException

at org.apache.hadoop.mapred.pipes.OutputHandler.waitForAuthentication(OutputHandler.java:188)

Solution5:http://blog.csdn.net/sigxxl/article/details/12293435,终于找到同仁了。。。主要的解决方法就是重新编译生成 libhadooppipes.a 和 libhadooputils.a 这两个静态库,然后覆盖原先的静态库。

1)  进入 hadoop/src/c++/pipes 目录,执行./ configure。

Error6:./configure: line 413: test: please: integer expression expected

./configure: line 416: $4: Bad file descriptor

configure: error: check

./configure: line 302: return: please: numeric argument required

./configure: line 312: exit: please: numeric argument required

Solution6:找到 configure 文件的这一行,一般报错会指定这一行的,将 as_fn_exit 注释掉,如下:

/pre 
solution:as_fn_error ()
as_status=$1; test $as_status -eq 0   as_status=1
if test  $4  then
as_lineno=${as_lineno- $3} as_lineno_stack=as_lineno_stack=$as_lineno_stack
$as_echo  $as_me:${as_lineno-$LINENO}: error: $2   $4
$as_echo  $as_me: error: $2   2
#as_fn_exit
$as_status
} # as_fn_error

2)   ./configure

make install(遇到同样的报错再次修改 configure 文件如上)

3)  进入 hadoop/src/c++/utils,执行同样的步骤

./configure

make install

生成好新的 libhadooppipes.a 和 libhadooputils.a 这两个静态库和相关的头文件之后,将这些文件覆盖到~/hadoop/c++/Linux-i386-32/ 文件夹中的 include 目录和 lib 目录中去。重启 hadoop,然后重新运行 C ++ 程序。

补充:之后我再次编译的时候,某次又抛出了 error:g++:error:-lcrypto:No such file or directory

这可急坏我了,多次查证,, 原因是没有找到 libcrypto.so

解决办法:http://blog.csdn.net/yasi_xi/article/details/8658191

以我自身为例,进入到 /lib/i386-linux-gnu 目录,ll libcrypto*,查看一下当前链接情况,结果是没有 libcrypto.so,没有指向 libcrypto.so.1.0.0,也就是说,无法在 ld 中找到,所以添加软连接:

ln -s /lib/i386-linux-gnu/libssl.so.1.0.0 /lib/libssl.so.1.0.0/libssl.so

ln -s /usr/i386-linux-gnu/libcrypto.so.1.0.0 /lib/libssl.so.1.0.0/libcrypto.so

当然,这些 libssl.so.1.0.0 文件你得自己去找,找不到就去下一个,理论上安装了 openssl 就应该有的,ok,补充一下,终于不报错了

再次运行,OK。

以上就是 Hadoop Pipes 编程中 C ++ 如何实现 WordCount,丸趣 TV 小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注丸趣 TV 行业资讯频道。

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-08-17发表,共计3792字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)
主站蜘蛛池模板: a爱爱视频| 综合久久网 | 在线播放国产色视频在线 | 中文字幕99页 | 欧洲精品码一区二区三区免费看 | 品色堂免费论坛 | 九九久久精品无码专区 | 成年女人色毛片免费 | 久久久久久久久影院 | 日日摸夜夜摸人人嗷嗷叫 | 99久久国产综合精麻豆 | 国产日产欧产精品精品图片 | 久草成人在线视频 | 久久亚洲精品中文字幕无码 | 97se狠狠狠狼鲁亚洲综合网 | 日韩av无码一区二区三区不卡 | 国产成人午夜福利在线播放 | 中文字幕无码不卡免费视频 | 美女福利视频国产免费观看 | 一本一本久久a久久综合精品蜜桃 | 亚洲欧美精品一区二区 | 在线观看国产三级 | 国产精品成人免费福利 | 热99精品 | 欧美一区二区三区不卡视频 | 2022国产成人精品视频人 | 边啃奶头边躁狠狠躁玩爽在水里面 | 亚洲熟妇自拍无码区 | 亚洲欧洲日本精品 | 精品国产精品三级精品av网址 | 国产激情久久久久影院 | 日韩精品亚洲人成在线观看 | 久中文字幕中文字幕亚洲无线 | 好爽毛片一区二区三区四 | 久久精品视频8 | 国产极品美女到高潮 | 久久首页| 四虎精品成在线播放 | 国产男女爽爽爽免费视频 | 精品欧美一区二区在线观看 | 欧美国产在线一区 |