SSH localhost免密不成功 + 集群状态显示Configured Capacity: 0 (0 KB)

前一天运行hadoop一切安好,今天重新运行出现BUG。下面对遇到的bug、产生原因以及解决方法进行一下简单总结记录。

【bug1】用ssh localhost免密登录时提示要输入密码。

原因分析:之前配置好了ssh免密登录并且ssh localhost以及ssh Slave1、ssh Master、ssh Slave2等都可以成功实现免密登录,后来突然想起前一天晚上用scp在节点之间传输文件的时候提示没有相关权限从而对节点的/home目录做过权限更改,而.ssh文件夹就在/home/hadoop目录下也即单独用cd命令而进入的主目录下(虽然用ls不会显示.ssh文件夹,但在home目录下用cd .ssh是可以进入的)。

解决方法:

查看”.ssh”文件夹及其内部文件的权限是否如下所示,authorized_keys 和 rsa的权限是600,其余文件权限是644.

如果权限不对则利用如下命令设置该文件的权限:

chmod 700 ~/.ssh #注意:这两条权限设置特别重要,决定成败。

chmod 600 ~/.ssh/authorized_keys

相关网址:http://blog.csdn.net/peace1213/article/details/51334508#t11

【bug2】配置后利用hadoop dfsadmin -report查看集群状态时,结果竟然是:

[[email protected] logs]$ hadoop dfsadmin -report

Configured Capacity: 0 (0 KB)

Present Capacity: 0 (0 KB)

DFS Remaining: 0 (0 KB)

DFS Used: 0 (0 KB)

DFS Used%: ?%

Under replicated blocks: 0

Blocks with corrupt replicas: 0

Missing blocks: 0

使用jps小工具再查看一下:

namenode上:

17992 JobTracker

17910 SecondaryNameNode

18543 Jps

17748 NameNode

datanode上:

8601 Jps

8490 DataNode

8324 TaskTracker

看似一切正常,百思不得其解。

原因分析:由于开始【bug1】的出现,重新进行过集群格式化,使得子节点的clusterID、namespaceID与主节点(即namenode节点)的clusterID、namespaceID不一致。

解决方法:要先清理掉相关文件后再进行格式化。具体步骤及注意事项如下:

1>重新格式化意味着集群的数据会被全部删除,格式化前需考虑数据备份或转移问题;
2>先删除主节点(即namenode节点):Hadoop的临时存储目录tmp、namenode存储永久性元数据目录dfs/name、Hadoop系统日志文件目录log 中的内容 (注意是删除上述三个目录下的内容而不删除目录本身);
3>删除所有数据节点(即datanode节点) :Hadoop的临时存储目录tmp、namenode存储永久性元数据目录dfs/name、Hadoop系统日志文件目录log 中的内容(注意是删除上述三个目录下的内容而不删除目录本身);
4>重新格式化一个新的分布式文件系统:$ hadoop namenode -format

注意点:

(1)Hadoop的临时存储目录tmp(即core-site.xml配置文件中的hadoop.tmp.dir属性,默认值是/tmp/hadoop-${user.name}),如果没有配置hadoop.tmp.dir属性,那么hadoop格式化时将会在/tmp目录下创建一个目录,例如在cloud用户下安装配置hadoop,那么Hadoop的临时存储目录就位于/tmp/hadoop-cloud目录下
(2)Hadoop的namenode元数据目录(即hdfs-site.xml配置文件中的dfs.namenode.name.dir属性,默认值是${hadoop.tmp.dir}/dfs/name),同样如果没有配置该属性,那么hadoop在格式化时将自行创建。必须注意的是在格式化前必须清楚所有子节点(即DataNode节点)dfs/name下的内容,否则在启动hadoop时子节点的守护进程会启动失败。这是由于,每一次format主节点namenode,dfs/name/current目录下的VERSION文件会产生新的clusterID、namespaceID。但是如果子节点的dfs/name/current仍存在,hadoop格式化时就不会重建该目录,因此形成子节点的clusterID、namespaceID与主节点(即namenode节点)的clusterID、namespaceID不一致。最终导致hadoop启动失败。

相关网址:

http://www.cnblogs.com/neo98/articles/6305999.html

http://blog.csdn.net/xiao_jun_0820/article/details/8857017

http://blog.163.com/[email protected]/blog/static/131693298201422911363274/

时间: 2024-10-29 19:08:52

SSH localhost免密不成功 + 集群状态显示Configured Capacity: 0 (0 KB)的相关文章

SSH之免密登陆

