AWS Data Pipeline - Task Runner 不保持活动状态
AWS Data Pipeline - Task Runner does not stay active
我正尝试在 Amazon Linux EC2 实例 (ami-6869aa05) 上执行 运行 任务 运行ner 以执行 AWS Datapipeline Shell 命令任务。
我已成功创建管道,通过终端通过 SSH 连接到实例,安装并启动了 Task Runner,并且能够 运行 管道在第一次激活时成功。随后的管道作业被卡住 "waiting for runner"。查看管道的依赖项时,显示未设置工作组。
我使用以下 CLI 条目启动任务 运行ner。 ** 删除了 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 表示 "When Task Runner is active, it prints the path to where log files are written in the terminal window. The following is an example."...
Logging to /Computer_Name/.../output/logs
...但我还没有看到这张照片。这让我相信退出终端将关闭任务 运行ner,导致后续管道作业卡在 "waiting for runner" 状态。
如有任何帮助,我们将不胜感激。
通过在命令末尾添加 & 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
输出,但我不必让终端 window 打开并且数据管道作业已成功完成,没有问题。
来自文档here
Task Runner should be run detached from your login shell. If you are using a terminal application to connect to your computer, you may need to use a utility like nohup or screen to prevent the Task Runner application from exiting when you log out.
重要的是要了解,当我们通过 ssh 登录远程 Linux 实例时,我们是 运行 一个 shell 作为我们自己的用户,并且从该用户执行的任何命令shell 将是 shell 进程的子进程。如果 shell 进程终止,这就是我们结束登录会话时发生的情况,那么 shell 的所有子进程也将终止。
为了防止我们启动的 java Task运行ner 进程发生这种情况,我们必须将 java 进程与 shell 进程的 'parenthood'。这是通过使用 nohup 或 screen 等工具实现的。
运行 您的 java 命令如下。
nohup java -jar TaskRunner-1.0.jar --config credentials.json --workerGroup=<worker_group_name> --region=<region_name> --logUri=<s3_log_location>
tmux
也可以。
只需 运行 tmux
,然后启动 TaskRunner,然后使用 ctrl+b d
与会话分离或直接与 ssh 断开连接。
有关详细信息,请参阅 https://tmuxcheatsheet.com/
我正尝试在 Amazon Linux EC2 实例 (ami-6869aa05) 上执行 运行 任务 运行ner 以执行 AWS Datapipeline Shell 命令任务。
我已成功创建管道,通过终端通过 SSH 连接到实例,安装并启动了 Task Runner,并且能够 运行 管道在第一次激活时成功。随后的管道作业被卡住 "waiting for runner"。查看管道的依赖项时,显示未设置工作组。
我使用以下 CLI 条目启动任务 运行ner。 ** 删除了 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 表示 "When Task Runner is active, it prints the path to where log files are written in the terminal window. The following is an example."...
Logging to /Computer_Name/.../output/logs
...但我还没有看到这张照片。这让我相信退出终端将关闭任务 运行ner,导致后续管道作业卡在 "waiting for runner" 状态。
如有任何帮助,我们将不胜感激。
通过在命令末尾添加 & 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
输出,但我不必让终端 window 打开并且数据管道作业已成功完成,没有问题。
来自文档here
Task Runner should be run detached from your login shell. If you are using a terminal application to connect to your computer, you may need to use a utility like nohup or screen to prevent the Task Runner application from exiting when you log out.
重要的是要了解,当我们通过 ssh 登录远程 Linux 实例时,我们是 运行 一个 shell 作为我们自己的用户,并且从该用户执行的任何命令shell 将是 shell 进程的子进程。如果 shell 进程终止,这就是我们结束登录会话时发生的情况,那么 shell 的所有子进程也将终止。
为了防止我们启动的 java Task运行ner 进程发生这种情况,我们必须将 java 进程与 shell 进程的 'parenthood'。这是通过使用 nohup 或 screen 等工具实现的。
运行 您的 java 命令如下。
nohup java -jar TaskRunner-1.0.jar --config credentials.json --workerGroup=<worker_group_name> --region=<region_name> --logUri=<s3_log_location>
tmux
也可以。
只需 运行 tmux
,然后启动 TaskRunner,然后使用 ctrl+b d
与会话分离或直接与 ssh 断开连接。
有关详细信息,请参阅 https://tmuxcheatsheet.com/