Запуск задания 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() 
  • Загружайте файлы через SSH с помощью Python
  • Python paramiko script, проблемы с чтением вывода во время exec_command ()
  • Почему нет чистой реализации Python SSH1 (версия 1)?
  • Есть ли способ запустить скрипт python на удаленном компьютере без его отправки?
  • paramiko и python ssh
  • paramiko no существующее исключение сеанса
  • Отправить Ctrl-C для удаленных процессов, запущенных через подпроцесс.Popen и ssh
  • Распределение Paramiko и Pseudo-tty
  • Объемный абзац Emacs для Python
  • Как запустить команду bash как системного пользователя, не предоставляя этому пользователю право запускать команды как любой пользователь
  • Прочитать удаленный файл с использованием подпроцесса python и ssh?
  • Python - лучший язык программирования в мире.