首页 > 其他分享 >HDFS文件因Hadoop版本原因导致append操作失败的问题

HDFS文件因Hadoop版本原因导致append操作失败的问题

时间:2023-05-24 21:45:55浏览次数:52  
标签:hdfs HDFS DataStreamer Hadoop hadoop 文件 txt append

问题重现: 2023.05.24练习B站尚硅谷Hadoop3里的HDFS的Shell操作(append)
[atguigu@hadoop102 hadoop-3.3.4]$ hadoop fs -appendToFile liubei.txt /sa

点击查看代码
[atguigu@hadoop102 hadoop-3.3.4]$ hadoop fs -appendToFile liubei.txt /sa
2023-05-24 20:30:37,303 WARN hdfs.DataStreamer: DataStreamer Exception
java.io.IOException: Failed to replace a bad datanode on the existing pie to try. (Nodes: current=[DatanodeInfoWithStorage[192.168.10.102:9866,Dinal=[DatanodeInfoWithStorage[192.168.10.102:9866,DS-29fd6973-aa05-439e-ode replacement policy is DEFAULT, and a client may configure this via 'policy' in its configuration.
	at org.apache.hadoop.hdfs.DataStreamer.findNewDatanode(DataStrea
	at org.apache.hadoop.hdfs.DataStreamer.addDatanode2ExistingPipel
	at org.apache.hadoop.hdfs.DataStreamer.handleDatanodeReplacement
	at org.apache.hadoop.hdfs.DataStreamer.setupPipelineInternal(Dat
	at org.apache.hadoop.hdfs.DataStreamer.setupPipelineForAppendOrR
	at org.apache.hadoop.hdfs.DataStreamer.run(DataStreamer.java:717
appendToFile: Failed to replace a bad datanode on the existing pipeline y. (Nodes: current=[DatanodeInfoWithStorage[192.168.10.102:9866,DS-29fd6atanodeInfoWithStorage[192.168.10.102:9866,DS-29fd6973-aa05-439e-ba74-8elacement policy is DEFAULT, and a client may configure this via 'dfs.cli in its configuration.
Claude回答如下:

这个错误表示在执行HDFS的文件复制操作时发生了错误。具体原因是:

  1. 要复制的文件/wcinput/word.txt不存在1个以上的数据节点可以复制。
  2. 当前HDFS集群中有0个可用的数据节点,且0个节点被排除在此次操作之外。
    导致这个错误的最常见原因是:
  3. 文件word.txt仅存在于一个数据节点上,其它数据节点不具有该文件块的副本,所以无法达到最小副本数minReplication。
  4. HDFS集群的部分或全部数据节点处于不可用状态,所以无法找到足够的节点来完成文件复制操作。
    要解决这个问题,可以从以下几个方面着手:
  5. 检查文件/wcinput/word.txt的副本数是否达到HDFS的默认最小副本数3,如果没有可以手动完成文件复制以达到3个副本。
    hdfs fsck /wcinput/word.txt -files -blocks #检查副本数
    hdfs fs -cp /wcinput/word.txt /wcinput/word.txt #手动复制文件
    2. 检查HDFS集群的数据节点状态,重启处于不可用状态的节点。
  6. 如果有数据节点发生故障,等待其恢复或替换后重新复制文件。
  7. 如有必要,可以临时调整HDFS的最小副本数配置,但需要尽快恢复默认配置。
    hdfs getConf -namenode srv1.example.com -confKey dfs.namenode.replication.min #获取最小副本数
    hdfs setConf -namenode srv1.example.com -confKey dfs.namenode.replication.min -value 2 #临时设置为2

重启服务后 myhadoop.sh stop myhadoop.sh start
报错如下:
[atguigu@hadoop102 hadoop-3.3.4]$ hadoop fs -appendToFile liubei.txt /sa appendToFile: Failed to APPEND_FILE /sanguo/shuguo.txt for DFSClient_NONuse lease recovery is in progress. Try again later.
Claude:
使用-ignoreCrc参数跳过CRC校验。有时CRC校验也会触发短暂的租约恢复过程。
shell
hadoop fs -appendToFile -ignoreCrc liubei.txt /sanguo/shuguo.txt
继续报第一个错误信息,发现DataNode三个挂了俩,本质是hadoop的升级功能需要data-node在它的版本文件里存储一个永久性的clusterID,当datanode启动时会检查并匹配namenode的版本文件里的clusterID,如果两者不匹配,就会出现"Incompatible clusterIDs"的异常.
image<查看DataNode状态>

找到参看博客如下:
DataNode 启动失败报错 Incompatible clusterIDs
1.查看DataNode 目录 /opt/module/hadoop-3.3.1/data/dfs/data/current下的 VERSION 文件中的 clusterID
2.查看 NamaNode 目录 /opt/module/hadoop-3.3.1/data/dfs/name/current 下的 VERSION 文件中的 clusterID.
将启动失败的 DataNode 的 ClusterID 值 修改为 NameNode 的 ClusterID.

标签:hdfs,HDFS,DataStreamer,Hadoop,hadoop,文件,txt,append
From: https://www.cnblogs.com/ccyzj/p/17429541.html

相关文章

  • HDFS学习进阶
    一、HDFS元数据管理HDFS是一个分布式文件存储系统,文件分布式存储在多个DataNode节点上。一个文件存储在哪些DataNode节点的哪些位置的元数据信息(metadata)由NameNode节点来处理。随着存储文件的增多,NameNode上存储的信息也会越来越多。在HDFS中主要是通过两个组件FSImage(快照文件,......
  • HDFS学习基础
    一、HDFS基础知识HDFS 是 HadoopDistributeFileSystem 的简称,意为:Hadoop 分布式文件系统。是 Hadoop 核心组件之一,作为最底层的分布式存储服务而存在。分布式文件系统解决的问题就是大数据存储。它们是横跨在多台计算机上的存储系统。分布式文件系统在大数据时代有着广......
  • idea windows本地访问远程hadoop服务问题
    在上一篇博客hadoop基于zookeper自动高可用搭建搭建好远程的hadoop集群服务后,需要通过本地java代码访问该集群。java结构如下图所示测试类HdfsTest代码如下:packagecom.wh.hdfs.test;importorg.apache.hadoop.conf.Configuration;importorg.apache.hadoop.fs.FileStatus;i......
  • HDFS架构与原理浅析
    当需要存储的数据集的大小超过了一台独立的物理计算机的存储能力时,就需要对数据进行分区并存储到若干台计算机上去。管理网络中跨多台计算机存储的文件系统统称为分布式文件系统(distributedfileSystem)。分布式文件系统由于其跨计算机的特性,所以依赖于网络的传输,势必会比普通的本......
  • hadoop集群搭建后,启动集群后网络畅通,却无法访问web页面的解决办法
    hadoop集群搭建后,启动集群后网络畅通,却无法访问web页面的解决办法问题引入:在学习hadoop搭建完全分布式集群时,已经集群配置了4个核心文件,并且启动所有相关进程,在使用jps命令检查进程,该集群启动完整正常,但是无法访问hdfsweb页面和yarnweb页面,我尝试了ping通所有集群的网络,正常;检查......
  • Python 列表append自己
    list=['zz','ss']list.append(list)print(id(list[2]))print(id(list[2][0]))print("1:",list)list.append(list)print(id(list[3]))print(id(list[3][0]))print("2:",list)结果:1404637464558161404637464107361:['z......
  • 一、Hadoop平台安装
    卸载自带OpenJDK(最小化安装不用执行)[root@master~]#rpm-qa|grepjava[root@master~]#rpm-e--nodepsxxx配置免密登录生成密钥对:[root@master~]#ssh-keygen-trsa(回车四次)发送公钥:[root@master~]#ssh-copy-id192.168.100.10ssh-copy-id192.168.100.20ss......
  • Hadoop的核心配置文件
    1.core-site.xml:该配置文件包含了Hadoop通用配置,例如Hadoop的文件系统和I/O设置、Hadoop日志目录、Hadoop缓存设置等。2.hdfs-site.xml:该配置文件包含了Hadoop分布式文件系统(HDFS)的配置,例如HDFS的副本数、块大小、数据目录、安全设置等。3.yarn-site.xml:该配置文件包含了Hado......
  • 【hadoop】 3005-hadoop对象序列化编码
    一、hadoop序列化操作Writable接口,是根据 DataInput 和 DataOutput 实现的简单、有效的序列化对象MR的任意Key和Value必须实现Writable接口.MR的任意key必须实现WritableComparable接口二、自定义Writable,实现MapReduce程序1、需求内容日期 ......
  • 【hadoop】 4001-Partitioner编程
    MapReduce重要组件——Partitioner组件(1)Partitioner组件可以让Map对Key进行分区,从而可以根据不同的key来分发到不同的reduce中去处理;(2)你可以自定义key的一个分发股则,如数据文件包含不同的省份,而输出的要求是每个省份输出一个文件;(3)提供了一个默认的HashPartitioner......