使用Paramiko库运行Spark作业

时间:2019-07-11 11:32:58

标签: python apache-spark paramiko

我正在处理要求我并行运行Spark作业的管道。我在python中建立了一个调度程序,负责执行不同作业(配置单元,外壳程序,storedproc)。我正在使用Paramiko库在群集上远程运行所有shell命令。除了spark-submit之外,每个shell命令都成功运行。 spark-submit命令将永远运行。当我手动运行同一火花提交作业(通过腻子连接到集群并运行)时,它运行良好。

我还尝试将spark-submit包装在shell脚本中,并使用paramiko运行shell脚本,但是结果是相同的。

import paramiko

ssh=paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect("host_name",port,username="username",password="password")

start_time=datetime.datetime.now()

print("START TIME: {}".format(start_time))

print("executing spark command")

stdin,stdout,stderr=ssh.exec_command("spark-submit some_script.py")

if stdout.channel.recv_exit_status() == 0:
    print("SUCCESS")
else:
    print("FAILED")

end_time=datetime.datetime.now()    

print("START TIME: {}, END TIME: {}".format(start_time,end_time))

ssh.close()  
  

注意:我们无权使用Cron这样的调度程序进行调度,并且spark-submit依赖于另一个配置单元脚本执行。因此,我建立了一个调度程序来处理所有这一切,并且它成功完成了。

Paramiko日志:

  

DEB [20190712-16:53:30.819] thr = 1 paramiko.transport:userauth正常   INF [20190712-16:53:32.703] thr = 1 paramiko.transport:身份验证(键盘交互)成功!   DEB [20190712-16:53:32.704] thr = 2 paramiko.transport:[chan 0]最大数据包输入:32768字节   DEB [20190712-16:53:32.934] thr = 1 paramiko.transport:[chan 0]最大数据包输出:32768字节   DEB [20190712-16:53:32.935] thr = 1 paramiko.transport:Secsh通道0已打开。   DEB [20190712-16:53:33.167] thr = 1 paramiko.transport:[chan 0] Sesch频道0请求正常

简单的LS命令的Paraamiko日志:

  

DEB [20190712-20:30:51.770] thr = 1 paramiko.transport:userauth正常   INF [20190712-20:30:53.329] thr = 1 paramiko.transport:身份验证(键盘交互)成功!   DEB [20190712-20:30:53.330] thr = 2 paramiko.transport:[chan 0]最大数据包输入:32768字节   DEB [20190712-20:30:53.561] thr = 1 paramiko.transport:[chan 0]最大数据包输出:32768字节   DEB [20190712-20:30:53.561] thr = 1 paramiko.transport:Secsh通道0已打开。   DEB [20190712-20:30:53.795] thr = 1 paramiko.transport:[chan 0] Sesch频道0请求正常   DEB [20190712-20:30:53.797] thr = 1 paramiko.transport:[chan 0]已收到EOF(0)   DEB [20190712-20:30:53.798] thr = 1 paramiko.transport:[chan 0]已发送EOF(0)   DEB [20190712-20:30:53.798] thr = 1 paramiko.transport:传输线程中的EOF

代码调试O / P:

  
      
  • 连接到远程服务器
  •   
  • 已成功连接到服务器
  •   
  • 开始时间:2019-07-12 16:53:32.704046
  •   
  • 执行spark命令
  •   

这是一个非常奇怪的问题。任何帮助将不胜感激!

0 个答案:

没有答案