hadoop 常见问题记录_Hadoop,ERP及大数据讨论区_Weblogic技术|Tuxedo技术|中间件技术|Oracle论坛|JAVA论坛|Linux/Unix技术|hadoop论坛_联动北方技术论坛  
网站首页 | 关于我们 | 服务中心 | 经验交流 | 公司荣誉 | 成功案例 | 合作伙伴 | 联系我们 |
联动北方-国内领先的云技术服务提供商
»  游客             当前位置:  论坛首页 »  自由讨论区 »  Hadoop,ERP及大数据讨论区 »
总帖数
1
每页帖数
101/1页1
返回列表
0
发起投票  发起投票 发新帖子
查看: 3293 | 回复: 0   主题: hadoop 常见问题记录        上一篇   下一篇 
sysbobo
注册用户
等级:新兵
经验:46
发帖:66
精华:0
注册:2012-2-21
状态:离线
发送短消息息给sysbobo 加好友    发送短消息息给sysbobo 发消息
发表于: IP:您无权察看 2015-4-29 10:46:18 | [全部帖] [楼主帖] 楼主

1、运行  :hadoop namenode -format 报错误信息如下:

14/05/15 17:13:35 INFO common.Storage: Cannot lock storage /usr/hadoop/dfs/name. The directory is already locked.
14/05/15 17:13:35 ERROR namenode.NameNode: java.io.IOException: Cannot lock storage /usr/hadoop/dfs/name. The directory is already locked.
at org.apache.hadoop.hdfs.server.common.Storage$StorageDirectory.lock(Storage.java:602)
at org.apache.hadoop.hdfs.server.namenode.FSImage.format(FSImage.java:1321)
at org.apache.hadoop.hdfs.server.namenode.FSImage.format(FSImage.java:1339)
at org.apache.hadoop.hdfs.server.namenode.NameNode.format(NameNode.java:1164)
at org.apache.hadoop.hdfs.server.namenode.NameNode.createNameNode(NameNode.java:1271)
at org.apache.hadoop.hdfs.server.namenode.NameNode.main(NameNode.java:1288)


解决方法:

[root@localhost hadoop-1.0.3]# chown -R root:123456 /usr/hadoop


 root为当前登录用户名,123456:为登录密码

其中:cat conf/core-site.xml

<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<!-- Put site-specific property overrides in this file. -->
<configuration>
<property>
<name>hadoop.tmp.dir</name>
<value>/usr/hadoop</value>
</property>
<property>
<name>fs.default.name</name>
<value>hdfs://192.168.0.109:9000</value>
</property>
</configuration>


2、 DataNode不能启动:

在客户端日志显示 namenode namespaceID = 1713611278; datanode namespaceID = 596511341

这个问题基本上是因为在namenode端多次运行hadoop namenode –format 导致的。在hadoop的core-site.xml文件中(不同的hadoop版本名字会有不同)找到<name>hadoop.tmp.dir</name>,清空对应的文件夹。举例:

[hadoop@hadoop-datanode1 hadoop]$ cat core-site.xml<?xml version="1.0"?><?xml-stylesheet type="text/xsl" href="configuration.xsl"?><!-- Put site-specific property overrides in this file. --><configuration><!--global properties --><property><name>hadoop.tmp.dir</name><value>/usr/hadoop/tmp</value></property>

清空

[hadoop@hadoop-datanode1 tmp]$ rm -rf /usr/hadoop/tmp/*

然后重新启动hadoop,在datanode端用jps看是否datanode已经启动了。

3、通过命令和查看日志文件查看hadoop启动和运行情况

在NameNode端,可以通过

tail -100 /var/log/hadoop/hadoop/hadoop-hadoop-namenode-hadoop-namenode.log

查看NameNode的运行日志

在DataNode端也可以通过

cat /var/log/hadoop/hadoop/hadoop-hadoop-datanode-hadoop-datanode1.log

查看DataNode的运行日志。

通过jps命令分别在datanode和namenode端运行,查看已启动的服务。

4、ERROR org.apache.hadoop.hdfs.server.datanode.DataNode: java.io.IOException: Incompatible namespaceIDs in

ERROR org.apache.hadoop.hdfs.server.datanode.DataNode: java.io.IOException: Incompatible namespaceIDs in /usr/hadoop/dfs/data: namenode namespaceID = 1988494166; datanode namespaceID = 1906089544


导致datanode启动不了。
原因:每次namenode format会重新创建一个namenodeId,而dfs.data.dir参数配置的目录中包含的是上次format创建的id,和dfs.name.dir参数配置的目录中的id不一致。namenode format清空了namenode下的数据,但是没有清空datanode下的数据,导致启动时失败,所要做的就是每次fotmat前,清空dfs.data.dir参数配置的目录.
格式化hdfs的命令

  1. hadoop namenode -format 


5、Warning: $HADOOP_HOME is deprecated. hadoop1.0.4解决方法

启动Hadoop时报了一个警告信息,我安装的Hadoop版本是hadoop1.0.4,具体警告信息如下:

  1. [root@localhost hadoop-1.0.4]# ./bin/start-all.sh  
  2. Warning: $HADOOP_HOME is deprecated. 

网上的说法是因为Hadoop本身对HADOOP_HOME做了判断,具体在bin/hadoop和bin/hadoop-config.sh里。在hadoop-config.sh里有如下的配置:

  1. if [ "$HADOOP_HOME_WARN_SUPPRESS" ="" ] && [ "$HADOOP_HOME" !="" ]; then 
  2.   echo "Warning: \$HADOOP_HOME is deprecated."1>&2
  3.   echo 1>&2
  4. fi 


对于这个警告问题,解决方法如下:

1.注释掉hadoop-config.sh里的上面给出的这段if fi配置(不推荐)

2.在当前用户home/.bash_profile里增加一个环境变量:

vi .bash_profile


在文件中输入:

export HADOOP_HOME_WARN_SUPPRESS=1 / true  ?自己试试

注:修改完.bash_profile后需要执行source操作使其生效

  1. [root@localhost ~]# source .bash_profile 

执行完后我们可以检验一下配置是否成功,重新执行start-all.sh脚本:

  1. [root@localhost hadoop-1.0.4]# ./bin/start-all.sh  
  2. starting namenode, logging to /root/hadoop-1.0.4/libexec/../logs/hadoop-root-namenode-localhost.out 
  3. localhost: starting datanode, logging to /root/hadoop-1.0.4/libexec/../logs/hadoop-root-datanode-localhost.out 
  4. localhost: starting secondarynamenode, logging to /root/hadoop-1.0.4/libexec/../logs/hadoop-root-secondarynamenode-localhost.out 
  5. starting jobtracker, logging to /root/hadoop-1.0.4/libexec/../logs/hadoop-root-jobtracker-localhost.out 
  6. localhost: starting tasktracker, logging to /root/hadoop-1.0.4/libexec/../logs/hadoop-root-tasktracker-localhost.out 


没有出现Warning: $HADOOP_HOME is deprecated,说明问题已经解决。

6、Hadoop MapReduce输出结果中文乱码问题解决

在Reduce程序的

public void reduce(Text key, Iterable<Text> values, Context context)    throws IOException, InterruptedException


的方法最后写入文件时, 对内容进行转码为GBK,如下程序代码:

Text record = new Text();
record.set(line.toString().getBytes("GBK"));// 输出为中文
context.write(record, null);


--转自 北京联动北方科技有限公司




赞(0)    操作        顶端 
总帖数
1
每页帖数
101/1页1
返回列表
发新帖子
请输入验证码: 点击刷新验证码
您需要登录后才可以回帖 登录 | 注册
技术讨论