私は、Hadoop 1.2.0 用の Hadoop パイプを使用して C++ プログラムをコンパイルするための 2 つの方法に出会いましたが、どちらもうまくいきませんでした。
アプローチ 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 $@
次に、大量の未定義の参照を取得します
/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
この build.xml ファイルをどこで入手できるかわかりません。Hadoop のインストール フォルダーに 1 つ見つかりましたが、それは正しいものではないと思います。
これらのアプローチのいずれかで運が良かった人がいる場合は、コメントをいただければ幸いです。