Ответ 1
Поскольку вы, вероятно, уже подозреваете, это будет сложно выполнить из-за требования к времени выполнения для MATLAB. У меня был аналогичный опыт (необходимость распределять библиотеки времени исполнения) при попытке запустить код MATLAB через Condor.
Что касается параметров, которые вы перечисляете, вариант № 1 будет работать лучше всего. Кроме того, вы, вероятно, не будете доступны, чтобы избежать работы с Linux.
Однако, если вы не хотите потерять удобство, предоставляемое программным обеспечением более высокого уровня (например, MATLAB, Octave, Scilab и др.), Вы можете попробовать потоковое воспроизведение Hadoop в сочетании с исполняемыми сценариями Octave.
Потоковая передача Hadoop не заботится о природе исполняемого файла (будь то исполняемый скрипт или исполняемый файл, в соответствии с этим (http://hadoop.apache.org/common/docs/r0.15.2/streaming.html)),
Все, что требуется, заключается в том, что ему предоставляется "исполняемый файл", который, кроме того, может: a) читать из stdin, b) отправлять вывод в stdout.
Программы GNU Octave могут быть превращены в исполняемые сценарии (в Linux) с возможностью чтения из stdin и отправки вывода на stdout (http://www.gnu.org/software/octave/doc/interpreter/Executable-Octave-Programs.html).
В качестве простого примера рассмотрим следующее:
Создайте файл (например, "al.oct") со следующим содержимым:
#!/bin/octave -qf (Please note, in my installation i had to use "#!/etc/alternatives/octave -qf")
Q = fread(stdin); #Standard Octave / MATLAB code from here on
disp(Q);
Теперь из командной строки выведите следующую команду:
chmod +x al.oct
Теперь al.oct является исполняемым файлом... Вы можете выполнить его с помощью "./al.oct". Чтобы увидеть, где находится stdin, stdout (чтобы вы могли использовать его с Hadoop), вы можете попробовать следующее:
>>cat al.oct|./al.oct|sort
Или, другими словами, "cat" файл al.oct, вывести его вывод в исполняемый скрипт al.oct, а затем передать вывод al.oct в утилиту сортировки (это просто пример, мы могли бы иметь " cat ", но поскольку мы знаем, что al.oct - простой текстовый файл, мы просто используем это).
Разумеется, Octave не поддерживает все, что ваш код MATLAB пытается вызвать, но это может быть альтернативный способ использования потоковой передачи Hadoop без потери удобства/мощности кода более высокого уровня.