Ошибка задания карты HADOOP: протокол не указан

Я использую CDH4 и пытаюсь получить доступ к графическому процессору из метода cleanup () класса mapper, используя JOCL. (Примечание: мой нормальный код (без уменьшения карты) прекрасно работает на GPU).

Когда я выполняю свой код уменьшения карты, он выдает ошибку (указано ниже).

attempt_201309171647_0021_m_000000_1: No protocol specified
attempt_201309171647_0021_m_000000_1: No protocol specified
13/09/20 18:03:01 INFO mapred.JobClient: Task Id : attempt_201309171647_0021_m_000000_2, Status : FAILED
org.jocl.CLException: CL_DEVICE_NOT_FOUND
    at org.jocl.CL.checkResult(CL.java:569)
    at org.jocl.CL.clGetDeviceIDs(CL.java:2239)
    at com.testMR.jocl.WordCountMapper.cleanup(WordCountMapper.java:106)
    at org.apache.hadoop.mapreduce.Mapper.run(Mapper.java:142)
    at org.apache.hadoop.mapred.MapTask.runNewMapper(MapTask.java:672)
    at org.apache.hadoop.mapred.MapTask.run(MapTask.java:330)
    at org.apache.hadoop.mapred.Child$4.run(Child.java:268)
    at java.security.AccessController.doPrivileged(Native Method)
    at javax.security.auth.Subject.doAs(Subject.java:396)
    at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1408)
    at org.apache.hadoop.mapred.Child.main(Child.java:262)
******************************************************************************

Каждая задача карты выдает ошибку "Протокол не указан". что это значит? Какие протоколы используются в классе картографа?

С уважением

1 ответ

Возникла проблема с графическим устройством ОС.

Мы решили это:-)

У нас была проблема с кодами AMD OpenCL, работающими на Hadoop. У кода MapReduce не было доступа к графическим картам. Для использования вычислительного ресурса GPU требовались сервисы GUI, предоставляемые X-сервером.

Из того, что я понимаю, коды AMD OpenCL (для пользователей, отличных от root) не могут быть запущены без доступа к X-серверу ( http://en.wikipedia.org/wiki/X_Window_System)

Согласно этой теме http://devgurus.amd.com/thread/160838 AMD работает над тем, чтобы заставить OpenCL работать без X-сервера.

Решение, которое я нашел для получения кодов OpenCL для запуска на Hadoop, адаптировано из этого потока http://devgurus.amd.com/message/1284840 котором предлагаются шаги, чтобы заставить коды OpenCL работать через логин ssh без графического интерфейса.

Ниже приведены шаги, которые я выполнил:

  1. Отредактируйте пользовательскую оболочку 'lightdm' с помощью команды 'chsh lightdm' и установите для нее значение / bin / bash

    $sudo chsh lightdm
    

    когда появится запрос, введите: / bin / bash

  2. Откройте /etc/rc.local и добавьте следующую строку перед "выходом 0".

    su -l lightdm -c "sleep 30 ; export DISPLAY=:0 ; xhost +local:"
    
  3. Создайте файл /etc/profile.d/compute.sh и добавьте в него следующее (и выполните 'chmod 755 /etc/profile.d/compute.sh'):

    #!/bin/sh
    
    export COMPUTE=:0
    
    #export DISPLAY=:0
    
    #export GPU_MAX_ALLOC_PRCENT=100
    
    #export GPU_MAX_HEAP_SIZE=100
    
    if [ ! -z "$DISPLAY" ]; then
    
        xhost +local:
    
    fi
    
  4. Закомментированные записи выше предназначены для тестирования других вещей, если эта установка не работает, но у нас она работает

  5. Дайте разрешения для вышеуказанного скрипта

    $sudo chmod 755 /etc/profile.d/compute.sh
    
  6. Настройка X сбрасывается, если вы входите / выходите из lightdm, поэтому в /etc/lightdm/lightdm.conf было добавлено следующее

    greeter-show-manual-login=true
    
    greeter-setup-script=/etc/profile.d/compute.sh
    
    session-setup-script=/etc/profile.d/compute.sh
    
  7. Перезагрузите систему, чтобы переменные среды были установлены для всех пользователей (включая mapred), теперь мы можем запускать коды OpenCL из Hadoop

Другие вопросы по тегам