2013-10-09 59 views
8

Oozie的SSH行動問題:

問題: 我們正在嘗試我們的集羣的特定主機上運行一些命令。我們同樣選擇了SSH Action。一段時間以來,我們一直面臨着這個SSH問題。這裏真正的問題是什麼?請指點我的解決方案。Oozie的SSH行動

日誌:

AUTH_FAILED:不能夠執行操作[SSH -o的PasswordAuthentication =沒有-o KbdInteractiveDevices =沒有-o StrictHostKeyChecking =沒有-o ConnectTimeout = 20 [email protected] 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 =沒有-o KbdInteractiveDevices =沒有-o StrictHostKeyChecking =沒有-o ConnectTimeout = 20 [email protected] 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 =沒有-o KbdInteractiveDevices =沒有-o StrictHostKeyChecking =沒有-o ConnectTimeout = 20 [email protected] 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月9日12:48:25982 WARN org.apache.oozie.command.wf.ActionStartXCommand:USER [用戶]甲基[ - ] TOKEN [] APP [測試] JOB [0000000-131008185935754 -oozie-oozi-W] ACTION [0000000-131008185935754-oozie-oozi-W @ action1]暫停工作流作業id = 0000000-131008185935754-oozie-oozi-W WARNING org.apache .oozie.command.coord.CoordActionUpdateXCommand:USER [user] GROUP [ - ] TOKEN [] APP [Test] JOB [0000000-131008185935754-oozie-oozi-W] ACTION [0000000-131008185935754-oozie-oozi-W @ action1] E1100:命令前置條件在執行前不成立,[,coord動作爲空],錯誤代碼:E1100信息org.apache.oozie.command.wf.KillXCommand:USER [user] GROUP [ - ] TOKEN [] APP [Test] JOB [0000000-13操作[ - ] STARTED WorkflowKillXCommand for jobId = 0000000-131008185935754-oozie-oozi-W 2013-10-09 12:59:57,685 WARN org.apache.oozie.command.coord.CoordActionUpdateXCommand: USER [用戶] GROUP [ - ] TOKEN [] APP [測試] JOB [0000000-131008185935754-oozie-oozi-W] ACTION [ - ] E1100:命令前置條件在執行前不成立,[,coord動作爲空]代碼:E1100 2013-10-09 12:59:57,686 INFO org.apache.oozie.command.wf.KillXCommand:USER [user] GROUP [ - ] TOKEN [] APP [Test] JOB [0000000-131008185935754-oozie- oozi-W] ACTION [ - ] ENDED WorkflowKillXCommand for jobId = 0000000-131008185935754-oozie-oozi -W 2013-10-09 13:41:32,654 WARN org.apache.oozie.command.wf.KillXCommand:USER [user] GROUP [ - ] TOKEN [] APP [Test] 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 [user] GROUP [ - ] TOKEN [] APP [Test] JOB [0000000-131008185935754-oozie-oozi-W ]行動[ - ] E0725:工作流實例無法被殺死,0000000-131008185935754-oozie-oozi-W,錯誤代碼:E0725 2013-10-09 13:42:04,869 WARN org.apache.oozie.command.wf。ResumeXCommand:USER [user] GROUP [ - ] TOKEN [] APP [Test] JOB [0000000-131008185935754-oozie-oozi-W]操作[ - ] E1100:命令前置條件在執行前不成立,[工作流狀態爲KILLED SUSPENDED],錯誤代碼:E1100 2013-10-09 13:45:56,357 WARN org.apache.oozie.command.wf.KillXCommand:USER [user] GROUP [ - ] TOKEN [] APP [Test] JOB [0000000- 131008185935754-Oozie的-oozi-W] ACTION [ - ] E0725:工作流實例不能被殺死,0000000-131008185935754-Oozie的-oozi-W,錯誤代碼:E0725

走近嘗試:

  1. 無密碼SSH套裝
  2. 個用戶代理設置
  3. 給予權限所需的文件夾

感謝;

Kasa。

+0

面臨完全相同的問題 – learner

回答

9

我剛碰到類似的問題。我曾在那裏我可以作爲用戶的身份運行的情況下:用手在命令行上

ssh -o PasswordAuthentication=no -o KbdInteractiveDevices=no -o StrictHostKeyChecking=no -o ConnectTimeout=20 [email protected] mkdir -p oozie-oozi/0000000-131008185935754-oozie-oozi-W/action1--ssh/ 

和它的工作,但是當通過Oozie的推出,用戶就失敗了。

在我的情況下,失敗的原因是我在oozie服務器上的USER和遠程機器上的USER之間設置了無密碼ssh。需要做的是在oozie服務器上的oozie和遠程機器上的USER之間設置無密碼ssh。換句話說,su在oozie服務器上進行操作並手動運行上述命令。如果失敗,它將在Oozie中失敗。如果成功,那麼它應該在Oozie的工作(假設一切是正確的,如目錄權限等)

看看哪些用戶的Oozie的服務器爲運行:

ps -ef | grep oozie 

無論用戶即在遠程計算機上需要無密碼ssh到USER。

+0

謝謝@ quux00。我在運行oozie時遇到了很多麻煩,因爲我在cloudera VM上練習,直到找到這篇文章。但是當我嘗試設置ssh密鑰時,它會提示用戶輸入「oozie」密碼。你可以讓我知道cloudera虛擬機上'oozie'的密碼是什麼。 – SrinivasR

+0

我很久沒有使用過Cloudera虛擬機,但您可能擁有root權限,因此您應該可以sudo root並執行此操作。 – quux00

1

無論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用戶。然後繼續使用oozie用戶和任何主機上需要的任何其他用戶之間的無密碼身份驗證。

然後嘗試再次重新運行oozie作業。讓我知道它是否有效。希望能幫助到你!!!

0

這是一個非常棘手的問題,我只能破解它。我不滿意給出的答案,所以在這裏我的我的版本。 失敗後,我(我可以在日誌中看到)

ssh -o PasswordAuthentication=no -o KbdInteractiveDevices=no -o StrictHostKeyChecking=no -o ConnectTimeout=20 [email protected] mkdir -p oozie-oozi/0000067-130808155814753-oozie-oozi-W/mysshjob--ssh/ 

但如果嘗試同樣的命令,但去掉KbdInteractiveDevices =沒有或改變KbdInteractiveDevices = PAM,它的工作

ssh -o PasswordAuthentication=no -o KbdInteractiveDevices=pam -o StrictHostKeyChecking=no -o ConnectTimeout=20 [email protected] mkdir -p oozie-oozi/0000067-130808155814753-oozie-oozi-W/mysshjob--ssh/ 

無論如何,我覺得有一些老SSH密鑰的問題,所以我嘗試以下和它的作品

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

以下所有上述建議後

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

,並更改爲

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

只是嘗試以下步驟:

  1. 創建 使用下面的過程中無密碼通信:

    sudo su - oozie 
    [email protected]: ssh-keygen -t dsa 
    

    複製公衆密鑰生成到您的本地遠程服務器像[email protected]

  2. 嘗試ssh [email protected],你會登錄到遠程的,而不錯誤

  3. 去色調和選擇SSH的行動,讓你的bash命令狀bash -x yourscript參數
  4. 保存
  5. 提交