Hadoop调试记录(1)
错误
ERROR: Can't get master address from ZooKeeper; znode data == null
解决
关闭hadoop,发现stop-all.sh后几个进程并没有关闭,提示no namenode to close。恍然觉得原来每次关hadoop都没有关成功,这进程该是很久以前的了。所以原因是hadoop节点的连接出现问题。
有几点需要注意:
(1) 用户权限。kevin用户需要被赋予权限(chmod或者chown,一个是赋予权限,一个是将文件的所有者给指定用户),以后要注意用kevin去操作,不要随便就切换到root。linux下的用户权限是一个大问题,要好好研究,很多出错都是权限上的问题导致permission denied或者path/file not found;
(2) kill进程。以进程1128为例,如果#kill -pid 1128无效,可尝试kill 9 1128。另,进程分为系统进程和用户进程,有些进程需要启用其的用户或者root去kill。
正常kill掉几个进程之后,重开hadoop,除了datanode其他的进程都开了。查看datanode的log发现以下问题:
错误
ERROR org.apache.hadoop.hdfs.server.datanode.DataNode: java.io.IOException: Incompatible namespaceIDs in /tmp/hadoop-kevin/dfs/data: namenode namespaceID = 1234548942; datanode namespaceID = 1169818695
解决
将datanode的namespaceID修改为namenode的namespaceID。命令hadoop namenode -format不能经常使用,清空次数多了namenode的namespaceID就会修改了,造成其与datanode的namespaceID不匹配。
错误
java.io.IOException: Cannot create directory 导致namenode启动失败
解决
无法创建目录的原因,一是目录错了,二是目录对了但没有权限。
检查目录是否出错,若没有则是权限问题。
首先,在hadoop目录下新建几个文件夹
~/hadoop$ mkdir tmp //存放临时文件
~/hadoop$ mkdir hdfs //hdfs的主目录
~/hadoop$ mkdir hdfs/name
~/hadoop$ mkdir hdfs/data
接下来对以上每个文件夹都做chown命令,最好再做一次chmod命令,如下(暂时不熟悉这两个命令的用法,所以都做一次比较保险)。原因:即便之前当前用户(如kevin)对hadoop文件夹及其子文件夹是有“写”权限的,但其子文件夹并不包括后来新建的文件夹,所以kevin是对新建的文件夹没有写权限,导致以上错误。
1 # 将该目录及其子目录的所有者赋给kevin
2 chown -R kevin:kevin ~/usr/hadoop/hadoop/tmp
3 # 赋给当前用户写的权限(这里是的路径是整个hadoop目录)
4 sudo chmod -R a+w ~/usr/hadoop/hadoop
接下来对hadoop/conf下三个配置文件重新做基本配置:
core-site.xml: Core配置项
hdfs-site.xml: HDFS配置项
mapred-site.xml:MapReduce配置项,包括jobtracker和tasktracker
core-site.xml:
<configuration>
<property>
<name>fs.default.name</name>
<value>hdfs://localhost:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>~/usr/hadoop/hadoop/tmp</value>
</property>
</configuration>
hdfs-site.xml:
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.name.dir</name>
<value>~/usr/hadoop/hadoop/hdfs/name</value>
</property>
<property>
<name>dfs.data.dir</name>
<value>~/usr/hadoop/hadoop/hdfs/data</value>
</property>
</configuration>
mapred-site.xml:
<configuration>
<property>
<name>mapred.job.tracker</name>
<value>localhost:9001</value>
</property>
</configuration>
错误
HMaster进程无法启动/秒退/消失
FATAL [ubuntu:16020.activeMasterManager] master.HMaster: Unhandled exception. Starting shutdown.java.io.IOException: Failed on local exception: java.io.IOException: Broken pipe; Host Details : local host is: "ubuntu/127.0.1.1"; destination host is: "localhost":9000;
master无法构建,原因是在dfs中没有implementation
localhost: Exception in thread "main" org.apache.hadoop.ipc.RPC$VersionMismatch: Protocol org.apache.hadoop.hdfs.protocol.ClientProtocol version mismatch. (client = 42, server = 41)
解决
版本问题。此处hadoop版本是1.2.1,hbase的版本是1.0.0。以下为版本匹配表:

