Этап 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
У меня есть ошибка, я пытаюсь установить java8 для i386, но не повезло .. Я попробую еще раз вручную, если это не сработает ... Мне нужно будет создать виртуальную машину для 32bit , Он работает на 64 бит. – AlexandruC
java 8 еще не поддерживается hadoop. Используйте java 7, так как список рекомендуемых java-версий выглядит [здесь] (http://wiki.apache.org/hadoop/HadoopJavaVersions) –