我按照慕课网上的教程来学习搭建hadoop-1.2.1环境,可是在start-all.sh这步的时候一直通不过,命令行报如下错误

[@soguo /home/denglinjie/hadoop]# start-all.sh
Warning: $HADOOP_HOME is deprecated.starting namenode, logging to /home/denglinjie/hadoop-1.2.1/logs/hadoop-denglinjie-namenode-bjzw_30_4.out
localhost: ssh_exchange_identification: Connection closed by remote host
localhost: ssh_exchange_identification: Connection closed by remote host
starting jobtracker, logging to /home/denglinjie/hadoop-1.2.1/logs/hadoop-denglinjie-jobtracker-bjzw_30_4.out
localhost: ssh_exchange_identification: Connection closed by remote host

日志文件报如下错误:

2017-03-02 19:28:00,951 WARN org.apache.hadoop.hdfs.DFSClient: Error Recovery for null bad datanode[0] nodes == null
2017-03-02 19:28:00,952 WARN org.apache.hadoop.hdfs.DFSClient: Could not get block locations. Source file "/home/denglinjie/hadoop/tmp/mapred/system/jobtracker.info" - Aborting
...
2017-03-02 19:28:00,952 WARN org.apache.hadoop.mapred.JobTracker: Writing to file hdfs://localhost:9063/home/denglinjie/hadoop/tmp/mapred/system/jobtracker.info failed!
2017-03-02 19:28:00,952 WARN org.apache.hadoop.mapred.JobTracker: FileSystem is not ready yet!
2017-03-02 19:28:00,954 WARN org.apache.hadoop.mapred.JobTracker: Failed to initialize recovery manager.
org.apache.hadoop.ipc.RemoteException: java.io.IOException: File /home/denglinjie/hadoop/tmp/mapred/system/jobtracker.info could only be replicated to 0 nodes, instead of 1at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.getAdditionalBlock(FSNamesystem.java:1920)at org.apache.hadoop.hdfs.server.namenode.NameNode.addBlock(NameNode.java:783)at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)at java.lang.reflect.Method.invoke(Method.java:597)at org.apache.hadoop.ipc.RPC$Server.call(RPC.java:587)at org.apache.hadoop.ipc.Server$Handler$1.run(Server.java:1432)at org.apache.hadoop.ipc.Server$Handler$1.run(Server.java:1428)at java.security.AccessController.doPrivileged(Native Method)at javax.security.auth.Subject.doAs(Subject.java:396)at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1190)at org.apache.hadoop.ipc.Server$Handler.run(Server.java:1426)at org.apache.hadoop.ipc.Client.call(Client.java:1113)at org.apache.hadoop.ipc.RPC$Invoker.invoke(RPC.java:229)at com.sun.proxy.$Proxy7.addBlock(Unknown Source)at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)at java.lang.reflect.Method.invoke(Method.java:597)at org.apache.hadoop.io.retry.RetryInvocationHandler.invokeMethod(RetryInvocationHandler.java:85)at org.apache.hadoop.io.retry.RetryInvocationHandler.invoke(RetryInvocationHandler.java:62)at com.sun.proxy.$Proxy7.addBlock(Unknown Source)at org.apache.hadoop.hdfs.DFSClient$DFSOutputStream.locateFollowingBlock(DFSClient.java:3720)at org.apache.hadoop.hdfs.DFSClient$DFSOutputStream.nextBlockOutputStream(DFSClient.java:3580)at org.apache.hadoop.hdfs.DFSClient$DFSOutputStream.access$2600(DFSClient.java:2783)at org.apache.hadoop.hdfs.DFSClient$DFSOutputStream$DataStreamer.run(DFSClient.java:3023)

首先解决命令行报的错误:

localhost: ssh_exchange_identification: Connection closed by remote host

从google中找问题,发现网上的解决办法千奇百怪,有的说要修改slaves和masters文件中的主机名为ip地址,有的说是因为主机名不能有下划线,但是其实我的主机名用的默认的localhost,总之尝试了网上的各种解决办法,都失败,网上大多数办法都是集中在如下几个配置文件配置的问题上:

core-site.xml,  mapred-site.xml,  hdfs-site.xml

