2015-01-22 2 views
0

Я устанавливаю hadoop-0.20.2 используя докер. У меня есть два файла: один для установки java, а другой - для установки hadoop. Я начинаю услуги, используя команду CMDВозможно ли выполнить CMD в середине файла докеров?

cmd ["path/to/start-all.sh"] 

Теперь я хочу, чтобы написать третью dockerfile, который выполняет пример Map-Reduce работы. Но проблема в том, что

Третий файл докеры зависит от второго файла файла досуга. например:

FROM sec_doc_file 

RUN /bin/hadoop fs -mkdir input 

Для его использования требуются услуги hadoop. Но услуги hadoop будут запущены только после запуска второго файла докеров. Но я хочу запустить его как часть третьего файла докеров, прежде чем запускать работу MR? Является ли это возможным? Если да, укажите пример. Если нет, то какими могут быть другие возможности?

#something like 

From sec_doc_file 

#Start_Service 

RUN /bin/hadoop fs -mkdir input 

#continue_map_reduce_job 

ответ

1

докер изображение используется в качестве основы для нового контейнера является базой для файлов, а не для процессов, как предполагается, будет запущен. Чтобы сделать то, что вы хотите, вам нужно будет запустить процесс (ы), который вам нужен во время доклербинга, и запустить команды для правильной настройки. Каждый RUN создает новый уровень AUFS, но не сохраняет возможные предыдущие запущенные службы. Итак, если вам нужна услуга для выполнения какой-либо настройки во время docker build, вам нужно будет запустить ее в одной строке (конкатенация команд или с помощью специального скрипта). Пример:

FROM Gops/sec_doc_file 
RUN path/to/start-all.sh && /bin/hadoop fs -mkdir input 

Таким образом, для создания HDFS папок и файлов во время грузчика сборки, вы должны были бы запустить HDFS демон и выполнить действие, которое в той же RUN команды:

RUN /etc/hadoop/hadoop-env.sh &&\ 
    /opt/hadoop/sbin/start-dfs.sh &&\ 
    /opt/hadoop/bin/hdfs dfs -mkdir input 
+0

Так что я не могу разделите его на два файла докеров? что, если мне нужно добавить n количество строк для работы с уменьшением карты? –

+0

Вы можете отделить его в файлах докеров, но каждый раз, когда вы запускаете команду, требующую запуска службы для выполнения другой команды, вам нужно выполнить команду, отличную от команды, в той же строке. Изменения, которые вы выполняете (т. Е .: создание файлов в HDFS), будут сохраняться между слоями и док-файлами, но демоны не будут работать между ними. О работе с MR, предполагается ли она запускаться во время сборки докеров? –

+0

Я бы запустил его в скрипте, запущенном в CMD-команде. –

 Смежные вопросы

  • Нет связанных вопросов^_^