2013-05-21 2 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

그리고 다음 메이크 그런 다음

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

난 단지 당신의 두 번째 방법으로 도움이 될 수 있습니다

당신이 실행되어있는 빌드 파일은 라이센스 및 README 텍스트 파일과 함께, 귀하의 하둡 배포판의 루트에서의 build.xml이다. hadoop-x.y.z 디렉토리로 이동하여 명시된대로 명령을 입력하십시오.

예제 소스 코드가 포함되어 있지 않은 바이너리 배포판과 달리 소스 배포판을 다운로드 한 경우에만 작동합니다. C++ 예제 소스 코드는 src/examples/pipes/impl에 있습니다.

0

이전에는 같은 문제가있었습니다. 한 가지 해결책은 암호화 라이브러리를 연결하는 것입니다. 예를 들어, 컴파일 명령에 -lcrypto을 추가 할 수 있습니다.

HTH 슈민