Команда Hadoop для запуска сценария bash в кластере Hadoop

У меня есть сценарий оболочки (count.sh), который подсчитывает количество строк в файле. Этот сценарий был скопирован в hdfs, и в настоящее время я использую рабочий процесс Oozie для выполнения этого сценария.

Однако мне было интересно, есть ли способ выполнить этот сценарий оболочки из командной строки.

Ex:

В Юниксе: [myuser@myserver ~]$./count.sh

Эквивалентно этому, когда count.sh находится в расположении кластера Hadoop '/user/cloudera/myscripts/count.sh'.

Я прочитал эту команду Hadoop для запуска сценария bash в кластере hadoop, но до сих пор не понял.


person Ash    schedule 04.04.2018    source источник


Ответы (3)


То, что вы ищете, называется Hadoop streaming.

Вы можете посмотреть официальную документацию Hadoop Streaming, чтобы узнать подробнее или посмотрите Написание программы Hadoop MapReduce В Python (вместо python вставьте свой bash-скрипт), чтобы понять, как его использовать.

person tk421    schedule 04.04.2018

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

Как сказала Камилла, но это также работает с параметрами, например, если вы используете bash.

hdfs dfs -cat /path/file | exec bash -s param1 param2 param3 param4

Собрав файл с cat, вы можете запустить скрипт как bash-файл с execute. -s включает параметры.

person Lars Gustafsson    schedule 23.07.2019

hadoop fs -cat /path/count.sh|exec sh

person Camille    schedule 27.06.2018
comment
Хотя этот фрагмент кода может решить вопрос, включение объяснения действительно помогает улучшить качество вашего поста. Помните, что вы отвечаете на вопрос для будущих читателей, и эти люди могут не знать причин вашего предложения кода. Также старайтесь не перегружать свой код пояснительными комментариями, это снижает читабельность как кода, так и пояснений! - person Filnor; 27.06.2018
comment
Это работает локально, а не в YARN - person OneCricketeer; 06.02.2020