不过无论我怎么配置都不行,于是一下午都没有找到原因

第二天来之后,我想了下也许慕课网那个视频教程是精简版的呢,于是我索性自己从google上搜索了一篇hadoop-1.2.1搭建本地伪分布式安装的教程,按照别人的教程来,文章地址如下:

https://hexo2hexo.github.io/hadoop1.2.1%E5%AE%89%E8%A3%85/

这篇文章中的步骤其实和慕课网的视频教程步骤基本雷同,但是多了如下步骤:

1.生成秘钥
ssh-keygen -t rsa
2.一直回车即可,然后进入.ssh目录,执行命令
cd ~/.ssh
cp id_rsa.pub authorized_keys
3.检查是否需要密码
ssh localhost

这很显然是设置免密码登陆啊,于是我按照它的步骤操作了一遍,发现执行到ssh localhost这步的时候,报了如下错误:

ssh_exchange_identification: Connection closed by remote host

我一看,这步跟我启动hadoop的时候报的错误是一样的吗?感情启动hadoop的时候就是在执行ssh  localhost这步呢,于是原因也找到了,

jobtracker.info could only be replicated to 0 nodes, instead of 1

上面这个应该只是ssh执行失败的结果,而不是造成问题的主要原因,既然这样那只要保证ssh  localhost成功登陆本地主机不就OK了吗

于是又在网上一通找,

首先开启了/etc/ssh/sshd_config配置文件中的如下几个选项

RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile  .ssh/authorized_key

然后重启ssh服务

# service  sshd   restart

发现不好使,还是登陆不上,然后又把/etc/hosts.deny文件中的

# sshd  ALL

这行注释打开,重启sshd服务,再次登陆成功了!

于是迫不及待的重新执行

# stop-all.sh
# hadoop namenode -format
# start-all.sh

成功了!!!

执行jps命令,成功看到了如下输出:

[@sohuo ~/hadoop-1.2.1]$ jps
30999 Jps
30510 DataNode
30651 SecondaryNameNode
30885 TaskTracker
30395 NameNode
30760 JobTracker

然后说下日志文件报的错误:

jobtracker.info could only be replicated to 0 nodes, instead of 1

这个问题,网上的解决办法也是多种多样,有的说是防火墙没关闭,但是其实我的机器根本没有防火墙。有的说是目录没有删除干净等等。

当然最后解决我问题的还是磁盘空间不足的问题。

在core-site.xml文件和hdfs-site.xml文件中配置的有namenode和datanode放置的目录,我的机器上,这个目录所在盘已经满了,于是我修改这两个文件配置到了另外一个盘上,问题就解决了。

其实一开始,我把hadoop-1.2.1.tar.gz文件解压到我自己的用户家目录下的时候就发现莫名其妙的异常,就是加压后的一些脚本文件内容都是空的,我以为是解压的过程中丢失了,于是我重新解压,才发现日志中说磁盘空间不足。

但是我又想在自己用户下工作,怎么办呢?于是我将hadoop-1.2.1.tar.gz文件移动到了一个剩余空间充裕的磁盘目录下,并解压,然后在我自己的家目录下为解压后的hadoop目录创建了软的符号链接,这样就可以了。

但是我没有意识到,我在core-site.xml文件和hdfs-site.xml文件中为hadoop指定的namenode和datanode存放的目录还是在我自己的家目录下,而这些目录就不是符号链接了,导致空间不足,所以报了上述错误,终于圆满解决。

