Пытаюсь использовать Fuse для монтирования HDFS.Не могу скомпилировать libhdfs - PullRequest
1 голос
/ 15 июля 2011

Я пытаюсь скомпилировать libhdfs (нативная общая библиотека, которая позволяет внешним приложениям взаимодействовать с hdfs).Это один из немногих шагов, которые я должен предпринять, чтобы смонтировать hdf-файлы Hadoop с помощью Fuse.

Компиляция, кажется, идет хорошо, но заканчивается "BUILD FAILED" и следующим описанием проблемы -

commons-logging # commons-logging; 1.0.4: конфигурация не найдена в commons-logging # commons-logging; 1.0.4: 'master'.Требуется из org.apache.hadoop # Hadoop; работает @ btsotbal800 commons-logging

log4j # log4j; 1.2.15: конфигурация не найдена в log4j # log4j; 1.2.15: 'master'.Это требовалось от org.apache.hadoop # Hadoop; working @ btsotbal800 log4j

Теперь у меня есть пара вопросов по этому поводу, потому что книга, которую я использую для этого, не входит ни в какуюподробности о том, чем на самом деле являются эти вещи.

  1. Являются ли библиотеки общего пользования и log4j, которые использует Hadoop?
  2. Кажется, что эти библиотеки живут в $ HADOOP_HOME / lib.Это файлы JAR, хотя.Должен ли я извлечь их, попытаться изменить некоторые конфигурации, а затем упаковать их обратно в банку?
  3. Что означает «мастер» в приведенных выше ошибках?Существуют ли разные версии библиотек?

Заранее благодарим за ЛЮБОЕ понимание, которое вы можете предоставить.

1 Ответ

4 голосов
/ 15 октября 2012

Если вы используете cloudera hadoop (cdh3u2), вам не нужно создавать проект fuse.

вы можете найти двоичный файл (libhdfs.so *) внутри каталога $ HADOOP_HOME / c ++ / lib

Перед монтированием fuse обновите "$ HADOOP_HOME / contrib / fuse-dfs / src / fuse_dfs_wrapper.sh" следующим образом

HADOOP_HOME / contrib / fuse-dfs / src / fuse_dfs_wrapper.sh

#!/bin/bash

for f in ${HADOOP_HOME}/hadoop*.jar ; do
   export CLASSPATH=$CLASSPATH:$f
done

for f in ${HADOOP_HOME}/lib/*.jar ; do
   export CLASSPATH=$CLASSPATH:$f
done

export PATH=$HADOOP_HOME/contrib/fuse-dfs:$PATH
export LD_LIBRARY_PATH=$HADOOP_HOME/c++/lib:/usr/lib/jvm/java-6-sun-1.6.0.26/jre/lib/amd64/server/
fuse_dfs $@

LD_LIBRARY_PATH содержит список каталогов здесь
"$ HADOOP_HOME / c ++ / lib" содержит libhdfs.so и
"/ usr / lib / jvm / java-6-sun-1.6.0.26 / jre / lib / amd64 / server / "содержит libjvm.so \# modify /usr/lib/jvm/java-6-sun-1.6.0.26/jre/lib/amd64/server/ в качестве java_home

Используйте следующую команду для монтирования hdfs

fuse_dfs_wrapper.sh dfs://localhost:9000/ /home/510600/mount1

для размонтирования используйтеследующая команда

fusermount  -u /home/510600/mount1 

Я тестировал предохранитель только в псевдо-режиме hadoop, а не в кластерном режиме

...