云计算学习笔记---异常处理---hadoop问题处理ERROR org.apache.hadoop.hdfs.server.datanode.DataNode: java.lang.NullPointerException

      不知道大家在学习云计算的时候怎么搭建的环境,个人用的是hadoop4win-setup-full_0.1.5,这款软件,这个软件集成了云计算中需要的软件,只要装上就可以搭建出环境,但是装好之后,也许用该软件的朋友都会发现一个这样的问题,刚刚开始用的时候没有问题,但是以后第二回,第三回的时候会报这个错误: ERRORorg.apache.hadoop.hdfs.server.datanode.DataNode: java.lang.NullPointerException

就这个问题网上搜了很多方法,都不靠谱啊….说改配置文件,但是配置文件有两个部分,

一个是D:\hadoop4win\opt\hadoop\conf-local这个目录下的:

还有一个是conf-pseudo这个目录下的.改了都不管用.

最后我的解决方法是,conf-local这个文件夹修改了以后,然后拷贝一份重命名为conf问题解决.下面是配置文件的

配置方法以及常见问题,收集于网络.

第一步:修改core-site.xml,配置如下内容:

<?xml version="1.0"?>

<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<!-- Put site-specific property overridesin this file. -->

<configuration>

<property>

<name>fs.default.name</name>

<value>hdfs://localhost:9000</value>

<final>true</final>

</property>

<property>

<name>dfs.replication</name>

<value>1</value>

</property>

</configuration>

第二步:修改hdfs-site.xml文件,配置如下内容:

<?xml version="1.0"?>

<?xml-stylesheet type="text/xsl"href="configuration.xsl"?>

<!-- Put site-specific property overridesin this file. -->

<configuration>

<property>

<name>dfs.name.dir</name>

<value>/cygdrive/d/hadoop/working/name</value>

<final>true</final>

</property>

<property>

<name>dfs.data.dir</name>

<value>/cygdrive/d/hadoop/working/data</value>

<final>true</final>

</property>

<property>

<name>fs.checkpoint.dir</name>

<value>/cygdrive/d/hadoop/working/checkpoint</value>

<final>true</final>

</property>

</configuration>

第三步:修改mapred-site.xml配置如下内容:

<?xml version="1.0"?>

<?xml-stylesheet type="text/xsl"href="configuration.xsl"?>

<!-- Put site-specific property overridesin this file. -->

<configuration>

<property>

<name>mapred.job.tracker</name>

<value>hdfs://localhost:9001</value>

<final>true</final>

</property>

<property>

<name>mapred.local.dir</name>

<value>/cygdrive/d/hadoop/working/dir1,/cygdrive/d/hadoop/working/dir2</value>

<final>true</final>

</property>

<property>

<name>mapred.system.dir</name>

<value>/cygdrive/d/hadoop/working/system</value>

<final>true</final>

</property>

</configuration>

4步,进入cygwin客户端,执行

$ cd /cygdrive/d/hadoop 【其中/d/hadoophadoop安装目录,即d:\hadooplinux表示路径和windows不同】

$ bin/hadoop namenode –format 【格式化namenode

5步,修改工作目录权限

$ bin/hadoop dfs chmod 777/cygdrive/d/hadoop/working /cygdrive/d/hadoop/working 为工作目录,默认是tmp

6步,启动hadoop

$ bin/start-all.sh

$ ps –ef

通过ps查看进程,能看到5java进程,即成功。

常见问题

(1)

执行$ bin/hadoop start-all.sh之后,无法启动,在logsnamenode日志发现如下内容:

2011-08-03 08:43:08,068 ERRORorg.apache.hadoop.hdfs.server.namenode.NameNode: java.lang.NullPointerException

at org.apache.hadoop.net.NetUtils.createSocketAddr(NetUtils.java:136)

atorg.apache.hadoop.hdfs.server.namenode.NameNode.getAddress(NameNode.java:176)

atorg.apache.hadoop.hdfs.server.namenode.NameNode.getAddress(NameNode.java:206)

at org.apache.hadoop.hdfs.server.namenode.NameNode.initialize(NameNode.java:240)

atorg.apache.hadoop.hdfs.server.namenode.NameNode.<init>(NameNode.java:434)

atorg.apache.hadoop.hdfs.server.namenode.NameNode.createNameNode(NameNode.java:1153)

at org.apache.hadoop.hdfs.server.namenode.NameNode.main(NameNode.java:1162)

解决方法:此时是没有配置conf/mapred-site.xml的缘故. 配置core-site.xml文件

<property>

<name>fs.default.name</name>

<value>hdfs://localhost:9000</value>

<final>true</final>

</property>

配置mapred-site.xml文件:

<property>

<name>mapred.job.tracker</name>

<value>hdfs://localhost:9001</value>

<final>true</final>

</property>

2)执行hadoop fs -ls

显示结果:ls: Cannot access .: No such file or directory.

这是这个目录为空所致。执行

hadoop fs -ls /

可以看到有一条结果。执行hadoop fs -mkdir hello 其中hello为文件夹名字,再执行ls命令,即可看到结果。

(3) TaskTracker无法启动,在logs中查看tasktracker日志,出现如下错误:

2011-08-03 08:46:45,750 ERRORorg.apache.hadoop.mapred.TaskTracker: Can not start task tracker becausejava.io.IOException: Failed to set permissions of path:/cygdrive/d/hadoop/working/dir1/ttprivate to 0700

at org.apache.hadoop.fs.RawLocalFileSystem.checkReturnValue(RawLocalFileSystem.java:525)

atorg.apache.hadoop.fs.RawLocalFileSystem.setPermission(RawLocalFileSystem.java:499)

atorg.apache.hadoop.fs.RawLocalFileSystem.mkdirs(RawLocalFileSystem.java:318)

at org.apache.hadoop.fs.FilterFileSystem.mkdirs(FilterFileSystem.java:183)

atorg.apache.hadoop.mapred.TaskTracker.initialize(TaskTracker.java:635)

atorg.apache.hadoop.mapred.TaskTracker.<init>(TaskTracker.java:1328)

atorg.apache.hadoop.mapred.TaskTracker.main(TaskTracker.java:3430)

解决方式:1.确认hadoop的版本,在0.20.203版本上有这个bug,切换会0.20.2版本;2. 执行第5步,授权

通过浏览器访问 http://localhost:50070/ ,能正常访问,表示namenode配置成功

 

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