【问题标题】:How to know the exact block size of a file on a Hadoop node?如何知道 Hadoop 节点上文件的确切块大小?
【发布时间】:2016-05-29 06:18:47
【问题描述】:

我有一个1 GB 文件,我已将它放在HDFS 上。因此,它将被分成块并发送到集群中的不同节点。

是否有任何命令可以识别特定节点上文件块的确切大小?

谢谢。

【问题讨论】:

    标签: hadoop hdfs


    【解决方案1】:

    你应该使用hdfs fsck 命令:

    hdfs fsck /tmp/test.txt -files -blocks
    

    此命令将打印文件包含的所有块的信息:

    /tmp/test.tar.gz 151937000 bytes, 2 block(s):  OK
    0. BP-739546456-192.168.20.1-1455713910789:blk_1073742021_1197 len=134217728 Live_repl=3
    1. BP-739546456-192.168.20.1-1455713910789:blk_1073742022_1198 len=17719272 Live_repl=3
    

    如您所见,此处显示了(每行中的len 字段)块的实际使用容量。

    hdfs fsck 还有很多其他有用的功能,你可以在官方Hadoop documentation page 看到。

    【讨论】:

    • 我已经设置了一个 2 节点 hadoop 集群。而且,我正在尝试测试master是否与slave通信?所以,我在 HDFS 中复制了一个文件(159 MB)。现在,它应该被分成 2 个块,每个节点上 1 个。当我运行 fsck 命令时,我得到:/abc.txt 166612212 字节,2 个块:在复制的 BP-531753399-127.0.1.1-1455542244078:blk_1073741826_1002 下。目标副本为 2,但找到 1 个副本。根据复制的 BP-531753399-127.0.1.1-1455542244078:blk_1073741827_1003。目标副本为 2,但找到 1 个副本。让我知道为什么我的设置无法正常工作?有没有更好的办法?
    • 监控 HDFS 运行状况的最简单方法是使用 hdfs dfsadmin -report 命令。如果您发现并非所有数据节点都已启动,请尝试检查该数据节点的日志。
    【解决方案2】:

    你可以试试:

    hdfs getconf -confKey dfs.blocksize
    

    【讨论】:

      【解决方案3】:

      我没有评论的声誉。

      查看documentation页面设置各种属性,涵盖了

      dfs.blocksize
      

      除了配置改变,你可以查看文件的实际大小

      hadoop fs -ls fileNameWithPath
      

      例如

      hadoop fs -ls /user/edureka 
      

      输出:

      -rwxrwxrwx   1 edureka supergroup     391355 2014-09-30 12:29 /user/edureka/cust
      

      【讨论】:

        猜你喜欢
        • 2012-05-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-12-31
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多