1. 絮絮叨叨

  • 最近在导入3000x的TPC-H的lineitem数据时,发现直接通过Hive的LOAD DATA LOCAL INPATH莫名其妙地失败

    hive> LOAD DATA LOCAL INPATH '/data1/tpch/tpch_tools/dbgen/lineitem.tbl' INTO TABLE tpch_3000x_orc.lineitem_text;
    Loading data to table tpch_3000x_orc.lineitem_text
    FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.MoveTask. org.apache.hadoop.hive.ql.metadata.HiveException: Unable to move source file:/data1/tpch/tpc-h_tools_v3.0.0/dbgen/lineitem.tbl to destination hdfs://.../da_lineitem_text
    
  • lineitem.tbl是一个大概2.3T的大文件,因为怀疑是文件太大无法上传

  • 通过查看其它数据的HDFS目录发现,通过LOAD DATA LOCAL INPATH向Hive表导入数据时,其实是直接将文件copy到对应的HDFS目录

  • 因此,想直接通过hdfs dfs -put直接将lineitem.tbl上传到对应的HDFS目录

  • 上传过程中,直接提示文件block数超过最大的block数,对应的配置项为dfs.namenode.fs-limits.max-blocks-per-file

    hive> dfs -put /data1/tpch/tpc-h_tools_v3.0.0/dbgen/lineitem.tbl hdfs:///.../da_lineitem_text/;
    put: File has reached the limit on maximum number of blocks (dfs.namenode.fs-limits.max-blocks-per-file): 10000 >= 10000
    Command -put /data1/tpch/tpc-h_tools_v3.0.0/dbgen/lineitem.tbl hdfs://.../da_lineitem_text/ failed with exit code = 1
    Query returned non-zero code: 1, cause: null
    

2. 使用split进行文件分割

2.1 确认HDFS配置

  • 看到报错信息后,首先想到的就是确认dfs.namenode.fs-limits.max-blocks-per-file的值

  • 命名如下:

     hdfs getconf -confKey dfs.namenode.fs-limits.max-blocks-per-file
    
  • 执行结果为1048576,根本不是报错信息中的说的10000

  • 在Hive CLI中,执行set命令也显示1048576

    set dfs.namenode.fs-limits.max-blocks-per-file;
    

2.2 运维建议使用小一点的数据集

  • 能力有限,只能求助HDFS的运维同事
  • 同事建议使用小一点的数据集,但自己又需要那么大的数据集
  • 自己的猜测:dfs.namenode.fs-limits.max-blocks-per-file在NameNode中的设置为10000,当前服务器的HDFS配置,可能并未与NameNode同步 (后续我会找运维同事进行确认的)

2.3 split按行拆分文件

  • 通过上网查阅资料,发现split命令可以实现文件的拆分

  • 而考虑到lineitem.tbl文件,每行代表一条记录,所以按照行数(每个文件20亿条数据)对其进行拆分

  • 同样地,因为拆分时间比较长,也是通过nohup提交后台作业

    nohup bash -c 'split -l 2000000000 lineitem.tbl /data7/lineitem' > split.log 2>&1 &
    
  • 拆分后的文件,使用/data7/lineitem作为前缀,从aa、ab、ac依次编号

  • split命令的使用,可以参考博客:Split Command in Linux with Examples

  • 当然,具体的使用,还是查看帮助文档来的更全面

    split --help
    

解决File has reached the limit on maximum number of blocks的问题相关推荐

  1. 解决System limit for number of file watchers reached

    问题背景 系统: deepin 详情: 在用vue脚手架写项目的时候,用npm run serve启动服务,报错Error: ENOSPC: System limit for number of fi ...

  2. Error: ENOSPC: System limit for number of file watchers reached, watch'所在文件路径'

    Error: ENOSPC: System limit for number of file watchers reached, watch'所在文件路径' vue工程在 deepin15.11 系统 ...

  3. Intellij IDEA中file size exceeds configured limit解决

    把Hadoop源码导入IDEA中后,其中有个YarnProtos 文件代码为3.28MB,IDEA直接就不把它当java类看了, 报file size exceeds configured limit ...

  4. linux 微信开发工具报错:System limit for number of file watchers reached, watch

    在linux 用命令打开微信开发工具的时候,报错:System limit for number of file watchers reached, watch... 解决方案:在终端依次执行一下命令 ...

  5. allegro SPMHDB-225 The maximum number of text sizes has been reached.错误解决办法

    allegro 在使用一个常用库元件的时候报allegro SPMHDB-225 The maximum number of text sizes has been reached.元件不能放置. 分 ...

  6. Linux Increase The Maximum Number Of Open Files / File Descriptors (FD)

    http://www.cyberciti.biz/faq/linux-increase-the-maximum-number-of-open-files/ How do I increase the ...

  7. 2021-06-04 路由器频繁掉线 Maximum number of concurrent DNS queries reached (max: 150)

    最近公司新换了路由器,之前的TP-Link的路由器坏掉了. 因为我们是新搬了厂房,所以我们更换了机柜,之前的路由器太小了,架机柜架不上去,况且又坏了.所以我们就换了个机柜式的路由器,艾泰2620G,一 ...

  8. [NACOS HTTP-POST] The maximum number of tolerable server reconnection errors has been reached

    使用nacos时,启动后一直报错,如下: java.net.ConnectException: [NACOS HTTP-POST] The maximum number of tolerable se ...

  9. apscheduler调度器异常错误:skipped: maximum number of running instances reached (1)

    参考别人的解决方案:https://pdf-lib.org/Home/Details/10550 参考官方文档:https://apscheduler.readthedocs.io/en/latest ...

最新文章

  1. pickle,json ;random,shelve
  2. 【转】oracle存储过程常用技巧
  3. synology smb_用于在Synology NAS上测试Spring Boot Web应用程序的JUnit模拟文件
  4. 工业交换机和工业级光纤收发器的区别
  5. Android add external jar
  6. 为Cubieboard打造完美Debian系统
  7. Android 系统(15)---Launcher启动过程
  8. Metro风格的Android界面应用
  9. 【Vue2.0】—键盘事件(三)
  10. 物联网已死,API 万岁!
  11. sql int 比较_SQL进阶--错题集1
  12. UNIX环境高级编程习题——第一章
  13. Delphi android 开发视频教程
  14. 使用jqery模拟网易严选购物车功能
  15. 3D目标检测方案总结
  16. 程序设计基础java_Java程序设计基础
  17. 今晚折腾了好久,win7极限精简版239M在虚拟机未成功?
  18. 【学习笔记】空间统计(常用)
  19. 想考阿里云ACP认证,网上买题库靠谱吗?
  20. 智联招聘java可信吗_蛇字属于什么生肖十二生肖中的动物各怎么读?

热门文章

  1. vue路由跳转动态title标题信息
  2. PHA关闭测试网、预备网即将正式上线!
  3. portainer部署
  4. modemcu 打包_nodeMcu烧录工具-nodeMcu固件v1.0下载__飞翔下载
  5. java protostuff 序列化_使用Protostuff序列化
  6. Windows10家庭版的账号模糊不清使用而导致问题的修复
  7. jQuery获取兄弟元素的各种方法总结
  8. Oracle11g:补充日志
  9. 用HK-MSR165微型振动冲击记录仪记录动态机械应力,帮助优化机器、工件和生产
  10. python-Tkinter界面组件属性介绍(二)