我是如何解决jobtracker.info could only be replicated to 0 nodes, instead of 1这个问题的相关推荐

  1. HDFS错误: File /XXX could only be replicated to 0 nodes instead of minReplication (=1). 解决方法

    0.背景 三台centos7的虚拟机进行了完全分布式模式的搭建 ,Hadoop版本2.7.1 虚拟机 node1为NameNode node2 为SecondNameNode和DataNode nod ...

  2. IM开发干货分享:我是如何解决大量离线消息导致客户端卡顿的

    1.引言 好久没写技术文章了,今天这篇不是原理性文章,而是为大家分享一下由笔者主导开发实施的IM即时通讯聊天系统,针对大量离线消息(包括消息漫游)导致的用户体验问题的升级改造全过程. 文章中,我将从如 ...

  3. 获取可视区域高度赋值给div(解决document.body.clientHeight的返回值为0的问题)

    获取可视区域高度赋值给div(解决document.body.clientHeight的返回值为0的问题) 参考文章: (1)获取可视区域高度赋值给div(解决document.body.client ...

  4. 成功解决_catboost.CatBoostError: Bad value for num_feature[non_default_doc_idx=0,feature_idx=0]=“FDO09“:

    成功解决_catboost.CatBoostError: Bad value for num_feature[non_default_doc_idx=0,feature_idx=0]="FD ...

  5. android 解决Error:This Gradle plugin requires Studio 3.0 minimum

    今天,继续简单讲讲如何解决Error:This Gradle plugin requires Studio 3.0 minimum. 之前讲过这个问题,有点不全面,所以再记录一下. 原因:项目用的是3 ...

  6. 如何解决tomcat启动时出现 Server Tomcat v9.0 Server at localhost failed to start.

    如何解决tomcat启动时出现 Server Tomcat v9.0 Server at localhost failed to start. **方法一:**点击控制台下的server,右击一下,点 ...

  7. 解决windows 2003 sp1下安装arcsde 9.0 for sql server 2000 sp4概要方案

    解决windows 2003 sp1下安装arcsde 9.0 for sql server 2000 sp4概要方案 安装sql server 2k sp4到windows 2003 sp1上: 安 ...

  8. 解决WIN7设备和打印机里空白,0个对象,但是可以打印的办法

    解决WIN7设备和打印机里空白,0个对象,但是可以打印的办法 解决WIN7打印机和设备里空白,0个对象,但是可以打印的办法: 症状如下: 虽然显示的"0个对象",大框中显示一片空白 ...

  9. 完美解决AutoCAD2012,AutoCAD2013本身电脑里有NET4.0或以上版本却装不上的问题

    适用情况:电脑里本身有NET4.0或4.5版本,并且正确安装.或本身你就装有AutoCAD2013或AutoCAD2012要装AutoCAD2012或AutoCAD2013却装不上的情况 如图1所示. ...

最新文章

  1. 数据库单表数据过亿_最受欢迎的三大数据库,你用过吗?
  2. 消息队列RabbitMQ基础知识详解
  3. rubymine 调试 redmine
  4. 论文阅读笔记(四)【ACL 2021】FEW-NERD: A Few-shot Named Entity Recognition Dataset
  5. java中的成员变量和局部变量的区别_java中成员变量与局部变量区别分析
  6. 优秀第三方库-图片浏览
  7. 专业RAW图像处理软件Capture One Pro 22
  8. Sp_15_极限定理
  9. Delphi XE11APP编译出错
  10. linux odbc 配置文件,linux操作系统配置ODBC数据源
  11. vue3.0 音频插件(vue-aplayer)
  12. CAJ论文格式转PDF(附带书签)
  13. MIS系统(1)- MIS系统的介绍
  14. net configuration assistant 没反应_苗阜深夜发文:20年了没被打过,张玉浩,你已经离开青曲社了...
  15. Proxy-NCA Loss、Proxy Anchor Loss
  16. 如何用python爬取新浪财经
  17. Commitizen安装注意事项 git cz git: ‘cz‘ is not a git command
  18. 华为android10手机隐藏小游戏,华为手机10个实用好玩的隐藏功能
  19. 幸运转盘中的芯片——CD4017和NE555
  20. catia装服务器不显示不出来,CATIAV5无法显示略缩图怎么办?CATIAV5无法显示略缩图的原因分析和解决方案...

热门文章

  1. Manjaro.常用命令/ Mnajaro安装后的配置
  2. Python核心编程第二版 第十三章课后答案
  3. JS对cookie进行操作
  4. thinkphp中join用法
  5. Android Fragment (一)
  6. Spring3中js/css/jpg/gif等静态资源无法找到(No mapping found for HTTP request with URI)问题解决(转)...
  7. 矛与盾——扫描器盲打对主动安全防护的启示
  8. 【C++】位运算实现加减乘除
  9. CentOS Linux 环境 Rails 安装记录
  10. 接口测试--测试工具apipost脚本大全