Eclipse调试Hbase程序“Failed to detect a valid hadoop home directory java.id.IOException”问题
2014-11-24 22:16
666 查看
在eclipse调试hbase程序时发现如下日志:
[align=left]2014-11-21 16:27:56,030 DEBUG [org.apache.hadoop.util.Shell] - Failed to detect a valid hadoop home directory[/align]
java.io.IOException :
HADOOP_HOME or hadoop.home.dir are not set.
[align=left] at org.apache.hadoop.util.Shell.checkHadoopHome( Shell.java:225)[/align]
[align=left] at org.apache.hadoop.util.Shell.<clinit>( Shell.java:250)[/align]
[align=left] at org.apache.hadoop.util.StringUtils.<clinit>(StringUtils.java:76)[/align]
[align=left] at org.apache.hadoop.conf.Configuration.getStrings(Configuration.java:1514)[/align]
[align=left] at org.apache.hadoop.hbase.zookeeper.ZKConfig.makeZKProps(ZKConfig.java:113)[/align]
[align=left] at org.apache.hadoop.hbase.zookeeper.ZKConfig.getZKQuorumServersString(ZKConfig.java:265)[/align]
[align=left] at org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher.<init>(ZooKeeperWatcher.java:159)[/align]
[align=left] at org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher.<init>(ZooKeeperWatcher.java:134)[/align]
[align=left] at org.apache.hadoop.hbase.client.ZooKeeperKeepAliveConnection.<init>(ZooKeeperKeepAliveConnection.java:43)[/align]
[align=left] at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.getKeepAliveZooKeeperWatcher(HConnectionManager.java:1763)[/align]
[align=left] at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getClusterId(ZooKeeperRegistry.java:82)[/align]
[align=left] at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.retrieveClusterId(HConnectionManager.java:852)[/align]
[align=left] at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.<init>(HConnectionManager.java:657)[/align]
at sun.reflect.NativeConstructorAccessorImpl.newInstance0( Native
Method)
[align=left] at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)[/align]
[align=left] at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)[/align]
[align=left] at java.lang.reflect.Constructor.newInstance( Constructor.java:513)[/align]
[align=left] at org.apache.hadoop.hbase.client.HConnectionManager.createConnection(HConnectionManager.java:409)[/align]
[align=left] at org.apache.hadoop.hbase.client.HConnectionManager.createConnection(HConnectionManager.java:304)[/align]
[align=left] at com.emar.adx.yiqifa.dal.common.hbase.HBaseConnectionFactory.getConnection(HBaseConnectionFactory.java:54)[/align]
[align=left] at com.emar.adx.yiqifa.dal.common.hbase.HBaseUtils.getConnnection(HBaseUtils.java:34)[/align]
[align=left] at com.emar.adx.yiqifa.dal.common.hbase.HBaseUtilsTest.testGetTable(HBaseUtilsTest.java:39)[/align]
at sun.reflect.NativeMethodAccessorImpl.invoke0( Native
Method)
[align=left] at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)[/align]
[align=left] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)[/align]
[align=left] at java.lang.reflect.Method.invoke( Method.java:597)[/align]
[align=left] at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:44)[/align]
[align=left] at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)[/align]
[align=left] at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:41)[/align]
[align=left] at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20)[/align]
[align=left] at org.junit.runners.BlockJUnit4ClassRunner.runNotIgnored(BlockJUnit4ClassRunner.java:79)[/align]
[align=left] at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:71)[/align]
[align=left] at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:49)[/align]
[align=left] at org.junit.runners.ParentRunner$3.run( ParentRunner.java:193)[/align]
[align=left] at org.junit.runners.ParentRunner$1.schedule( ParentRunner.java:52)[/align]
[align=left] at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:191)[/align]
[align=left] at org.junit.runners.ParentRunner.access$000( ParentRunner.java:42)[/align]
[align=left] at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:184)[/align]
[align=left] at org.junit.runners.ParentRunner.run( ParentRunner.java:236)[/align]
[align=left] at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:49)[/align]
[align=left] at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)[/align]
[align=left] at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)[/align]
[align=left] at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)[/align]
[align=left] at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)[/align]
[align=left] at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)[/align]
[align=left]从日志上来看这只是一个debug信息,但探索究竟是程序员的天性,于是毅然决然的走上了探寻究竟的道路,行从Shell.java开始,Shell.java中通过System.getProperties("hadoop.home.dir")和System.env("HADOOP_HOME")获取HADOOP_HOME目录,如果在开发环境中没有设置这两个环境变量任何一个,程序运行是就会打出上面的日志。[/align]
[align=left] 知道了日志输出的原因就有了解决办法(假设开发环境中hadoop安装在d:\hadoop目录下):[/align]
方法一:在windows中设置环境变量HOADOOP_HOME=d:\hadoop
方法二:在测试程序时通过System.setProperty("hadoop.home.dir", "d:\\hadoop")
[align=left] [/align]
[align=left] 以上日志不是HBase的程序输出的,在Hadoop开发中也会遇到这样的日志,也可以通过上面的方法解决。[/align]
[align=left]2014-11-21 16:27:56,030 DEBUG [org.apache.hadoop.util.Shell] - Failed to detect a valid hadoop home directory[/align]
java.io.IOException :
HADOOP_HOME or hadoop.home.dir are not set.
[align=left] at org.apache.hadoop.util.Shell.checkHadoopHome( Shell.java:225)[/align]
[align=left] at org.apache.hadoop.util.Shell.<clinit>( Shell.java:250)[/align]
[align=left] at org.apache.hadoop.util.StringUtils.<clinit>(StringUtils.java:76)[/align]
[align=left] at org.apache.hadoop.conf.Configuration.getStrings(Configuration.java:1514)[/align]
[align=left] at org.apache.hadoop.hbase.zookeeper.ZKConfig.makeZKProps(ZKConfig.java:113)[/align]
[align=left] at org.apache.hadoop.hbase.zookeeper.ZKConfig.getZKQuorumServersString(ZKConfig.java:265)[/align]
[align=left] at org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher.<init>(ZooKeeperWatcher.java:159)[/align]
[align=left] at org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher.<init>(ZooKeeperWatcher.java:134)[/align]
[align=left] at org.apache.hadoop.hbase.client.ZooKeeperKeepAliveConnection.<init>(ZooKeeperKeepAliveConnection.java:43)[/align]
[align=left] at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.getKeepAliveZooKeeperWatcher(HConnectionManager.java:1763)[/align]
[align=left] at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getClusterId(ZooKeeperRegistry.java:82)[/align]
[align=left] at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.retrieveClusterId(HConnectionManager.java:852)[/align]
[align=left] at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.<init>(HConnectionManager.java:657)[/align]
at sun.reflect.NativeConstructorAccessorImpl.newInstance0( Native
Method)
[align=left] at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)[/align]
[align=left] at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)[/align]
[align=left] at java.lang.reflect.Constructor.newInstance( Constructor.java:513)[/align]
[align=left] at org.apache.hadoop.hbase.client.HConnectionManager.createConnection(HConnectionManager.java:409)[/align]
[align=left] at org.apache.hadoop.hbase.client.HConnectionManager.createConnection(HConnectionManager.java:304)[/align]
[align=left] at com.emar.adx.yiqifa.dal.common.hbase.HBaseConnectionFactory.getConnection(HBaseConnectionFactory.java:54)[/align]
[align=left] at com.emar.adx.yiqifa.dal.common.hbase.HBaseUtils.getConnnection(HBaseUtils.java:34)[/align]
[align=left] at com.emar.adx.yiqifa.dal.common.hbase.HBaseUtilsTest.testGetTable(HBaseUtilsTest.java:39)[/align]
at sun.reflect.NativeMethodAccessorImpl.invoke0( Native
Method)
[align=left] at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)[/align]
[align=left] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)[/align]
[align=left] at java.lang.reflect.Method.invoke( Method.java:597)[/align]
[align=left] at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:44)[/align]
[align=left] at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)[/align]
[align=left] at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:41)[/align]
[align=left] at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20)[/align]
[align=left] at org.junit.runners.BlockJUnit4ClassRunner.runNotIgnored(BlockJUnit4ClassRunner.java:79)[/align]
[align=left] at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:71)[/align]
[align=left] at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:49)[/align]
[align=left] at org.junit.runners.ParentRunner$3.run( ParentRunner.java:193)[/align]
[align=left] at org.junit.runners.ParentRunner$1.schedule( ParentRunner.java:52)[/align]
[align=left] at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:191)[/align]
[align=left] at org.junit.runners.ParentRunner.access$000( ParentRunner.java:42)[/align]
[align=left] at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:184)[/align]
[align=left] at org.junit.runners.ParentRunner.run( ParentRunner.java:236)[/align]
[align=left] at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:49)[/align]
[align=left] at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)[/align]
[align=left] at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)[/align]
[align=left] at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)[/align]
[align=left] at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)[/align]
[align=left] at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)[/align]
[align=left]从日志上来看这只是一个debug信息,但探索究竟是程序员的天性,于是毅然决然的走上了探寻究竟的道路,行从Shell.java开始,Shell.java中通过System.getProperties("hadoop.home.dir")和System.env("HADOOP_HOME")获取HADOOP_HOME目录,如果在开发环境中没有设置这两个环境变量任何一个,程序运行是就会打出上面的日志。[/align]
[align=left] 知道了日志输出的原因就有了解决办法(假设开发环境中hadoop安装在d:\hadoop目录下):[/align]
方法一:在windows中设置环境变量HOADOOP_HOME=d:\hadoop
方法二:在测试程序时通过System.setProperty("hadoop.home.dir", "d:\\hadoop")
[align=left] [/align]
[align=left] 以上日志不是HBase的程序输出的,在Hadoop开发中也会遇到这样的日志,也可以通过上面的方法解决。[/align]
相关文章推荐
- windows下eclipse远程连接hadoop错误“Exception in thread"main"java.io.IOException: Call to Master.Hadoop/172.20.145.22:9000 failed ”
- Eclipse下调试HBase程序报“Will not attempt to authenticate using SASL (java.lang.SecurityException : 无法定位登”
- 关于打开Eclipse时出现eclipse failed to create the java virtual machine与locking is not possible in the directory问题的解决
- eclipse failed to create the java virtual machine 问题图文解析
- eclipse failed to create the java virtual machine 问题图文解析
- JAVA的HttpClient问题:The server failed to respond with a valid HTTP response
- eclipse failed to create the java virtual machine 问题图文解析
- eclipse failed to create the java virtual machine 问题图文解析
- eclipse Failed to get the adb version platform-tools/adb": java.io.IOException: error=1,权限不够
- eclipse failed to create the java virtual machine 问题图文解析
- Tomcat java.io.IOException: tmpFile.renameTo(classFile) failed 的问题
- myEclipse中改了项目名,出现的问题 和 错误java.io.IOException: tmpFile.renameTo(classFile) failed
- java.io.IOException: File /home/hadoop/mapred/system/jobtracker.info could only be replicated to 0 n
- eclipse Failed to create the Java Virtual Machine的问题
- eclipse failed to create the java virtual machine 问题图文解析
- eclipse failed to create the java virtual machine 问题图文解析
- eclipse failed to create the java virtual machine 问题图文解析
- eclipse failed to create the java virtual machine 问题图文解析
- java.io.IOException: File /home/hadoop/mapred/system/jobtracker.info could only be replicated to 0 n
- eclipse failed to create the java virtual machine 问题图文解析