I have the configuration consistent across both the client and server sides. I have checked the hadoop logs on both the nodes. On both the nodes, in the tasktracker logs, every task attempt is directed towards hdfs://localhost:54310/user/hive/warehouse and not towards hdfs://<myHostName>:54310/user/hive/warehouse.
Further, I have given the absolute path for the property hive.metastore.warehouse.dir as hdfs://<myHostName>:54310:/user/hive/warehouse in the file hive-site.xml Also, if I change the port number for fs.default.name across all the locations, the change is visible, but still the hostname comes as localhost. As mentioned earlier, If i give the server running namenode an alias in the /etc/hosts file as localhost, on all the nodes, every thing works fine. But obviously I can't go ahead with this. Thanks. On Tue, May 24, 2011 at 1:50 AM, Ning Zhang <nzh...@fb.com> wrote: > AFAIK, the fs.default.name should be set by both the client and server > side .xml files, and they should be consistent (the URI scheme, the hostname > and port number). The server side config (also called fs.default.name) > should be read by the namenode and the client side is read by any HDFS > clients (Hive is one of them). > > For example, the setting we have is: > > server side core-site-custom.xml: > > <property> > <name>fs.default.name</name> > <value>*hdfs://hostname:9000*</value> > <description>The name of the default file system. A URI whose > scheme and authority determine the FileSystem implementation. The > uri's scheme determines the config property (fs.SCHEME.impl) naming > the FileSystem implementation class. The uri's authority is used to > determine the host, port, etc. for a filesystem.</description> > </property> > > client side core-site.xml: > > <property> > <name>fs.default.name</name> > <value>*hdfs://hostname:9000*</value> > <description>The name of the default file system. A URI whose > scheme and authority determine the FileSystem implementation. The > uri's scheme determines the config property (fs.SCHEME.impl) naming > the FileSystem implementation class. The uri's authority is used to > determine the host, port, etc. for a filesystem.</description> > </property> > > From the stack trace it seems Hive is trying to connect to port 54310, > which you should check if it is correct from your server side HDFS config. > > > On May 23, 2011, at 4:00 AM, MIS wrote: > > I have already tried your suggestion. I have mentioned the same in my mail. > I have also given the required permissions for the directory > (hive.metastore.warehouse.dir). > > If you look closely at the stack trace , the port number that I have > specified in the config files for the namenode and jobtracker is reflected > but not the hostname. I have also gone through the code base to verify the > issue. But nothing fishy there. > The stand-alone hadoop cluster is working fine, but when I try to run a > simple query a select , to fetch a few rows, hive throws up the exception. > > I was able to get this to work with a few hacks though, like adding > localhost as alias in the /etc/hosts file for the server running the > namenode. But I can't go ahead with this solution, as it'll break other > things. > > Thanks. > > > On Mon, May 23, 2011 at 4:14 PM, jinhang du <dujinh...@gmail.com> wrote: > >> Set the follow property in hive.site.xml. >> fs.default.name = hdfs:<your namenode of hadoop> >> mapred.job.tracker = <your job tracker:port> >> hive.metastore.warehouse.dir = <hdfs path> >> Make sure you have the authority to write into this directory >> (hive.metastore.warehouse.dir). >> Try it. >> >> >> 2011/5/23 MIS <misapa...@gmail.com> >> >>> I'm getting into an issue when trying to run hive over the hadoop >>> cluster. >>> >>> The hadoop cluster is working fine, in a stand alone manner. >>> I'm using hadoop 0.20.2 and hive 0.7.0 versions. >>> >>> The problem is that the hive is not considering the fs.default.nameproperty >>> that I am setting in the core-site.xml or the mapred.job.tracker in >>> the mapred-site.xml files. >>> It always considers that namenode can be accessed at localhost (refer to >>> the stack trace below) >>> So I have specified these properties in the hive-site.xml file as well. I >>> tried making them as final in the hive-site.xml file, but didn't get the >>> intended result. >>> Further, I set the above properties through command line as well. Again, >>> no success. >>> >>> I looked at the hive code for 0.7.0 branch to debug the issue, to see if >>> it getting fs.default.name property from the file hive-site.xml, which >>> it does through clone of the JobConf. So no issues here. >>> >>> Further, in hive-site.xml, if I make any of the properties as final, then >>> hive gives me a WARNING log. as below : >>> >>> *WARN conf.Configuration (Configuration.java:loadResource(1154)) - >>> file:/usr/local/hive-0.7.0/conf/hive-site.xml:a attempt to override final >>> parameter: hive.metastore.warehouse.dir; Ignoring.* >>> >>> From the above message I can assume that it has already read the >>> property(don't know from where, or it may be trying to read the property >>> multiple times), but I have explicitly specified the hive conf folder in the >>> hive-env.sh. >>> >>> Below is the stack trace I'm getting in the log file: >>> *2011-05-23 15:11:00,793 ERROR CliDriver >>> (SessionState.java:printError(343)) - Failed with exception >>> java.io.IOException:java.net.ConnectException: Call to localhost/ >>> 127.0.0.1:54310 failed on connection exception: >>> java.net.ConnectException: Connection refused >>> java.io.IOException: java.net.ConnectException: Call to localhost/ >>> 127.0.0.1:54310 failed on connection exception: >>> java.net.ConnectException: Connection refused >>> at >>> org.apache.hadoop.hive.ql.exec.FetchOperator.getNextRow(FetchOperator.java:341) >>> at org.apache.hadoop.hive.ql.exec.FetchTask.fetch(FetchTask.java:133) >>> at org.apache.hadoop.hive.ql.Driver.getResults(Driver.java:1114) >>> at >>> org.apache.hadoop.hive.cli.CliDriver.processCmd(CliDriver.java:187) >>> at >>> org.apache.hadoop.hive.cli.CliDriver.processLine(CliDriver.java:241) >>> at org.apache.hadoop.hive.cli.CliDriver.main(CliDriver.java:456) >>> 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:156) >>> Caused by: java.net.ConnectException: Call to >>> localhost/127.0.0.1:54310failed on connection exception: >>> java.net.ConnectException: Connection >>> refused >>> at org.apache.hadoop.ipc.Client.wrapException(Client.java:767) >>> at org.apache.hadoop.ipc.Client.call(Client.java:743) >>> at org.apache.hadoop.ipc.RPC$Invoker.invoke(RPC.java:220) >>> at $Proxy4.getProtocolVersion(Unknown Source) >>> at org.apache.hadoop.ipc.RPC.getProxy(RPC.java:359) >>> at >>> org.apache.hadoop.hdfs.DFSClient.createRPCNamenode(DFSClient.java:106) >>> at org.apache.hadoop.hdfs.DFSClient.<init>(DFSClient.java:207) >>> at org.apache.hadoop.hdfs.DFSClient.<init>(DFSClient.java:170) >>> at >>> org.apache.hadoop.hdfs.DistributedFileSystem.initialize(DistributedFileSystem.java:82) >>> at >>> org.apache.hadoop.fs.FileSystem.createFileSystem(FileSystem.java:1378) >>> at org.apache.hadoop.fs.FileSystem.access$200(FileSystem.java:66) >>> at org.apache.hadoop.fs.FileSystem$Cache.get(FileSystem.java:1390) >>> at org.apache.hadoop.fs.FileSystem.get(FileSystem.java:196) >>> at org.apache.hadoop.fs.Path.getFileSystem(Path.java:175) >>> at >>> org.apache.hadoop.hive.ql.exec.FetchOperator.getNextPath(FetchOperator.java:241) >>> at >>> org.apache.hadoop.hive.ql.exec.FetchOperator.getRecordReader(FetchOperator.java:259) >>> at >>> org.apache.hadoop.hive.ql.exec.FetchOperator.getNextRow(FetchOperator.java:320) >>> ... 10 more >>> Caused by: java.net.ConnectException: Connection refused >>> at sun.nio.ch.SocketChannelImpl.checkConnect(Native Method) >>> at >>> sun.nio.ch.SocketChannelImpl.finishConnect(SocketChannelImpl.java:567) >>> at >>> org.apache.hadoop.net.SocketIOWithTimeout.connect(SocketIOWithTimeout.java:206) >>> at org.apache.hadoop.net.NetUtils.connect(NetUtils.java:404) >>> at >>> org.apache.hadoop.ipc.Client$Connection.setupIOstreams(Client.java:304) >>> at >>> org.apache.hadoop.ipc.Client$Connection.access$1700(Client.java:176) >>> at org.apache.hadoop.ipc.Client.getConnection(Client.java:860) >>> at org.apache.hadoop.ipc.Client.call(Client.java:720) >>> ... 25 more >>> * >>> Has anybody encountered similar issues earlier ? any thoughts towards >>> resolving the above issue would be helpful >>> >>> Thanks. >>> >> >> >> >> -- >> dujinhang >> > > >