Не удалось найти или загрузить основной класс org.apache.hadoop.hdfs.server.namenode.Namenode

Я знаю, что это было задано раньше, но я не мог понять решение. Я получаю ошибку ниже, когда я пытаюсь запустить hdfs name node -format:

Не удалось найти или загрузить основной класс org.apache.hadoop.hdfs.server.namenode.Namenode

Я выполнил инструкции с этого веб-сайта для установки на моем компьютере centos. Единственное различие заключается в том, что я установил с помощью root вместо hadoopuser, как указано в ссылке.

Bashrc

# User specific aliases and functions

export JAVA_HOME=/usr/lib/jvm/jre-1.7.0-openjdk.x86_64/
export HADOOP_INSTALL=/usr/local/hadoop
export HADOOP_MAPRED_HOME=$HADOOP_INSTALL
export HADOOP_COMMON_HOME=$HADOOP_INSTALL
export HADOOP_HDFS_HOME=$HADOOP_INSTALL
export YARN_HOME=$HADOOP_INSTALL
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_INSTALL/lib/native
export PATH=$PATH:$HADOOP_INSTALL/sbin
export PATH=$PATH:$HADOOP_INSTALL/bin

hadoop-env.sh

export JAVA_HOME=/usr/lib/jvm/jre-1.7.0-openjdk.x86_64/

Mapred

<property>
    <name>mapreduce.framework.name</name>
    <value>yarn</value>
</property>

Пряжа-site.xml

<property>
    <name>yarn.nodemanager.aux-services</name>
    <value>mapreduce_shuffle</value>
</property>

ядро-site.xml

<property>
    <name>fs.default.name</name>
    <value>hdfs://localhost:9000</value>
</property>

HDFS-site.xml

<property>
    <name>dfs.replication</name>
    <value>1</value>
</property>

<property>
    <name>dfs.name.dir</name>
    <value>file:///home/hadoopspace/hdfs/namenode</value>
</property>

<property>
    <name>dfs.data.dir</name>
    <value>file:///home/hadoopspace/hdfs/datanode</value>
</property>

Ответ 1

Для тех, у кого по-прежнему возникают проблемы, вам нужно экспортировать переменную среды HADOOP_PREFIX.

Добавьте в свой файл ~/.bashrc следующую строку:

export HADOOP_PREFIX=/path_to_hadoop_location

# for example:
# export HADOOP_PREFIX=/home/mike/hadoop-2.7.1

Затем сделайте . ~/.bashrc в своем терминале и повторите попытку, это устранит ошибку.

Ответ 2

Спасибо dcsesq.

brew установлен hasoop 2.6.0 на Mac OS 10.9.5 (maverick)

Добавьте следующие переменные env в .profile ~/.bash_profile

export HADOOP_HOME=/usr/local/Cellar/hadoop/2.6.0
export HADOOP_PREFIX=$HADOOP_HOME/libexec
export HADOOP_MAPRED_HOME=$HADOOP_PREFIX
export HADOOP_COMMON_HOME=$HADOOP_PREFIX
export HADOOP_HDFS_HOME=$HADOOP_PREFIX
export YARN_HOME=$HADOOP_PREFIX

Источник файла .profile

source ~/.bash_profile

Запустить namenode

hdfs namenode -format

Бум начался, беспокоил меня почти полдня.

Ответ 3

Попробуйте использовать следующую команду для форматирования (без пробела между именем и node и замените команду hdfs на hasoop)

hadoop namenode -format

Ответ 4

Похоже, что когда вы выполняете команду hadoop, не все классы (баночки) включены в ваш путь к классам. В вашем пути к классу отсутствует файл hadoop-hdfs-<version>.jar.

Ответ 5

Я попробовал предложения выше, но у меня все еще была такая же ошибка. Установка HADOOP_CLASSPATH, как показано ниже в ~/.bashrc, работала для меня:

export HADOOP_CLASSPATH=$(hadoop classpath):$HADOOP_CLASSPATH

Ответ 6

У меня тоже была эта ошибка. Для меня проблема заключалась в отсутствии файлов, которые не были извлечены во время первоначального процесса распаковки.

Что сработало для меня, я перейду в папку вашего файла .tar.gz и разархивирую его, используя:

tar xvzf <file_name>.tar.gz

Обратите внимание, что это отменяет все ваши сохраненные файлы, поэтому, если вы внесли изменения в любые файлы, лучше было бы создать копию вашей папки Hadoop до разархивирования.

Ответ 7

Я столкнулся с той же проблемой.

перезапустите терминал и попробуйте выполнить команду.

Требуется перезагрузка терминала, чтобы немедленно вносить изменения в переменную пути внутри файла .bashrc

Ответ 8

Добавить

export HADOOP_PREFIX =/путь/в/hadoop/установка/каталог

в конце файла etc/hadoop/hadoop-env.sh в каталоге установки hadoop. Это позволяет jvm находить файлы классов.

Ответ 9

Убедитесь, что ваш путь hdfs правильный, используя which

which hdfs

Ответ 10

Ошибка связана с отсутствием jar файлов hadoop hdfs в classpath hadoop. В терминале введите "hadoop classpath" и проверьте, присутствуют или нет файлы jar hdfs. Если нет, вставьте приведенную ниже строку в .bashrc, сохраните ее и отправьте ее.

export HADOOP_CLASSPATH=new-classpath:$HADOOP_CLASSPATH

Вы можете создать новый путь к классам, добавив местоположение к вашим jar файлам hdfs в конце существующего пути к классам и заменив раздел "new-classpath" своим собственным.

Ответ 11

Для Hadoop v3.1.2 на Windows 7 мне пришлось

  1. Установите Cygwin (согласно инструкции).

  2. Установите следующие переменные окружения, отметив, что это косые черты (/) вместо черных (\):

    HADOOP_HOME=D:/.../hadoop-3.1.2
    
    JAVA_HOME=D:/.../java-1.8.0-openjdk-1.8.0.201-2.b09.redhat.windows.x86_64
    
  3. Снова откройте Cygwin и CD в моем каталоге hadoop - нужно открыть заново, чтобы подобрать новые переменные среды. Не стесняйтесь использовать ~/.bashrc и экспортировать HADOOP_HOME =... и т.д., чтобы сделать это тоже.

  4. Убедитесь, что вы точно набрали следующее:

    ./bin/hdfs.cmd namenode -format

    Это должен быть .cmd, иначе он не будет работать в Windows.

После этого все заработало отлично. Если у вас по-прежнему возникают проблемы, покопайтесь в файле hdfs.cmd и добавьте несколько эхо-вызовов, чтобы распечатать его, особенно рядом с вызовом Java, чтобы точно узнать, что он выполняет.

Ответ 12

проверьте и установите значение HADOOP_PREFIX на $HADOOP