又来了,上头让小轩我在服务器中写一个Shell脚本,主要用来在机器B中定时备份机器A中的一些文件.那么,小轩是怎么想的呢? 在小轩的知识库里,现在有scp和ssh两个玩具.别的还真没有其他什么东西了.那就想直接用scp去远程复制好了,但是scp复制的时候还要输入密码.那就搞搞让使用scp的时候不用输入密码好了. 以下进入正文 忽略ssh安装scp安装过程.默认认为当前机器与远程机器含有完整的ssh,scp功能 首先在机器B中使用ssh-keygen -t rsa 命令 (想来玩git的童鞋应该知

SSH配置免密登录

[参考文章]:linux服务器ssh免密码登录 [参考文章]:ssh分发秘钥时出现错误“Permission denied (publickey,gssapi-keyex,gssapi-with-mic)” [参考文章]:ssh免密码登录Permission denied (publickey,gssapi-keyex,gssapi-with-mic) 的解决方案! [参考文章]:ssh配置无密码登录 1. 生成服务器的公钥和私钥文件 输入命令:ssh-keygen -t rsa 提示输入点击回

虚拟机上实现三台centos7 ssh相互免密登录

各种教程特别多,我就把我遇到的问题重点写写方便下次使用. 1.创建ssh key生成两个id_rsa文件,一个带.pub的公钥和不带的私钥(三台机器都执行以下步骤) 命令: ssh-keygen -t rsa 使用分发命令分别将其中一台的生成的两个id_rsa.pub和id_rsa文件分发给其他两台机器 命令:scp id_rsa.pub Ip(目标机的ip):~/.ssh/ scp id_rsa Ip(目标机的ip):~/.ssh/ 3.在每个主机上建立autorities_keys 文件(其

2019-10-11 ubuntu ssh远程免密登录配置及配置别名

在客户端能正常远程访问服务端的前提下. 客户端: 1)配置免密 执行 ssh-keygen 即可生成 SSH 钥匙,回车三次. 执行 ssh-copy-id [email protected],可以让远程服务器记住我们的公钥.(user为远程服务器名,remote为ip地址) 2)配置别名 用ssh mac 来替代上面这么一长串,那么就在 ~/.ssh/config 里面追加以下内容: Host mac HostName ip地址 User itheima Port 22 保存之后,即可用  原

Linux系统ssh远程免密登录

在Linux运行过程中,有些特殊情况需要让不同Linux主机之间进行SSH免密登录,直观来看是免密登录,确切的说是通过秘钥验证登录. 一.实现原理 如A主机需要远程免密登录到B主机,那么需要在A主机上面通过工具生成秘钥对,即公钥和私钥.私钥用来解密,放置在A主机本地,公钥用来加密,放置在远端B主机. 二.示例 1.生成秘钥对 在A主机执行命令ssh-keygen -b 1024 -t rsa,无需更改参数,直接按几次回车即可. [[email protected] ~]# ssh-keygen

ssh 配置免密失败

多数情况下,可以登录成功.但是也会出现配置不正确,导致失败的时候. 1.检查authorized_keys文件权限,并设置为700 chmod 700 authorized_keys 2.检查/etc/ssh/sshd_config文件 将 #StrictModes yes 设置为 StrictModes no 将 #AuthorizedKeysFile .ssh/authorized_keys 设置为 AuthorizedKeysFile .ssh/authorized_keys 3.删除/r

ssh localhost免登陆

#必须要先赋权,在此特别提醒 ssh-keygen -t rsa -P '' cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys chmod 644 authorized_keys

ssh安全免密登录

ssh key(使用非对称加密方式生成公钥和私钥) 私钥存放在本地~/.ssh目录(Linux系统) 公钥可以对外公开,复制到服务器的~/.ssh/authorized_keys文件内 win环境生成方式:xshell -> 工具 -> 用户秘钥管理者 -> 生成 -> rsa -> .. Linux环境生成方式:ssh-keygen -t rsa(一般默认选RSA) 或 ssh-keygen -t dsa 如果服务器~/.ssh/下面无authorized_keys:tou

Win10配置ssh密钥免密连接Linux服务器

首先Win10系统上需要有OpenSSH,像这样:终端输入ssh 这样就是有的(好像Win10 1809+默认就是有的). 然后生成密钥对: ssh-keygen -t rsa 接着按提示信息可根据个人需求选择,这里是默认(连续三个回车即可). 生成的密钥对默认保存在当前用户的根目录下的.ssh目录中(C:\Users\username\.ssh): 接着我们将公钥id_rsa.pub上传至Linux服务器(保存到你要连接的用户根目录下~/.ssh/中,没有.ssh目录则创建): 至于上传方法可