2013-05-21 48 views
1

我遇到過兩種使用Hadoop 1.2.0的Hadoop管道編譯C++程序的方法,並且他們都沒有運氣。用hadoop管道編譯問題

方法1:

我碰到下面的鏈接:

http://cs.smith.edu/dftwiki/index.php/Hadoop_Tutorial_2.2_--_Running_C%2B%2B_Programs_on_Hadoop

,並提出以下的Makefile

CC = g++ 
HADOOP_INSTALL = /home/hduser/hadoop 
PLATFORM = Linux-amd64-64 
CPPFLAGS = -m64 -I$(HADOOP_INSTALL)/c++/$(PLATFORM)/include 
wordcount: wordcount.cpp 
     $(CC) $(CPPFLAGS) $< -Wall -L$(HADOOP_INSTALL)/c++/$(PLATFORM)/lib -lhadooppipes -lhadooputils -lpthread -g -O2 -o [email protected] 

然後我得到一個全噸未定義的引用

/home/hduser/hadoop/c++/Linux-amd64-64/lib/libhadooppipes.a(HadoopPipes.o): In function `HadoopPipes::BinaryProtocol::createDigest(std::string&, std::string&)': 
HadoopPipes.cc:(.text._ZN11HadoopPipes14BinaryProtocol12createDigestERSsS1_[_ZN11HadoopPipes14BinaryProtocol12createDigestERSsS1_]+0x31): undefined reference to `EVP_sha1' 
HadoopPipes.cc:(.text._ZN11HadoopPipes14BinaryProtocol12createDigestERSsS1_[_ZN11HadoopPipes14BinaryProtocol12createDigestERSsS1_]+0x6d): undefined reference to `HMAC_Init' 
HadoopPipes.cc:(.text._ZN11HadoopPipes14BinaryProtocol12createDigestERSsS1_[_ZN11HadoopPipes14BinaryProtocol12createDigestERSsS1_]+0xa6): undefined reference to `HMAC_Update' 

方法2:

我碰到這個教程

http://wiki.apache.org/hadoop/C%2B%2BWordCount

我跑以下命令

ant -Dcompile.c++=yes examples 

而來到收到以下錯誤

Buildfile: build.xml does not exist! 
Build failed 

我有ñ o想法我可以得到這個build.xml文件。我在hadoop的安裝文件夾中找到一個,但我不認爲這是正確的。

如果任何人有任何運氣與這些方法之一,您的意見將真正讚賞。

回答

0

我只能跟你的第二個方法幫助:

你應該要執行的構建文件是在你的Hadoop發行版的根目錄中的build.xml,旁邊的LICENSE和README文本文件。導航到您的hadoop-x.y.z目錄並按照說明輸入命令。

如果您下載了源代碼發佈版,而不是二進制發行版(它不包含示例源代碼),則這將僅適用。 C++示例源代碼位於src/examples/pipes/impl中

0

我曾經有過同樣的問題。一種解決方案是鏈接加密庫。 例如,您可以將-lcrypto添加到編譯命令。

HTH 淑敏