如何在EMR群集的后台运行定期作业? 我在s3中使用了cron job和application.py的script.sh,并希望使用以下命令运行集群:
aws emr create-cluster
--name "Test cluster"
–-release-label emr-5.12.0
--applications Name=Hive Name=Pig Name=Ganglia Name=Spark
--use-default-roles
--ec2-attributes KeyName=myKey
--instance-type m3.xlarge
--instance-count 3
--steps Type=CUSTOM_JAR,Name=CustomJAR,ActionOnFailure=CONTINUE,
Jar=s3://region.elasticmapreduce/libs/script-runner/script-runner.jar,
Args["s3://mybucket/script-path/script.sh"]
最后,我希望script.sh中的cron作业执行application.py 现在我不明白如何在主节点上安装cron,python文件需要一些库,它们应该安装到。
答案 0 :(得分:0)
默认情况下,crontab安装在linux系统中,您无需手动安装。
要在cron中添加spark作业计划,请按照以下步骤进行操作
crontab -e
在crontab中添加以下行并保存(:w)
*/15 0 * * * /script-path/script.sh
现在,cron将每15分钟安排一次工作。
请参阅此link以了解有关cron。
希望这有帮助。
由于 拉维
答案 1 :(得分:0)
您需要SSH进入主节点,然后从那里执行crontab设置,而不是在本地计算机上执行:
https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-connect-master-node-ssh.html
使用SSH连接到主节点
Secure Shell(SSH)是一种可用于创建的网络协议 安全连接到远程计算机。建立连接后 本地计算机上的终端的行为就像它在运行时一样 远程计算机。您在本地发出的命令在远程上运行 计算机,并从远程计算机输出命令 你的终端窗口。
当您使用SSH与AWS时,您正在连接到EC2实例, 这是在云中运行的虚拟服务器。在工作时 Amazon EMR,SSH最常见的用途是连接到EC2 充当集群主节点的实例。
使用SSH连接到主节点,您可以使用 监视并与群集交互。您可以发出Linux命令 主节点,以交互方式运行Hive和Pig等应用程序, 浏览目录,读取日志文件等。你也可以创建一个 SSH连接中的隧道,以查看托管在其上的Web界面 主节点。有关更多信息,请参阅查看托管的Web界面 亚马逊EMR集群。