Я установил hadoop 2.5.2 в CentOS VM. Я новичок в hadoop и пытаюсь выполнить код c++ в hadoop 2.x на основе учебников
Я вижу, что в версиях Hadoop 2.x нет папки (HADOOP_INSTALL)/c++/$(PLATFORM)/
. Я вижу, что есть в $(HADOOP_INSTALL)/include
и библиотеки, таких как hadoopipes.a
разделе $HADOOP_INSTALL/lib/native/libhadooppipes.a
и т.д. Я $HADOOP_INSTALL/lib/native/libhadooppipes.a
свой make файл следующим образом:
CC = g++
HADOOP_INSTALL = /usr/local/hadoop
CPPFLAGS = -m32 -I$(HADOOP_INSTALL)/include
wordcount: WordCount.cpp
$(CC) $(CPPFLAGS) $< -Wall -L$(HADOOP_INSTALL)/lib/native -lhadooppipes \
-lhadooputils -lpthread -g -O2 -o $@
and changed in code ( rest of code is same as in the link above )
#include "Pipes.hh"
#include "TemplateFactory.hh"
#include "StringUtils.hh"
when I compile I get
$ make wordcount
g++ -m32 -I/usr/local/hadoop/include WordCount.cpp -Wall -L/usr/local/hadoop/lib/native -lhadooppipes \
-lhadooputils -lpthread -g -O2 -o wordcount
/usr/bin/ld: skipping incompatible /usr/local/hadoop/lib/native/libhadooppipes.a when searching for -lhadooppipes
/usr/bin/ld: cannot find -lhadooppipes
collect2: ld returned 1 exit status
Может ли кто-нибудь дать указатели относительно того, как скомпилировать c++ на hadoop 2.x. (Я могу выполнить программу c++ в hadoop 1.x. Что мне интересно, как выполнить c++ программу с использованием hadoop-труб в hadoop 2.x) Спасибо заранее
Вопрос:
Как скомпилировать 32-битный двоичный файл, связав его с архивом hadoop (формат файла elf64-x86-64: i386: x86-64).
Ответ. Для этого вам нужен multilib. Если он уже установлен на Ubuntu 14.04 или в Arch Linux, вам придется включить 32-разрядные приложения в 64-разрядной системе.
Например, как говорит этот источник -
Включение репозитория multilib позволяет пользователю запускать и создавать 32-разрядные приложения на 64-разрядных установках Arch Linux. multilib создает каталог, содержащий 32-битные библиотеки наборов инструкций внутри /usr/lib32/, которым могут понадобиться 32-битные двоичные приложения при их выполнении.
В противном случае вам необходимо установить multilib -
sudo apt-get install gcc-multilib
а также
sudo apt-get install ia32-libs-dev
Эта ссылка также может помочь. И Google больше о поддержке Multilib.