CDH 丢失块及副本不足的块

CDH 丢失块及副本不足的块,第1张

备注:

CDH 6.3.1

如下图所示,刚安装的CDH,提示存在丢失块,也存在副本不足的块

测试记录:

过滤出 MISSING的信息

可以看到都是oozie这个空间丢失的块

查看丢失的文件块信息

导致这个问题产生时是由于初始化集群后,只有两个节点的datanode,所以将副本调整为2 、dfs.replication=2,在切换后对hdfs做了抑制,导致告警出现;现在重新加入一个datanode,重新恢复3个datanode节点3副本模式。

测试记录:

现在看丢失块的问题解决:

1. https://www.cnblogs.com/hqt0731/articles/8804924.html

搭建HDFS的NameNode集群, 在单个NameNode宕机或繁忙时, 可以做故障转移和压力平摊配置的过程比较复杂, 网上的可查资料也很少

开启了高可用, 不需要SecondaryNameNode, 该角色并不具备故障转移的功能, 可以理解为一个备份点, 解读Secondary NameNode的功能

在只有一个NameNode的情况下, 必须配置SecondaryNameNode但多个NameNode的时候, 如果没删除会报错校验不通过, 这里先忽略不理

建议NameNode进行一次格式化, DataNode的数据目录进行清空, 生产环境慎重 *** 作. 重启的时候DataNode放在最后执行, 确保所有的节点都是正常的, 通过Hadoop的UI可以查看准确的状态(9870端口)如果在日志种出现如下报错, Block pool ID needed, but service not yet registered with NN

可尝试在每台DataNode将错误的文件删掉(/dfs/dn/current), 日志中有详细的打印, 删除之后节点状态恢复正常

执行hdfs的增删改查命令做测试, 如cat,ls,put,mkdir等, 通过即为正常

NameNode和Failover Controller所在的机器要一一对应, NameNode还要执行zkfc命令进行初始化, 在运行Controller要开启故障转移, 并要确保初始化Zk的命令

去NameNode的机器执行离开安全的 *** 作

/var/run的权限过大, 把/var/run/hdfs-sockets目录删掉或重新授权

在不开启高可用的时候, 必须配置SecondaryNameNode

官方NameNode高可用配置说明

解读Secondary NameNode的功能

Cannot find any valid remote NN to service request

1.配置 Cloudera Manager 仓库(所有节点)

2.安装jdk 1.8(略)

3.安装mysql 5.7(略)

或者yum

这里 不详细说明了

修改集群中各机器的hosts和hostname,并使之永久生效。步骤如下:

输入命令 hostname:查看当前hostname;

输入命令 hostname <new.hostname>:修改new hostname并立即生效(临时有效,重启系统后失效)

输入命令 vim /etc/hosts:为集群中的各机器添加对应的hosts;

输入命令 vim /etc/sysconfig/network:修改HOSTNAME=new.hostname,使new.hostname永久生效。(如果没有该值则手动添加,并重启确认是否永久生效)

设置集群中的各机器能互相SSH免密登录,并且能够ssh locahost登录本机。步骤如下:

输入命令 ssh-keygen -t rsa,一路回车即可;

输入命令 ssh-copy-id -i .ssh/id_ rsa.pub username@target.machine.ip;

ssh登录各机器进行确认。

可能会有的报错:

/usr/bin/ssh-copy-id: ERROR: Host key verification failed.

因为我输入ssh-copy-id -i .ssh/id_ rsa.pub root@10.1.2.104.master时没有输入yes 直接回车,再次输入yes成功

sudo firewall-cmd --zone=public --add-port=7180/tcp --permanent

sudo firewall-cmd --reload

临时关闭防火墙

systemctl stop firewalld

检查SELinux当前状态:getenforce;

如果输出为Permissive或Disabled,那么就可以不用设置SELinux的模式了。如果输出是enforcing,就接着做下一步;

vim /etc/selinux/config (有些系统里是 /etc/sysconfig/selinux);

将 SELINUX=enforcing 修改为 SELINUX=permissive,保存并退出;

输入 setenforce 0,使设置立即生效

集群中各机器都要配

https://docs.cloudera.com/documentation/enterprise/6/6.0/topics/install_cdh_enable_ntp.html

解压cloudera-manager-centos7-cm5.11.0_x86_64.tar.gz

cloudera manager的目录默认位置在/opt下

mv cm-5.11.0 /opt/

mv cloudera /opt/

添加mysql 驱动

cd /opt/cloudera/parcel-repo/

复制以下文件到该目录

CDH-5.11.0-1.cdh5.11.0.p0.34-el6.parcel.sha1

CDH-5.11.0-1.cdh5.11.0.p0.34-el6.parcel

manifest.json

修改

CDH-5.11.0-1.cdh5.11.0.p0.34-el6.parcel.sha1为

CDH-5.11.0-1.cdh5.11.0.p0.34-el6.parcel.sha

各Service所需的库如下图,其中库名和user名可以自定义,但自己必须记住。(建议库名使用图中所示的,user名可以自定义,并且可以相同)

运行

登录:

http://10.1.4.44:7180/cmf/login

1 启动报错:

启动server/agent失败,报错pstree: command not found

安装 psmisc

2 我重装了HDFS所以报错

对当前 NameNode 的名称目录进行格式化。如果名称目录不为空,此 *** 作将失败。

删除 /dfs下的nn目录重试即可

3 datanode启动失败报错

将/dfs/nn 和 dn的 VERSION中的clusterIDs改为一致即可

出现该问题的原因:在第一次格式化dfs后,启动并使用了hadoop,后来又重新执行了格式化命令,这时namenode的clusterID会重新生成,而datanode的clusterID 保持不变。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/bake/11382503.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-15
下一篇2023-05-15

发表评论

登录后才能评论

评论列表(0条)

    保存