从上图可知,hbase-1.0.X可以确定支持的只有hadoop-2.X.X系列。所谓支持即互相间协议、方法是匹配的,不会出现“我调用你的方法,而你没有这个方法的问题”。删了之前的hbase,装了0.98的hbase(这张图中是不含有hadoop-1.2.1这个版本的,网上有人测试过0.98与1.2.1兼容很好)。重新配置了hbase-site.xml
<configuration>
<property>
<name>hbase.rootdir</name>
<value>hdfs://localhost:9000/hbase</value>
</property>
<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
</property>
</configuration>
启动hbase,进程全部启动且非常稳定。打开shell,输入list,成功运行。至此完成了对hbase启动问题的全部调试。
总结:要勤于思考,遇到问题最权威的方法是自己动手查看Log,自己分析。网上的意见有可取的成分,也会有大量片面的、甚至错误的言论,要理智辨别。
最重要的一点,不要放弃。遇到太困难的问题解决不了,不妨搁置一下,几天之后头脑清晰了重新来看,会有奇效。
Hadoop调试记录(1)的更多相关文章
- Hadoop调试记录(2)
自从上次调通hbase后很久没有碰hadoop了,今日想写一个mapreduce的小程序.于是先运行了下自带的wordcount示例程序,却报错了. 信息如下: kevin@ubuntu:~/usr/ ...
- SPI 核软件调试记录
SPI 核软件调试记录 1.首先说说int SpiFlashWaitForFlashReady(void)这一函数,基本上其它函数在执行的时候,都会事先执行一次此函数. 因为此函数的作用主要是用 ...
- Video Timing Controller v6.1软件调试记录
Video Timing Controller v6.1软件调试记录 GUI配置: . case XVTC_VMODE_PAL: //576i@50 { TimingPtr->Interlace ...
- Video Test Pattern Generator(7.0)软件调试记录
Video Test Pattern Generator(7.0)软件调试记录 . XVidC_VideoMode XVIDC_VM_576_50_I = XVIDC_VM_720x576_50_I ...
- hadoop学习记录1 初始hadoop
起因 因为工作需要用到,所以需要学习hadoop,所以记录这篇文章,主要分享自己快速搭建hadoop环境与运行一个demo 搭建环境 网上搭建hadoop环境的例子我看蛮多的.但是我看都比较复杂,要求 ...
- MA82G5D16AS16 主频调试记录
MA82G5D16AS16 主频调试记录 当 SCKS 设置 为 MCKDO / 128 时 MCU 的电流为 0.58mA,100UF 电容可以维持 0.5S,大概可以满足. 但是需要注意外围的线路 ...
- Apusic中间件结合MyEclipse进行远程调试记录
Apusic中间件结合MyEclipse进行远程调试记录. 在金蝶域中正常部署应用. 启动金蝶中间件时使用"startapusic -ds"命令. 在MyEclipse的Run-- ...
- http://stblog.baidu-tech.com/?p=1684) coredump调试记录 - PHP篇 原创: 扶墙 贝壳产品技术 今天
http://stblog.baidu-tech.com/?p=1684) coredump调试记录 - PHP篇 原创: 扶墙 贝壳产品技术 今天
- 基于freescale i.Mx6(ARM)的阿里云oss调试记录
交叉编译阿里OSS调试记录 1.1 开通oss服务 具体参考以下链接: https://help.aliyun.com/document_detail/31884.html?spm=a2c4g.111 ...
随机推荐
- 前端萌新眼中的Promise及使用
一个 Promise 就是一个代表了异步操作最终完成或者失败的对象.这是MDN上关于Promise的解释.在前端开发中,Promise经常被拿来用于处理异步和回调的问题,来规避回调地狱和更好排布异步相 ...
- 微信h5页面调用第三方位置导航
微信h5页面拉起第三方导航应用 需要准备的: 通过微信认证的公众号有备案过的域名 背景:微信公众号点击菜单栏跳到h5页面,需要用到导航功能 需求:当用户点击导航按钮时,跳转到第三方app进行导航 参考 ...
- 前端每日实战:85# 视频演示如何用纯 CSS 创作一个小球反弹的动画
效果预览 按下右侧的"点击预览"按钮可以在当前页面预览,点击链接可以全屏预览. https://codepen.io/comehope/pen/OwWROO 可交互视频 此视频是可 ...
- 沃土前端系列 - HTML常用标签
html是什么 HTML是Hyper Text Markup Language的缩写,中文的意思是"超文本标记语言",它是制作网页的标准语言.由于网页中不仅包含普通文本,还包含超文 ...
- Python-Pyquery库的安装和调用
解析库pyquery:# pip安装pyquery库pip3 install pyquery from pyquery import PyQuery as pq # 定义doc,输入html源代码 d ...
- 整合Kafka+Flink 实例(第二部分 设计思路)
前 言 拖了蛮久了,一直说要接着上一部分写设计思路以及代码,因为自己技术底子薄弱,加上人又懒,所以一直没能继续,今天补上设计思路及部分代码,后面有时间我会再补充一些应用性的功能,的确有些忙,希 ...
- Java原来还可以这么学:如何搞定面试中必考的集合类
原创声明 本文作者:黄小斜 转载请务必在文章开头注明出处和作者. 系列文章介绍 本文是<五分钟学Java>系列文章的一篇 本系列文章主要围绕Java程序员必须掌握的核心技能,结合我个人三年 ...
- socket TCP 从0实现音频传输 ALSA 播放
RTP标准是采用 UDP 发送,有不少现成的开源库,但不在本文讨论的范围内.UDP 用户数据报,不提供流程,安全传输的功能,但速度快,能提供多播,广播,没有序列号 SEQ ,有 MTU 限制,1500 ...
- 误用git reset -hard 的检讨书
误用git reset -hard 的检讨书 消失的代码们: 我知道你们可能看不到了,但是我还是需要自我反省自己,因为自己的误操作,导致了你们的消失. 事情的始末 夜阑人静,周围除了少年敲击键盘的声音 ...
- layui的form表单的checkbox全选与全不选问题
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <m ...