2015-02-28 4 views
0

Этап 1: Я установил Hadoop 2.6.0 на Ubuntu 14.04 64bit, я начал его в псевдораспределенном режиме, и я запустил образец программы, которую они provide. Все здесь хорошо.Перекомпилируйте Hadoop 2.5.1 родные библиотеки до 32 бит

Этап 2: Я установил Hadoop 2.5.1 на 3 компьютера, которые запускают Ubuntu 10.04 32bit. Я начал HDFS и YARN, я вижу их в веб-графическом интерфейсе. Но при попытке скомпилировать такую ​​же тестовую программу я получаю это:

gcc test.c -I$HADOOP_HDFS_HOME/include -L/usr/lib/java/jdk1.7.0_71/jre/lib/amd64/server/ -L$HADOOP_HDFS_HOME/lib/native -lhdfs -ljvm -o test 
/usr/bin/ld: skipping incompatible /usr/local/hadoop/lib/native/libhdfs.so when searching for -lhdfs 
/usr/bin/ld: skipping incompatible /usr/local/hadoop/lib/native/libhdfs.a when searching for -lhdfs 
/usr/bin/ld: cannot find -lhdfs 
collect2: ld returned 1 exit status 

Теперь, когда я file libhdfs.so.0.0.0, я получаю:

libhdfs.so.0.0.0: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, not stripped 

Таким образом, нативные библиотеки 64-разрядные и моя ОС 32bit.

Вопрос: Нужно ли перекомпилировать весь Hadoop из источника или я могу только перекомпилировать родные библиотеки и заменить их в существующей установке? Что является самым коротким путем?

Просьба представить информацию о перекомпиляции.

Edit:

Я составил для 32-битной на 64-битную моей машине, я экспортироваться CLFAGS = -m32, но у меня была эта ошибка:

[exec] /usr/lib/jvm/java-8-oracle/jre/lib/amd64/server/libjvm.so: error adding symbols: File in wrong format 
    [exec] collect2: error: ld returned 1 exit status 
    [exec] make[2]: *** [target/usr/local/lib/libhdfs.so.0.0.0] Error 1 
    [exec] make[1]: *** [CMakeFiles/hdfs.dir/all] Error 2 

То, что я сделал дальше было вручную установить и настроить альтернативы обновлений для java8 JDK 32bit.

У меня была проблема с libfuse-dev, которую я удалил. Поскольку это не было обязательным.

После этого я побежал: mvn package -Pnative -DskipTests -Dtar

и нашел здесь LIBS: hadoop-hdfs-project/hadoop-hdfs/target/native/target/usr/local/lib:

libhdfs.a libhdfs.so libhdfs.so.0.0.0 

ответ

0

Последние тарболах Hadoop только кажется, корабль с 64-битными библиотеками. Вы можете скомпилировать их самостоятельно, хотя я сам не тестировал это. Вы должны скачать архив с исходными кодами на Hadoop и установить следующие пакеты:

  • GCC (или другой компилятор Си)
  • GNU Autotools (Autoconf, Automake, Libtool)
  • Zlib DEV пакет
  • OpenSSL DEV пакет
  • Maven

После этого будет установлена, вы можете использовать стандартный Hadoop POM.XML-файл, содержащийся в исходном тарболла компилировать родной библиотеки:

$ mvn package -Pdist,native -DskipTests -Dtar 

библиотеки могут быть найдены в:

$ hadoop-dist/target/hadoop-2.6.0/lib/native 

Параметр/Hadoop сценарий бен обеспечивает родной библиотеки Hadoop находится на пути к классам через системное свойство -Djava.library.path. Вы можете изменить сценарий bin/hadoop, чтобы указать на ваши недавно скомпилированные библиотеки. Для получения дополнительной информации обязательно проверьте документацию, доступную here.

+0

У меня есть ошибка, я пытаюсь установить java8 для i386, но не повезло .. Я попробую еще раз вручную, если это не сработает ... Мне нужно будет создать виртуальную машину для 32bit , Он работает на 64 бит. – AlexandruC

+0

java 8 еще не поддерживается hadoop. Используйте java 7, так как список рекомендуемых java-версий выглядит [здесь] (http://wiki.apache.org/hadoop/HadoopJavaVersions) –

 Смежные вопросы

  • Нет связанных вопросов^_^