【问题标题】:AWS Data Pipeline - Task Runner does not stay activeAWS Data Pipeline - Task Runner 不保持活动状态
【发布时间】:2020-05-19 19:14:35
【问题描述】:

我正在尝试在 Amazon Linux EC2 实例 (ami-6869aa05) 上运行任务运行程序以执行 AWS Datapipeline Shell 命令任务。

我已经成功创建了管道,通过 SSH 通过终端连接到实例,安装并启动了 Task Runner,并且能够在第一次激活时成功运行管道。随后的管道作业陷入“等待跑步者”。查看管道的依赖关系时,显示没有设置工作组。

我使用以下 CLI 条目来启动任务运行程序。 ** s3 存储桶和文件夹名称已删除**:

java -jar TaskRunner-1.0.jar --config ~/credentials.json --workerGroup=wg-01020 --region=us-east-1 --logUri=s3://**bucket-name**/**folder-name**

这会产生以下输出:

log4j:WARN No appenders could be found for logger (amazonaws.datapipeline.objects.PluginModule). log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.
Starting log pusher...
Log Pusher Started. Region: us-east-1, LogUri: s3://**bucket-name**/**folder-name**
Build info: commit=unknown, timestamp=2016-07-18 14:51:53 UTC
Initializing drivers...
Starting task runner...

AWS Documentation for task runner 表示“当 Task Runner 处于活动状态时,它会在终端窗口中打印写入日志文件的路径。以下是一个示例。”...

Logging to /Computer_Name/.../output/logs

...但我还没有看到这个印刷品。这让我相信退出终端会关闭任务运行器,导致后续管道作业卡在“等待运行器”状态。

任何帮助将不胜感激。

【问题讨论】:

    标签: amazon-web-services amazon-ec2 amazon-data-pipeline


    【解决方案1】:

    通过在命令末尾添加& disown,我能够在不终止任务运行程序的情况下退出终端。

    java -jar TaskRunner-1.0.jar --config ~/credentials.json --workerGroup=wg-01020 --region=us-east-1 --logUri=s3://**bucket-name**/**folder-name** & disown
    

    这并没有导致上面提到的Logging to /Computer_Name/.../output/logs 输出,但我不必打开终端窗口,并且数据管道作业已成功完成而没有问题。

    【讨论】:

      【解决方案2】:

      来自文档here

      Task Runner 应该独立于您的登录 shell 运行。如果您使用终端应用程序连接到您的计算机,您可能需要使用 nohup 或 screen 等实用程序来防止 Task Runner 应用程序在您注销时退出.

      重要的是要了解,当我们通过 ssh 登录到远程 Linux 实例时,我们正在以自己的用户身份运行 shell,从该 shell 执行的任何命令都将是 shell 进程的子进程。如果 shell 进程终止,这就是我们结束登录会话时发生的情况,那么 shell 的所有子进程也将终止。

      为了防止我们启动的 java TaskRunner 进程发生这种情况,我们必须将 java 进程从 shell 进程的“父级”中分离出来。这是通过使用 nohup 或 screen 等工具来实现的。

      按如下方式运行您的 java 命令。

      nohup java -jar TaskRunner-1.0.jar --config credentials.json --workerGroup=<worker_group_name> --region=<region_name> --logUri=<s3_log_location>
      

      【讨论】:

        【解决方案3】:

        tmux 也可以使用。

        只需运行tmux,然后启动TaskRunner,然后使用ctrl+b d 与会话分离或直接与ssh 断开连接。

        欲了解更多信息,请参阅https://tmuxcheatsheet.com/

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2012-03-09
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-04-14
          • 2011-11-22
          相关资源
          最近更新 更多