Запуск задания Hadoop MapReduce через Python без PuTTy / SSH

Я запускаю задания Hadoop MapReduce, войдя в SSH через PuTTy, который требует, чтобы я ввел имя хоста / IP-адрес, имя пользователя и пароль в PuTTY, чтобы получить окно командной строки SSH. Однажды в окне консоли SSH я предоставляю соответствующие команды MR, такие как:

hadoop jar /usr/lib/hadoop-0.20-mapreduce/contrib/streaming/hadoop-streaming-2.0.0-mr1-cdh4.0.1.jar -file /nfs_home/appers/user1/mapper.py -file / nfs_home / appers /user1/reducer.py -mapper '/usr/lib/python_2.7.3/bin/python mapper.py' -reducer '/usr/lib/python_2.7.3/bin/python reducer.py' -input / ccexp / data / test_xml / 0901282-510179094535002-oozie-oozi-W / extractOut / / .xml -output / user / ccexptest / output / user1 / MRoutput

То, что я хотел бы сделать, это использовать Python для изменения этого неуклюжего процесса, чтобы я мог запустить задание MapReduce из сценария Python и избежать необходимости входа в SSH через PuTTy.

Может ли это быть сделано, и если да, может кто-нибудь покажет мне, как?

One Solution collect form web for “Запуск задания Hadoop MapReduce через Python без PuTTy / SSH”

Я решил это со следующим скриптом:

import paramiko # Define connection info host_ip = 'xx.xx.xx.xx' user = 'xxxxxxxx' pw = 'xxxxxxxx' # Paths input_loc = '/nfs_home/appers/extracts/*/*.xml' output_loc = '/user/lcmsprod/output/cnielsen/' python_path = "/usr/lib/python_2.7.3/bin/python" hdfs_home = '/nfs_home/appers/cnielsen/' output_log = r'C:\Users\cnielsen\Desktop\MR_Test\MRtest011316_0.txt' # File names xml_lookup_file = 'product_lookups.xml' mapper = 'Mapper.py' reducer = 'Reducer.py' helper_script = 'Process.py' product_name = 'test1' output_ref = 'test65' # ---------------------------------------------------- def buildMRcommand(product_name): space = " " mr_command_list = [ 'hadoop', 'jar', '/share/hadoop/tools/lib/hadoop-streaming.jar', '-files', hdfs_home+xml_lookup_file, '-file', hdfs_home+mapper, '-file', hdfs_home+reducer, '-mapper', "'"+python_path, mapper, product_name+"'", '-file', hdfs_home+helper_script, '-reducer', "'"+python_path, reducer+"'", '-input', input_loc, '-output', output_loc+output_ref] MR_command = space.join(mr_command_list) print MR_command return MR_command # ---------------------------------------------------- def unbuffered_lines(f): line_buf = "" while not f.channel.exit_status_ready(): line_buf += f.read(1) if line_buf.endswith('\n'): yield line_buf line_buf = '' # ---------------------------------------------------- client = paramiko.SSHClient() client.set_missing_host_key_policy(paramiko.AutoAddPolicy()) client.connect(host_ip, username=user, password=pw) # Build Commands list_dir = "ls "+hdfs_home+" -l" getmerge = "hadoop fs -getmerge "+output_loc+output_ref+" "+hdfs_home+"test_011216_0.txt" # Run Command stdin, stdout, stderr = client.exec_command(list_dir) ##stdin, stdout, stderr = client.exec_command(buildMRcommand(product_name)) ##stdin, stdout, stderr = client.exec_command(getmerge) print "Executing command..." writer = open(output_log, 'w') for l in unbuffered_lines(stderr): e = '[stderr] ' + l print '[stderr] ' + l.strip('\n') writer.write(e) for line in stdout: r = '[stdout]' + line print '[stdout]' + line.strip('\n') writer.write(r) client.close() writer.close() 
  • Python + SSH Password auth (нет внешних библиотек или общедоступных / закрытых ключей)?
  • Автоматизация подключения ssh и выполнение программы с помощью Python's Paramiko
  • Соединение SSH с Python 3.0
  • Как включить закрытый ключ в paramiko после извлечения из строки?
  • Запуск команды Судо с парамико
  • pxssh бросает конец файла (EOF). Исключение исключения в стиле исключения
  • Есть ли простой способ избавиться от ненужных значений, которые появляются, когда вы используете SSH с помощью библиотеки Python в Paramiko и извлекаете вывод из CLI удаленной машины?
  • Создание нескольких соединений SSH за один раз с помощью Paramiko
  •  
    Interesting Posts for Van-Lav

    Как сделать еще прогресс в python?

    Как получить экземпляр с помощью метода экземпляра?

    Как преобразовать столбец с dtype в качестве объекта в строку в Pandas Dataframe

    Как использовать Selenium's wait?

    Присвоить значение подмножеству строк в кадре данных Pandas

    Python numpy recarray: Можно ли получить представление в разных полях, используя арифметику указателя?

    Как изменить размер шрифта оси в графике matplotlib при рендеринге с использованием Latex?

    Колба разбитая труба с запросами

    Зависит от репозитория git в setup.py

    numpy undefined symbol: PyFPE_jbuf

    BeatifulSoup4 get_text все еще имеет javascript

    Как получить весь источник веб-страницы с помощью selenium-webdriver в python

    СинтаксисError: недействительный синтаксис (очень простой …)

    Как проверить, находится ли значение float в определенном диапазоне и имеет ли заданное число десятичных цифр?

    Где сохранить мои собственные сценарии, чтобы мои скрипты python могли получить доступ к модулю в каталоге по умолчанию?

    Python - лучший язык программирования в мире.