this also depends on what version of hive you are using On Wed, Jul 18, 2012 at 10:33 PM, kulkarni.swar...@gmail.com < kulkarni.swar...@gmail.com> wrote:
> Thanks for your reply nitin. > > Ok. So you mean we always need to set HADOOP_HOME irrespective of "hadoop" > is on the path or not. Correct? > > Little confused because that contradicts what's mentioned here[1]. > > [1] > https://cwiki.apache.org/confluence/display/Hive/GettingStarted#GettingStarted-RunningHive > > > Thanks, > > On Wed, Jul 18, 2012 at 11:59 AM, Nitin Pawar <nitinpawar...@gmail.com>wrote: > >> This is not a bug. >> >> even if hadoop was path, hive does not use it. >> Hive internally uses HADOOP_HOME in the code base. So you will always >> need to set that for hive. >> Where as for HADOOP clusters, HADOOP_HOME is deprecated but hive still >> needs it. >> >> Don't know if that answers your question >> >> Thanks, >> Nitin >> >> >> On Wed, Jul 18, 2012 at 10:01 PM, kulkarni.swar...@gmail.com < >> kulkarni.swar...@gmail.com> wrote: >> >>> Hello, >>> >>> The hive documentation states that either HADOOP_HOME should be set or >>> hadoop should be on the path. However for some cases, where HADOOP_HOME was >>> not set but hadoop was on path, I have seen this error pop up: >>> >>> java.io.IOException: *Cannot run program "null/bin/hadoop" *(in >>> directory "/root/swarnim/hive-0.9.0-cern1-SNAPSHOT"): java.io.IOException: >>> error=2, No such file or directory >>> at java.lang.ProcessBuilder.start(ProcessBuilder.java:460) >>> at java.lang.Runtime.exec(Runtime.java:593) >>> at java.lang.Runtime.exec(Runtime.java:431) >>> at org.apache.hadoop.hive.ql.exec.MapRedTask.execute(MapRedTask.java:268) >>> at org.apache.hadoop.hive.ql.exec.Task.executeTask(Task.java:134) >>> at >>> org.apache.hadoop.hive.ql.exec.TaskRunner.runSequential(TaskRunner.java:57) >>> at org.apache.hadoop.hive.ql.Driver.launchTask(Driver.java:1326) >>> at org.apache.hadoop.hive.ql.Driver.execute(Driver.java:1118) >>> at org.apache.hadoop.hive.ql.Driver.run(Driver.java:951) >>> at >>> org.apache.hadoop.hive.cli.CliDriver.processLocalCmd(CliDriver.java:258) >>> at org.apache.hadoop.hive.cli.CliDriver.processCmd(CliDriver.java:215) >>> at org.apache.hadoop.hive.cli.CliDriver.processLine(CliDriver.java:406) >>> at org.apache.hadoop.hive.cli.CliDriver.run(CliDriver.java:689) >>> at org.apache.hadoop.hive.cli.CliDriver.main(CliDriver.java:557) >>> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) >>> at >>> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) >>> at >>> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) >>> at java.lang.reflect.Method.invoke(Method.java:597) >>> at org.apache.hadoop.util.RunJar.main(RunJar.java:208) >>> >>> Digging into the code in MapRedTask.java, I found the following >>> (simplified): >>> >>> String *hadoopExec* = conf.getVar(System.getenv("HADOOP_HOME") + >>> "/bin/hadoop"); >>> ... >>> >>> Runtime.getRuntime().exec(*hadoopExec*, env, new File(workDir)); >>> >>> Clearly, if HADOOP_HOME is not set, the command that it would try to >>> execute is "null/bin/hadoop" which is exactly the exception I am getting. >>> >>> Has anyone else run into this before? Is this a bug? >>> >>> Thanks, >>> -- >>> Swarnim >>> >> >> >> >> -- >> Nitin Pawar >> >> > > > -- > Swarnim > -- Nitin Pawar