HDFS块信息非常,spark无法读取数据

[复制链接]
发表于 2026-2-16 02:26:49 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
配景:flume数据落盘到hdfs上时,正在写入的文件一样平常是以.log.tmp末了的文件,当flume将文件关闭以后将变为:.log 末了的文件。由于我们利用阿里云的服务器,经常会有个别节点挂掉(进程在,无法通讯,必要在阿里云上逼迫重启呆板才行),导致一些文件写入停止,非正常关闭,造成快信息非常。导致spark报错,流程非常。
解放方法:
  1. -- 1.检查hdfs目录下打开的文件
  2.     hdfs fsck /user/hive/external/ods/ods_xxxxx/dt=2024-07-07 -openforwrite
  3. -- 2.过滤出非正常关闭的文件 (.log.tmp:正在打开写入数据的文件 .log 为关闭的文件,这里出现的.log文件即为异常文件)
  4.     将文件复制出来 vcscode
  5.     通过将OPENFORWRITE替换为 \n 换行
  6.     将 .log.tmp的正常文件替换为空,过滤出异常文件  【正则: .*\.tmp.* 】
  7. -- 3.修复 (将异常的文件进行修复)
  8.     hdfs debug recoverLease -path /user/hive/external/ods/ods_xxxxx/dt=2024-07-07/flume_app.1720290198943.log -retries 3
  9.     hdfs debug recoverLease -path /user/hive/external/ods/ods_xxxxx/dt=2024-07-07/flume_app.1720290187773.log -retries 3
  10.     hdfs debug recoverLease -path /user/hive/external/ods/ods_xxxxx/dt=2024-07-07/flume_app.1720290379675.log -retries 3
复制代码
下令表明:
  1. hdfs fsck /user/hive/external/ods/ods_xxxxx/dt=2024-07-07 -openforwrite
  2. 使用 hdfs fsck 命令加上 -openforwrite 选项时,它会检查指定的目录是否可以安全地打开以供写入,并报告任何可能影响写入操作的问题。这包括检查是否有文件正被打开进行写入。
  3. -openforwrite 选项主要关注于以下几个方面:
  4. 检查目录下是否有文件正处于打开状态,即这些文件是否被某个客户端持有写入租约(lease)。
  5. 检查是否有任何文件处于不完整的状态(即尚未完成写入)。
  6. 如果目录中有文件正在被打开写入,fsck 命令的输出通常会显示这些文件的信息。这些信息可以帮助您了解哪些文件可能会阻止您对目录进行进一步的写入操作。
复制代码
  1. hdfs debug recoverLease -path /user/hive/external/ods/ods_xxxxx/dt=2024-07-07/flume_app.1720290198943.log -retries 3 
  2.     命令用于尝试恢复在 HDFS 中被中断的文件写入操作。当一个文件的写入因为某种原因(如客户端意外断开连接)而中断时,这个文件会被标记为“未完成”状态,并且其租约(lease)将保持有效直到过期或者手动释放。
  3. hdfs debug recoverLease: 这个命令用于尝试恢复一个文件的租约,使其可以从“未完成”的状态中恢复过来。
  4. -path: 指定要恢复租约的文件路径。
  5. /user/hive/external/ods/ods_xxxxx/dt=2024-07-07/flume_app.1720290198943.log: 这是具体的文件路径。
  6. -retries 3: 指定在尝试恢复租约时的最大重试次数。
  7. 执行这条命令后,HDFS 会尝试恢复指定文件的租约。如果文件的租约可以成功恢复,那么文件就可以继续写入或完成写入过程。如果命令执行失败,它将根据指定的重试次数进行重试。
复制代码
回复

使用道具 举报

登录后关闭弹窗

登录参与点评抽奖  加入IT实名职场社区
去登录
快速回复 返回顶部 返回列表