Выполнение кода C ++ в Hadoop 2.x

0

Я установил 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) Спасибо заранее

  • 0
    «... пропуск несовместим» - в основном выводится, когда вы пытаетесь связать 32-битные библиотеки в 64-битной системе. Если он действительно 64-битный, попробуйте «-m64» вместо «-m32». А для сборки 32-битного бинарного файла вам необходимо: установить sudo apt-get установить gcc-multilib и sudo apt-get установить ia32-libs-dev
  • 0
    Я использую Centos 32-битную версию (i686). Версия g ++ - 32-битный файл # / usr / bin / g ++ / usr / bin / g ++: 32-битный исполняемый файл ELF ELF. Но библиотека hadoop показывает # objdump -f libhadooppipes.a В архиве libhadooppipes.a: HadoopPipes.cc.o: формат файла elf64-x86-64 архитектура: i386: x86-64,
Показать ещё 3 комментария
Теги:
hadoop
mapreduce

1 ответ

0

Вопрос:

Как скомпилировать 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.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню