복붙노트

[HADOOP] Oozie SSH 액션

HADOOP

Oozie SSH 액션

발행물: 우리는 클러스터의 특정 호스트 시스템에서 몇 가지 명령을 실행하려고합니다. 우리는 SSH Action을 선택했습니다. 우리는이 SSH 문제에 당분간 직면 해 왔습니다. 여기서 진짜 문제가 될 수 있을까요? 솔루션을 향해 나를 가리 키십시오.

로그 :

AUTH_FAILED : 작업을 수행 할 수 없습니다. [ssh -o PasswordAuthentication = no -o KbdInteractiveDevices = no -o StrictHostKeyChecking = no -o ConnectTimeout = 20 USER@1.2.3.4 mkdir -p oozie-oozi / 0000000-131008185935754-oozie-oozi-W / action1 - ssh /] | ErrorStream : 경고 : 알려진 호스트의 목록에 1.2.3.4 (RSA) 호스트가 영구적으로 추가되었습니다. 허가가 거부되었습니다 (publickey, gssapi-keyex, gssapi-with-mic, 암호).

org.apache.oozie.action.ActionExecutorException : AUTH_FAILED : 작업을 수행 할 수 없습니다. [ssh -o PasswordAuthentication = no -o KbdInteractiveDevices = no -o StrictHostKeyChecking = no -o ConnectTimeout = 20 user@1.2.3.4 mkdir -p oozie-oozi / 0000000-131008185935754-oozie-oozi-W / action1 - ssh /] | ErrorStream : 경고 : 알려진 호스트 목록에 1.2.3.4,192.168.34.208 (RSA)이 영구적으로 추가되었습니다. 허가가 거부되었습니다 (publickey, gssapi-keyex, gssapi-with-mic, 암호).

at org.apache.oozie.action.ssh.SshActionExecutor.execute(SshActionExecutor.java:589)
at org.apache.oozie.action.ssh.SshActionExecutor.start(SshActionExecutor.java:204)
at org.apache.oozie.command.wf.ActionStartXCommand.execute(ActionStartXCommand.java:211)
at org.apache.oozie.command.wf.ActionStartXCommand.execute(ActionStartXCommand.java:59)
at org.apache.oozie.command.XCommand.call(XCommand.java:277)
at org.apache.oozie.service.CallableQueueService$CompositeCallable.call(CallableQueueService.java:326)
at org.apache.oozie.service.CallableQueueService$CompositeCallable.call(CallableQueueService.java:255)
at org.apache.oozie.service.CallableQueueService$CallableWrapper.run(CallableQueueService.java:175)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
at java.lang.Thread.run(Thread.java:662)

원인 : java.io.IOException : 작업을 수행 할 수 없습니다. [ssh -o PasswordAuthentication = no -o KbdInteractiveDevices = no -o StrictHostKeyChecking = no -o ConnectTimeout = 20 user@1.2.3.4 mkdir -p oozie-oozi / 0000000- 131008185935754-oozie-oozi-W / action1 - ssh /] | ErrorStream : 경고 : 알려진 호스트 목록에 '1.2.3.4,1.2.3.4'(RSA)가 영구적으로 추가되었습니다. 허가가 거부되었습니다 (publickey, gssapi-keyex, gssapi-with-mic, 암호).

at org.apache.oozie.action.ssh.SshActionExecutor.executeCommand(SshActionExecutor.java:340)
at org.apache.oozie.action.ssh.SshActionExecutor.setupRemote(SshActionExecutor.java:373)
at org.apache.oozie.action.ssh.SshActionExecutor$1.call(SshActionExecutor.java:206)
at org.apache.oozie.action.ssh.SshActionExecutor$1.call(SshActionExecutor.java:204)
at org.apache.oozie.action.ssh.SshActionExecutor.execute(SshActionExecutor.java:547)
... 10 more

2013-10-09 12 : 48 : 25,982 경고 org.apache.oozie.command.wf.ActionStartXCommand : USER [사용자] GROUP [-] TOKEN [] APP [테스트] JOB [0000000-131008185935754-oozie-oozi-W] 작업 [0000000-131008185935754-oozie-oozi-W @ action1] 작업 흐름 작업 일시 중단 id = 0000000-131008185935754-oozie-oozi-W 2013-10-09 12 : 48 : 27,204 WARN [USER] GROUP [-] TOKEN [] APP [테스트] JOB [0000000-131008185935754-oozie-oozi-W] ACTION [0000000-131008185935754-oozie-oozi-W @ action1] E1100 : 명령 전제 조건이 실행 전에 유지되지 않습니다. [, coord action이 null입니다], 오류 코드 : E1100 2013-10-09 12 : 59 : 57,477 정보 org.apache.oozie.command.wf.KillXCommand : USER [사용자] GROUP [-] TOKEN [] APP [테스트] JOB [0000000-131008185935754-oozie-oozi-W] 작업 [-] 시작 WorkflowKillX 작업에 대한 명령 = 0000000-131008185935754-oozie-oozi-W 2013-10-09 12 : 59 : 57,685 WARN [user] GROUP [-] TOKEN [] APP [테스트] JOB [0000000-131008185935754-oozie-oozi-W] ACTION [-] E1100 : 명령 전제 조건이 실행 전에 유지되지 않습니다. [, coord action is null], 오류 코드 : E1100 2013-10-09 12 : 59 : 57,686 정보 org.apache.oozie.command.wf.KillXCommand : USER [사용자] GROUP [-] TOKEN [] APP [테스트] JOB [0000000-131008185935754-oozie-oozi-W] 작업 [-] 종료 WorkflowKillXCommand for jobId = 0000000-131008185935754-oozie-oozi-W 2013-10-09 13 : 41 : 32,654 WARN org.apache.oozie.command.wf.KillXCommand : USER [사용자] GROUP [-] TOKEN [] APP [테스트] JOB [0000000-131008185935754-oozie-oozi-W] 작업 [-] E0725 : 워크 플로 인스턴스를 죽일 수 없습니다, 0000000-131008185935754-oozie-oozi-W, 오류 코드 : E0725 2013-10-09 13 : 41 : 45,199 WARN org.apache.oozie.command.wf.KillXCommand : USER [사용자] GROUP [-] TOKEN [] APP [테스트] JOB [0000000-131008185935754-oozie-oozi-W] 작업 [-] E0725 : 워크 플로 인스턴스를 죽일 수 없습니다, 0000000-131008185935754-oozie-oozi-W, 오류 코드 : E0725 2013-10-09 13 : 42 : 04,869 경고 org.apache.oozie.command.wf.ResumeXCommand : USER [사용자] GROUP [-] TOKEN [] APP [테스트] JOB [0000000-131008185935754-oozie-oozi-W] ACTION [-] E1100 : 명령 전제 조건이 실행 전에 유지되지 않습니다. [워크 플로우의 상태는 KILLED가 일시 중단되지 않았습니다], 오류 코드 : E1100 2013-10-09 13 : 45 : 56,357 WARN org.apache.oozie.command.wf.KillXCommand : USER [사용자] GROUP [-] TOKEN [] APP [테스트] JOB [0000000-131008185935754-oozie-oozi-W] 작업 [-] E0725 : 워크 플로 인스턴스를 죽일 수 없습니다, 0000000-131008185935754-oozie-oozi-W, 오류 코드 : E0725

접근 시도 :

감사;

상자.

해결법

  1. ==============================

    1.방금 비슷한 문제가 발생했습니다. 내가 USER로 달릴 수있는 경우가있었습니다.

    방금 비슷한 문제가 발생했습니다. 내가 USER로 달릴 수있는 경우가있었습니다.

    ssh -o PasswordAuthentication=no -o KbdInteractiveDevices=no -o StrictHostKeyChecking=no -o ConnectTimeout=20 USER@1.2.3.4 mkdir -p oozie-oozi/0000000-131008185935754-oozie-oozi-W/action1--ssh/
    

    커맨드 라인에서 직접 손으로 작업했지만, Oozie를 통해 USER로 시작했을 때 실패했습니다.

    필자의 경우 실패한 이유는 oozie 서버의 USER와 원격 시스템의 USER 사이에 암호가없는 ssh를 설정했기 때문입니다. 필요한 것은 oozie 서버의 oozie와 원격 시스템의 USER 사이에 암호없이 ssh를 설정하는 것입니다. 즉, oozie 서버에 잠시 대기하고 위의 명령을 직접 실행하십시오. 실패하면 Oozie에서 실패합니다. 작동하는 경우, Oozie에서 작동해야합니다 (다른 모든 권한은 dir 사용 권한 등)

    oozie 서버가 실행중인 사용자를 확인하십시오.

    ps -ef | grep oozie
    

    원격 시스템에서 USER에게 암호가없는 ssh가 필요한 사용자.

  2. ==============================

    2.quux00이 대답 한 것이 무엇이든간에 말이됩니다. 나는 그저 몇 점을 더하고있다. ssh-action 명령 ssh가 oozie 사용자에 의해 실행될 것이므로 oozie를 bash 사용자로 설정해야합니다.

    quux00이 대답 한 것이 무엇이든간에 말이됩니다. 나는 그저 몇 점을 더하고있다. ssh-action 명령 ssh가 oozie 사용자에 의해 실행될 것이므로 oozie를 bash 사용자로 설정해야합니다.

    이를 수행하려면 클러스터의 모든 노드에서 / etc / passwd 파일을 변경해야합니다. / etc / passwd 파일에서 아래 값 (비슷한 값)을 찾으십시오.

    oozie:x:488:487:Oozie User:/var/lib/oozie:/bin/false 
    

    그것을 다음으로 변경하십시오.

    oozie:x:488:487:Oozie User:/var/lib/oozie:/bin/bash
    

    실제로 oozie 사용자는 bash 사용자가 될 것입니다. 그런 다음 호스트 시스템 중 원하는 사용자와 다른 사용자간에 비밀번호없는 인증을 수행하십시오.

    그리고 다시 오지 작업을 다시 시도하십시오. 그리고 그것이 작동하는지 알려주세요. 희망이 도움이 !!!

  3. ==============================

    3.이것은 매우 까다로운 문제이며 나는 해킹 만 할 수 있습니다. 나는 내 대답이 여기에 주어진 답에 만족하지 못했다. 나를 위해 실패한 다음 (로그에서 볼 수 있음)

    이것은 매우 까다로운 문제이며 나는 해킹 만 할 수 있습니다. 나는 내 대답이 여기에 주어진 답에 만족하지 못했다. 나를 위해 실패한 다음 (로그에서 볼 수 있음)

    ssh -o PasswordAuthentication=no -o KbdInteractiveDevices=no -o StrictHostKeyChecking=no -o ConnectTimeout=20 user@XXX.XX.XX.XXX mkdir -p oozie-oozi/0000067-130808155814753-oozie-oozi-W/mysshjob--ssh/
    

    그러나 동일한 명령을 시도했지만 KbdInteractiveDevices = no를 삭제했거나 KbdInteractiveDevices = pam이 변경된 경우

    ssh -o PasswordAuthentication=no -o KbdInteractiveDevices=pam -o StrictHostKeyChecking=no -o ConnectTimeout=20 user@XXX.XX.XX.XXX mkdir -p oozie-oozi/0000067-130808155814753-oozie-oozi-W/mysshjob--ssh/
    

    어쨌든 이전 ssh 키에 문제가있는 것 같아서 다음과 같이 시도해 보았습니다.

    $ ssh-keygen -t dsa
    $ cat ~/.ssh/id_dsa.pub > ~/.ssh/authorized_keys2
    
  4. ==============================

    4.위의 제안을 모두 따른 후

    위의 제안을 모두 따른 후

    oozie:x:488:487:Oozie User:/var/lib/oozie:/bin/false 
    

    그것을 다음으로 변경하십시오.

    oozie:x:488:487:Oozie User:/var/lib/oozie:/bin/bash
    

    다음 단계를 따르십시오.

  5. from https://stackoverflow.com/questions/19272430/oozie-ssh-action by cc-by-sa and MIT license