前言
通常我们在运行HDFS都是编译源码并配置Hadoop环境变量,然后进入sbin目录中
前言
通常我们在运行HDFS都是编译源码并配置Hadoop环境变量,然后进入sbin目录中
用来启动hdfs的,如果想要看看NameNode的启动是不是需要配置远程调试了。(我以前弄过,但是之前没有写过博客)。
如果可以在本地就可以调试这些内容是不是更能了解内部是如何处理的。
实战
需要准备什么东东呢?
hadoop源码(我用的是2.7.0,你们随意)
IDEA或者eclipse等等用来导入源码,方便阅读。
假设以上内容已经齐全,现在开始进入主题。
|
|
导入之后,找到hdfs项目的NameNode和DataNode运行即可。
你以为这就结束了???
接下来,我来说说在部署和启动遇到的问题吧。
1、webapps/hdfs not found in CLASSPATH
出现这个异常是在启动NameNode的时候出现的,下面是具体抛出异常的代码(hadoop-common项目http包下的HttpServer2)
|
|
当我debug的时候,他一直找我的hadoop-common的jar的webapp中的hdfs目录,所以导致我一直出现
找不到的异常,后来我重写一个该类指定hdfs项目的路径解决可以运行(如果还有其他的解决方案请在评论下方说明一下,万分感谢!), 还有个datanode目录没有找到的异常是在运行DataNode出现的
具体出现的位置我给忘记了,😝😝😝😝
2、Exception in thread “main” java.lang.IllegalArgumentException: Invalid URI for NameNode address (check fs.defaultFS): file:/// has no authority.
出现此异常首先去stackoverflow找了下答案,如下:
但是对我是无效的,后来知道原因我使用的是core-default.xml的配置没有生效。
但是一开始我就是defualt的配置也能正常运行。。。(奇怪的问题)
如下代码是抛出异常的代码:
|
|
至于为什么会这样,在FileSystem类中有这么一段
至此,我这里就把我遇到的问题全部说完了。
最后,在给大家演示一下,我运行hadoop fs -put localPath hdfsPath是如何断点的。