• 【Hadoop报错】The directory item limit is exceeded: limit=1048576 items=1048576


    问题描述:
    调度系统执行hive任务失败,一直执行失败,报错如下:
    java.io.IOException: java.net.ConnectException: Call From #HostName/#IP to #HostName:10020 failed on connection exception: java.net.ConnectException: 拒绝连接; For more details see: http://wiki.apache.org/hadoop/ConnectionRefused

    Caused by: java.net.ConnectException: Call From #HostName/#IP to #HostName:10020 failed on connection exception: java.net.ConnectException: 拒绝连接; For more details see: http://wiki.apache.org/hadoop/ConnectionRefused

    CONSOLE# Ended Job = job_1638255473937_0568 with exception 'java.io.IOException(java.net.ConnectException: Call From #HostName/#IP to #HostName:10020 failed on connection exception: java.net.ConnectException: 拒绝连接; For more details see: http://wiki.apache.org/hadoop/ConnectionRefused)

    CONSOLE# FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.mr.MapRedTask. java.net.ConnectException: Call From #HostName/#IP to #HostName:10020 failed on connection exception: java.net.ConnectException: 拒绝连接; For more details see: http://wiki.apache.org/hadoop/ConnectionRefused

    这个信息还看不出具体的问题所在,查看服务器上所有的日志,也没有看出问题,最后查看yarn的日志,看出问题所在。
    根据调度系统,获取到ApplicationId:application_1638255473937_0568 , 然后从hdfs上查看对应的日志信息。

    查看yarn日志信息:
    [hdfs@centos hadoop27]$ yarn logs -applicationId application_1638255473937_0568

    关键报错信息:
    org.apache.hadoop.ipc.RemoteException(org.apache.hadoop.hdfs.protocol.FSLimitException$MaxDirectoryItemsExceededException): The directory item limit of /tmp/hadoop-yarn/staging/history/done_intermediate/hdfs is exceeded: limit=1048576 items=1048576

    报错原因:
    hadoop单个目录下文件超1048576个,默认limit限制数为1048576,所以要调大limit限制数。

    解决方法1:
    hdfs-site.xml配置文件添加配置参数:dfs.namenode.fs-limits.max-directory-items ,调大参数值。

    将配置文件推送到hadoop集群所有节点,重启Hadoop服务。

    解决方法2:
    如果不方便修改配置重启hadoop集群服务。可以先删除该目录:/tmp/hadoop-yarn/staging/history/done_intermediate/hdfs
    然后重建目录即可。

    hadoop fs -rm -r /tmp/hadoop-yarn/staging/history/done_intermediate/hdfs
    hadoop fs -mkdir /tmp/hadoop-yarn/staging/history/done_intermediate/hdfs
    

    造成这个目录文件数超上限,本质原因还是hadoop集群之前没有开启jobhistory server,没有清除历史job日志信息导致的。
    参考文章:http://www.tracefact.net/tech/079.html

    扩展信息:

    一:如何查看yarn日志存放目录及日志详细信息
    1:通过history server UI界面查看。(我这里是http://IP:8801/jobhistory)

    2:通过yarn命令查看(用户要和提交任务的用户一致)
    2.1: yarn application -list -appStates ALL(这个不显示时间信息)
    2.2: yarn logs -applicationId application_1638255473937_0568

    3:直接查看hdfs路径的log (是存放在hdfs目录上的,不是存放在centos系统的自定义日志目录上)
    3.1: 查看yarn-site.xml文件,确认log配置目录。

        <property>
            <name>yarn.nodemanager.remote-app-log-dir</name>
            <value>/data1/hadoop27/logs</value>
        </property>
    

    3.2: 查看日志文件信息

    [hdfs@centos hadoop]$ hdfs dfs -ls /data1/hadoop27/logs/hdfs/logs/application_1638255473937_0568
    Found 1 items
    -rw-r-----   2 hdfs hdfs      66188 2021-11-30 20:24 /data1/hadoop27/logs/hdfs/logs/application_1638255473937_0568/centos.pp1.db_46654
    

    3.3: 查看日志详细信息
    3.3.1: yarn logs -applicationId application_1638255473937_0568 (同2)
    3.3.2: hdfs dfs -cat /data1/hadoop27/logs/hdfs/logs/application_1638255473937_0568/centos.pp1.db_46654 ## 通过-cat查看
    3.3.3: hdfs dfs -cat /data1/hadoop27/logs/hdfs/logs/application_1638255473937_0568/centos.pp1.db_46654 > tmp.log ## 通过-cat把内容存到当前目录的tmp.log中。
    3.3.4: hdfs dfs -get /data1/hadoop27/logs/hdfs/logs/application_1638255473937_0568/centos.pp1.db_46654 ## 通过get把hdfs文件下载到当前啊目录下,然后查看。

    二: hdfs操作命令:
    1.1: 查看hdfs的指定目录下有多少个文件夹和文件。

    [hdfs@centos hadoop]$ hadoop fs -count /tmp/hadoop-yarn/staging/history/done_intermediate/hdfs
               1            1048576             3253261451467 /tmp/hadoop-yarn/staging/history/done_intermediate/hdfs
    

    第一个数值1表示该目录下有1个文件夹。
    第二个数值1048576表示该目录下有1个文件。
    第三个数值3253261451467表示该目录下所有文件总大小。

  • 相关阅读:
    VS使用技巧
    写的一个简单定时器(非独立线程)
    C/C++技巧
    【转载】R6034错误,C Runtime Error
    C/C++面试题(一)
    常用的coco2d-x游戏开发工具(转)
    AndroidJNI 调用JAVA(转)
    Android SDK +Eclipse+ADT+CDT+NDK 开发环境在windows 7下的搭建
    简单的字符串压缩--C代码
    SQLite: sqlite_master(转)
  • 原文地址:https://www.cnblogs.com/DBArtist/p/15627589.html
Copyright © 2020-2023  润新知