2014-11-03 420 views
0

我有一個表報告其中有ID,國家,服務,數量,數量。當我嘗試在配置單元中執行以下查詢時:Hive查詢錯誤:java.io.ioexception錯誤= 13權限被拒絕

select * from report 

我從配置單元獲取正確的數據。但是,當我在select語句中指定的列名:

select service from report 

我得到以下異常:

java.io.IOException: Cannot run program "/home/biadmin/hadoop/bin/hadoop" (in directory "/root"): error=13, Permission denied 
    at java.lang.ProcessBuilder.start(ProcessBuilder.java:1041) 
    at java.lang.Runtime.exec(Runtime.java:617) 
    at java.lang.Runtime.exec(Runtime.java:450) 
    at org.apache.hadoop.hive.ql.exec.mr.MapRedTask.execute(MapRedTask.java:262) 
    at org.apache.hadoop.hive.ql.exec.Task.executeTask(Task.java:153) 
    at org.apache.hadoop.hive.ql.exec.TaskRunner.runSequential(TaskRunner.java:85) 
    at org.apache.hadoop.hive.ql.Driver.launchTask(Driver.java:1503) 
    at org.apache.hadoop.hive.ql.Driver.execute(Driver.java:1270) 
    at org.apache.hadoop.hive.ql.Driver.runInternal(Driver.java:1088) 
    at org.apache.hadoop.hive.ql.Driver.run(Driver.java:911) 
    at org.apache.hadoop.hive.ql.Driver.run(Driver.java:901) 
    at org.apache.hadoop.hive.cli.CliDriver.processLocalCmd(CliDriver.java:268) 
    at org.apache.hadoop.hive.cli.CliDriver.processCmd(CliDriver.java:220) 
    at org.apache.hadoop.hive.cli.CliDriver.processLine(CliDriver.java:423) 
    at org.apache.hadoop.hive.cli.CliDriver.executeDriver(CliDriver.java:792) 
    at org.apache.hadoop.hive.cli.CliDriver.run(CliDriver.java:686) 
    at org.apache.hadoop.hive.cli.CliDriver.main(CliDriver.java:625) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:606) 
    at org.apache.hadoop.util.RunJar.main(RunJar.java:212) 
Caused by: java.io.IOException: error=13, Permission denied 
    at java.lang.UNIXProcess.forkAndExec(Native Method) 
    at java.lang.UNIXProcess.<init>(UNIXProcess.java:135) 
    at java.lang.ProcessImpl.start(ProcessImpl.java:130) 
    at java.lang.ProcessBuilder.start(ProcessBuilder.java:1022) 
    ... 21 more 
FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.mr.MapRedTask 

我得到串聯這個錯誤,有時意味着我得到它,有時它工作正常。我嘗試在hive-site.xml和hdfs-site.xml中添加以下內容,但仍然遇到同樣的問題。

蜂房的site.xml

<property> 
     <name>hive.cli.print.current.db</name> 
     <value>true</value> 
</property> 

HDFS-site.xml中

<property> 
     <name>dfs.permissions</name> 
     <value>false</value> 
</property> 

有沒有什麼辦法可以永久性地避免這個問題。謝謝大家。

+0

Error說「/ home/biadmin/hadoop/bin/hadoop沒有權限」 – Kunal 2014-11-03 07:58:24

+0

對不完整的評論: – Kunal 2014-11-03 07:58:59

+0

什麼是/ home/biadmin/hadoop/bin/hadoop的用戶和組。您的用戶是您正在運行hive的用戶,它是可以訪問hadoop bin的hadoop組的一部分。你的表格和數據文件有什麼訪問權限? – Kunal 2014-11-03 08:00:19

回答

0

這個問題很簡單......假設我的Hadoop安裝在hduser

我用命令:

su hduser 

這不設置所有的參數和打開/根主文件夾。因此,有許可差異。

因此,使用命令:

su - hduser 

此設置所需的參數,並直接在hduser的回家打開。這不會導致錯誤。

關於串聯的錯誤,我用來直接進入服務器使用hduser用戶沒有給出錯誤。但通過root進入服務器,然後切換用戶給出了錯誤。