2016-10-17 92 views
0

我在使用Hue的Oozie中運行sqoop作業時遇到了問題。我有4個基於Hortonworks HDP的節點羣集。Oozie中的Sqoop作業無法運行Hive導入

我Sqoop工作看起來象下面這樣:

import 
--options-file ./dss_conn_parms.txt 
--table BD.BD_TABLE 
--target-dir /user/user_1/DMS 
--m 1 
--hive-import 
--hive-table BD.BD_TABLE_HIVE 

從Oracle數據庫中的數據被成功地下載並插入到HDFS。不幸的是,Hive導入不起作用。該錯誤與權限相關:

73167 [main] INFO org.apache.sqoop.hive.HiveImport - Loading uploaded data into Hive 
2016-10-17 09:42:55,203 INFO [main] hive.HiveImport (HiveImport.java:importTable(195)) - Loading uploaded data into Hive 
73180 [main] ERROR org.apache.sqoop.tool.ImportTool - Encountered IOException running import job: java.io.IOException: Cannot run program "hive": error=13, Permission denied 
at java.lang.ProcessBuilder.start(ProcessBuilder.java:1048) 
at java.lang.Runtime.exec(Runtime.java:620) 
at java.lang.Runtime.exec(Runtime.java:528) 
at org.apache.sqoop.util.Executor.exec(Executor.java:76) 
at org.apache.sqoop.hive.HiveImport.executeExternalHiveScript(HiveImport.java:391) 
at org.apache.sqoop.hive.HiveImport.executeScript(HiveImport.java:344) 
at org.apache.sqoop.hive.HiveImport.importTable(HiveImport.java:245) 
at org.apache.sqoop.tool.ImportTool.importTable(ImportTool.java:514) 
at org.apache.sqoop.tool.ImportTool.run(ImportTool.java:605) 
at org.apache.sqoop.Sqoop.run(Sqoop.java:148) 
at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:76) 
at org.apache.sqoop.Sqoop.runSqoop(Sqoop.java:184) 
at org.apache.sqoop.Sqoop.runTool(Sqoop.java:226) 
at org.apache.sqoop.Sqoop.runTool(Sqoop.java:235) 
at org.apache.sqoop.Sqoop.main(Sqoop.java:244) 
at org.apache.oozie.action.hadoop.SqoopMain.runSqoopJob(SqoopMain.java:197) 
at org.apache.oozie.action.hadoop.SqoopMain.run(SqoopMain.java:177) 
at org.apache.oozie.action.hadoop.LauncherMain.run(LauncherMain.java:47) 
at org.apache.oozie.action.hadoop.SqoopMain.main(SqoopMain.java:46) 
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
at java.lang.reflect.Method.invoke(Method.java:498) 
at org.apache.oozie.action.hadoop.LauncherMapper.map(LauncherMapper.java:241) 
at org.apache.hadoop.mapred.MapRunner.run(MapRunner.java:54) 
at org.apache.hadoop.mapred.MapTask.runOldMapper(MapTask.java:453) 
at org.apache.hadoop.mapred.MapTask.run(MapTask.java:343) 
at org.apache.hadoop.mapred.YarnChild$2.run(YarnChild.java:168) 
at java.security.AccessController.doPrivileged(Native Method) 
at javax.security.auth.Subject.doAs(Subject.java:422) 
at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1709) 
at org.apache.hadoop.mapred.YarnChild.main(YarnChild.java:162) 
Caused by: java.io.IOException: error=13, Permission denied 
at java.lang.UNIXProcess.forkAndExec(Native Method) 
at java.lang.UNIXProcess.<init>(UNIXProcess.java:248) 
at java.lang.ProcessImpl.start(ProcessImpl.java:134) 
at java.lang.ProcessBuilder.start(ProcessBuilder.java:1029) 
... 31 more 

