Не вдалося знайти бінарний вінутіл у бінарному шляху hadoop


108

Я отримую таку помилку під час запуску Namenode для останнього випуску hadoop-2.2. Я не знайшов файл winutils exe в папці bdo hadoop. Я спробував нижче команди

$ bin/hdfs namenode -format
$ sbin/yarn-daemon.sh start resourcemanager

ERROR [main] util.Shell (Shell.java:getWinUtilsPath(303)) - Failed to locate the winutils binary in the hadoop binary path
java.io.IOException: Could not locate executable null\bin\winutils.exe in the Hadoop binaries.
    at org.apache.hadoop.util.Shell.getQualifiedBinPath(Shell.java:278)
    at org.apache.hadoop.util.Shell.getWinUtilsPath(Shell.java:300)
    at org.apache.hadoop.util.Shell.<clinit>(Shell.java:293)
    at org.apache.hadoop.util.StringUtils.<clinit>(StringUtils.java:76)
    at org.apache.hadoop.yarn.server.resourcemanager.ResourceManager.main(ResourceManager.java:863)


Намагаючись позбутися цього повідомлення про помилку, я встановив -Dhadoop.home.dir значуще значення. Тепер я отримую щось на зразок (локальний шлях замінено на ім'я змінної): Не вдалося знайти виконуваний $ {HADOOP_HOME} \ bin \ winutils.exe у бінарних файлах Hadoop. І вгадайте що: Установка змінної не призвела до того, що двійкові дані не з’являться. Також помилка пріоритету помилка, оскільки, здається, додаток продовжується. На моїх очах, це помилка в Hadoop 2.2.0.
Хіран

Існує а (згідно Відкрито сьогодні) JIRA для цього> issues.apache.org/jira/browse/HADOOP-10051
Рене Nyffenegger


1
Будь ласка, прийміть відповідь, надану Прасадом Д. Він надав готові файли для використання; таким чином уникаючи зусиль.
Каушик Леле

Відповіді:


96

Просте рішення: Завантажте його звідси та додайте до$HADOOP_HOME/bin

( Джерело )

ВАЖЛИВА ОНОВЛЕННЯ:

Для hadoop-2.6.0 ви можете завантажити бінарні файли з блогу Titus Barik >> .

Мені не тільки потрібно було вказати HADOOP_HOMEна витягнутий каталог [path], але і надати властивість системи -Djava.library.path=[path]\binдля завантаження нативних ліб (dll).


Це допомагає запустити hdfs, але коли я намагаюся ввести текстовий файл у hdfs, він видає помилку Виняток у потоці "main" java.lang.UnsatisfiedLinkError: org.apache.hadoop.util.NativeCrc32.nativeComputeChunkedSumsBy teArray (II [BI [BIILjava / lang / String; JZ) V
Каушик Леле

Це частково дублює мою відповідь. І завантаження, і джерело - це посилання мого блогу, як зазначено у відповіді.
Abhijit

1
Схоже, це працює і з Hadoop 2.7.3. Або виникне проблема? 1) скачати зі сторінки вище. tar xfvz, який дає розподіл Hadoop 2.6. Потім скопіюйте bin \ winutlis.exe в каталог 2.73 \ bin. Миттєво це працює. Поки - принаймні.
RichMeister

28

Якщо ви зіткнулися з цією проблемою під час запуску автономного локального додатку з Spark (тобто, додавши в проект spark-Assembly-xxx-hadoopx.xxjar або Maven залежність), більш простим рішенням буде поставити winutils.exe (завантажити з тут ) в "C: \ winutil \ Bin". Потім ви можете додати winutils.exe до домашнього каталогу hadoop, додавши до коду наступний рядок:

System.setProperty("hadoop.home.dir", "c:\\\winutil\\\")

Джерело: Натисніть тут


Для мене було достатньо помістити речі з вінутілів hadoop/bin/bin/. Тому просто скопіюйте binпапку winutils у binпапку hadoop . ( HADOOP_HOMEвстановлено в env vars)
holzkohlengrill

+1 У шляху до каталогу є одна занадто велика коса риса, тому я залишаю це для себе:System.setProperty("hadoop.home.dir", "c:\\winutil\\")
emragins

27

Якщо ми візьмемо безпосередньо бінарний дистрибутив Apache Hadoop 2.2.0 випуску і спробуємо запустити його на Microsoft Windows, тоді ми зустрінемося з помилкою util.Shell: Не вдалося знайти бінарний winutils у бінарному шляху hadoop.

Бінарний розподіл випуску Apache Hadoop 2.2.0 не містить деяких нативних компонентів Windows (наприклад, winutils.exe, hadoop.dll тощо). Вони потрібні (не обов’язково) для запуску Hadoop в Windows.

Отже, вам потрібно створити вікно-початковий бінарний розподіл hadoop з вихідних кодів за файлом "BUILD.txt", розташованим всередині вихідного розподілу hadoop. Ви можете дотримуватися наступних публікацій, а також покрокове керівництво із знімком екрана

Створення, встановлення, налаштування та запуск Apache Hadoop 2.2.0 в операційній системі Microsoft Windows

Помилка util.Shell: Не вдалося знайти бінарні winutils у бінарному шляху hadoop


2
Привіт Абхіджіт. Ви дотримувались власних вказівок? Hadoop не підтримується у Windows. Насправді він підтримується лише в певних версіях Windows Server. Це дуже паршиво Microsoft та HortonWorks.
javadba

2
Це було понад два роки тому і дуже (дуже!) Було правдою в той час. Я перевірив безпосередньо з інженерами Hortonworks лише два тижні до конференції.
javadba

18

Заява java.io.IOException: Не вдалося знайти виконаний null \ bin \ winutils.exe

пояснює, що нуль отримується при розширенні або заміні змінної середовища. Якщо ви бачите Джерело в Shell.Java у загальному пакеті, ви виявите, що змінна HADOOP_HOME не встановлюється, і ви отримуєте null замість цього, а значить, і помилка.

Отже, для цього потрібно правильно встановити HADOOP_HOME або змінну властивість hadoop.home.dir.

Сподіваюся, це допомагає.

Спасибі, Камлешвар.


1
На якому конфігураційному файлі нам потрібно встановити властивість hadoop.home.dir (наприклад, hdfs-site.xml, core-site.xml)?
Тушар Сарде

4
System.setProperty ("hadoop.home.dir", "C: \\ winutil \\"); посилання: stackoverflow.com/a/33610936/3110474
Хіманшу Бхандарі

Якщо ви використовуєте Windows, переконайтеся, що ви використовуєте подвійні нахили під час написання будь-якого шляху як значення.
rishirich

12

Winutils.exe використовується для запуску команд оболонки для SPARK. Коли вам потрібно запустити Spark, не встановлюючи Hadoop, вам потрібен цей файл.

Кроки такі:

  1. Завантажте winutils.exe з наступного місця для hadoop 2.7.1 https://github.com/steveloughran/winutils/tree/master/hadoop-2.7.1/bin [ПРИМІТКА: Якщо ви використовуєте окрему версію hadoop, завантажте її winutils з відповідної папки версії hadoop у GITHUB із зазначеного вище місця.]

  2. Тепер створіть папку "winutils" на C: \ диску. Тепер створіть папку "бін" всередині папки "winutils" і скопіюйте winutils.exe у цю папку. Таким чином, місце winutils.exe буде C: \ winutils \ bin \ winutils.exe

  3. Тепер відкрийте змінну середовища і встановіть HADOOP_HOME = C: \ winutils [ПРИМІТКА: Будь ласка, не додайте \ bin в HADOOP_HOME і не потрібно встановлювати HADOOP_HOME на шляху]

Вашу проблему потрібно вирішити !!


11

Я просто зіткнувся з цим питанням під час роботи з Eclipse. У моєму випадку у мене була завантажена правильна версія Hadoop (hadoop-2.5.0-cdh5.3.0.tgz), я витяг вміст і розмістив його безпосередньо на своєму диску C. Тоді я пішов до

Затемнення-> Конфігурації налагодження / запуску -> Навколишнє середовище (вкладка) -> та додано

змінна: HADOOP_HOME

Значення: C: \ hadoop-2.5.0-cdh5.3.0



3

У Pyspark, щоб запустити локальну програму іскри, використовуючи Pycharm, використовуйте нижче рядків

os.environ['HADOOP_HOME'] = "C:\\winutils"
print os.environ['HADOOP_HOME']

2

winutils.exe потрібні для hadoop для виконання команд, пов'язаних з hadoop. завантажте zip-файл hadoop-common-2.2.0. winutils.exe можна знайти в папці bin. Витягніть zip-файл і скопіюйте його в локальну папку hadoop / bin.


2

Я зіткнувся з тією ж проблемою. Видалення bin\зі шляху HADOOP_HOME вирішило це для мене. Шлях для змінної HADOOP_HOME повинен виглядати приблизно так.

C:\dev\hadoop2.6\

Може знадобитися перезапуск системи. У моєму випадку перезавантаження IDE було достатньо.


2

Установіть змінну HADOOP_HOME у Windows, щоб вирішити проблему.

Ви можете знайти відповідь у org/apache/hadoop/hadoop-common/2.2.0/hadoop-common-2.2.0-sources.jar!/org/apache/hadoop/util/Shell.java:

IOException від

  public static final String getQualifiedBinPath(String executable) 
  throws IOException {
    // construct hadoop bin path to the specified executable
    String fullExeName = HADOOP_HOME_DIR + File.separator + "bin" 
      + File.separator + executable;
    File exeFile = new File(fullExeName);
    if (!exeFile.exists()) {
      throw new IOException("Could not locate executable " + fullExeName
        + " in the Hadoop binaries.");
    }
    return exeFile.getCanonicalPath();
  }

HADOOP_HOME_DIR від

// first check the Dflag hadoop.home.dir with JVM scope
String home = System.getProperty("hadoop.home.dir");
// fall back to the system/user-global env variable
if (home == null) {
  home = System.getenv("HADOOP_HOME");
}


1

Я отримував те саме питання у Windows. Я це виправив

  • Завантаження hadoop-common-2.2.0-bin-master із посилання .
  • Створіть змінну користувача HADOOP_HOME у змінній Environment і призначте шлях до каталогу hadoop-common bin як значення.
  • Ви можете перевірити це, запустивши hadoop в cmd.
  • Перезавантажте IDE і запустіть його.

1

Завантажте потрібну версію папки hadoop (скажіть, якщо ви встановлюєте іскру в Windows, то версію hadoop, для якої створена ваша іскра), з цього посилання, як zip.

Витягніть блискавку до потрібного каталогу. Потрібно мати каталог форми hadoop\bin(явно створити таку hadoop\binструктуру каталогів, якщо ви хочете) з binвмістом усіх файлів, що містяться в binпапці завантаженого hadoop. Він буде містити багато файлів, таких як hdfs.dll, hadoop.dll тощо, крім winutil.exe.

Тепер створіть змінну середовища HADOOP_HOME та встановіть її <path-to-hadoop-folder>\hadoop. Потім додайте ;%HADOOP_HOME%\bin; до PATHзмінної середовища.

Відкрийте "новий командний рядок" і спробуйте відновити свою команду.


це працювало для мене, і альтернатива з HADOOP_HOME, що вказує на каталог бін (а не на батьківське), не робила.
philwalk

0

Я використовував версії "hbase-1.3.0" та "hadoop-2.7.3". Встановлення змінної середовища HADOOP_HOME та копіювання файлу 'winutils.exe' у папку HADOOP_HOME / bin вирішує проблему на ОС Windows. Увага, встановіть середовище HADOOP_HOME в папку інсталяції hadoop (/ папка bin не потрібна для цих версій). Крім того, я вважав за краще використовувати інструмент крос-платформи cygwin для врегулювання функціональності Linux Linux (наскільки це можливо), оскільки команда Hbase рекомендує linux / unix env.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.