2016-10-17 09:42:55,216 ERROR [main] tool.ImportTool (ImportTool.java:run(613)) - Encountered IOException running import job: java.io.IOException: Cannot run program "hive": error=13, Permission denied 
at java.lang.ProcessBuilder.start(ProcessBuilder.java:1048) 
at java.lang.Runtime.exec(Runtime.java:620) 
at java.lang.Runtime.exec(Runtime.java:528) 
at org.apache.sqoop.util.Executor.exec(Executor.java:76) 
at org.apache.sqoop.hive.HiveImport.executeExternalHiveScript(HiveImport.java:391) 
at org.apache.sqoop.hive.HiveImport.executeScript(HiveImport.java:344) 
at org.apache.sqoop.hive.HiveImport.importTable(HiveImport.java:245) 
at org.apache.sqoop.tool.ImportTool.importTable(ImportTool.java:514) 
at org.apache.sqoop.tool.ImportTool.run(ImportTool.java:605) 
at org.apache.sqoop.Sqoop.run(Sqoop.java:148) 
at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:76) 
at org.apache.sqoop.Sqoop.runSqoop(Sqoop.java:184) 
at org.apache.sqoop.Sqoop.runTool(Sqoop.java:226) 
at org.apache.sqoop.Sqoop.runTool(Sqoop.java:235) 
at org.apache.sqoop.Sqoop.main(Sqoop.java:244) 
at org.apache.oozie.action.hadoop.SqoopMain.runSqoopJob(SqoopMain.java:197) 
at org.apache.oozie.action.hadoop.SqoopMain.run(SqoopMain.java:177) 
at org.apache.oozie.action.hadoop.LauncherMain.run(LauncherMain.java:47) 
at org.apache.oozie.action.hadoop.SqoopMain.main(SqoopMain.java:46) 
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
at java.lang.reflect.Method.invoke(Method.java:498) 
at org.apache.oozie.action.hadoop.LauncherMapper.map(LauncherMapper.java:241) 
at org.apache.hadoop.mapred.MapRunner.run(MapRunner.java:54) 
at org.apache.hadoop.mapred.MapTask.runOldMapper(MapTask.java:453) 
at org.apache.hadoop.mapred.MapTask.run(MapTask.java:343) 
at org.apache.hadoop.mapred.YarnChild$2.run(YarnChild.java:168) 
at java.security.AccessController.doPrivileged(Native Method) 
at javax.security.auth.Subject.doAs(Subject.java:422) 
at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1709) 
at org.apache.hadoop.mapred.YarnChild.main(YarnChild.java:162) 
Caused by: java.io.IOException: error=13, Permission denied 
at java.lang.UNIXProcess.forkAndExec(Native Method) 
at java.lang.UNIXProcess.<init>(UNIXProcess.java:248) 
at java.lang.ProcessImpl.start(ProcessImpl.java:134) 
at java.lang.ProcessBuilder.start(ProcessBuilder.java:1029) 
... 31 more 

Intercepting System.exit(1) 

<<< Invocation of Main class completed <<< 

Failing Oozie Launcher, Main class [org.apache.oozie.action.hadoop.SqoopMain], exit code [1] 

你知道爲什麼Sqoop作業無法運行Hive導入命令嗎?

UPDATE

我執行與在命令行蜂巢導入選項Sqoop工作,我知道是什麼問題。在命令行中我可以看到這個信息:

Logging initialized using configuration in jar:file:/usr/hdp/2.4.2.0-258 /hive/lib/hive-common-1.2.1000.2.4.2.0-jar!/hive-log4j.properties 
OK 

問題是與訪問蜂房共1.2.1000.2.4.2.0-JAR位於本地文件系統。任何想法我該怎麼辦?

+0

權限在日誌中被拒絕,請檢查您的創建權限配置單元導入 –

+0

我有acces創建配置單元導入,因爲我能夠從命令行運行此sqoop命令。我認爲問題是Oozie或Hue。 –

+0

你能發佈core-site.xml嗎? –

回答

0

1)嘗試在workflow.xml

2)在覈心-site.xml中添加

<env-var>HADOOP_USER_NAME=YOUR_USERNAME</env-var> 

你的工作定義的<shell xmlns="uri:oozie:shell-action:0.2">部分中添加

<property> 
     <name>hadoop.proxyuser.oozie.hosts</name> 
     <value>*</value> 
    </property> 
    <property> 
     <name>hadoop.proxyuser.oozie.groups</name> 
     <value>*</value> 
    </property> 
    <property> 
     <name>hadoop.proxyuser.YOUR_USERNAME.hosts</name> 
     <value>*</value> 
    </property> 
    <property> 
     <name>hadoop.proxyuser.YOUR_USERNAME.groups</name> 
     <value>*</value> 
    </property> 

並重新啓動所有服務,然後再試一次