如何获取出HDFS已用空间/总空间的值。java FileSystem中有相关的方法吗??? 10

回答后补追30悬赏... 回答后补追30悬赏 展开
 我来答
_诗礼_
2015-01-26 · 超过69用户采纳过TA的回答
知道小有建树答主
回答量:184
采纳率:50%
帮助的人:108万
展开全部
    public List<BaseItem> getHdfsstatus() {
        if (conf == null) {
            conf = new Configuration();
            conf.set("fs.default.name","hdfs://CRNOPHQDW2:54310");
        }
        FileSystem fs = null;
        try {
            fs = FileSystem.get(conf);
        } catch (IOException e) {
            e.printStackTrace();
            return null;
        }
        List<BaseItem> ret = new ArrayList<BaseItem>();
        DistributedFileSystem dfs = (DistributedFileSystem) fs;
        org.apache.hadoop.hdfs.DistributedFileSystem.DiskStatus ds = null;
        try {
            ds = dfs.getDiskStatus();
        } catch (IOException e) {
            e.printStackTrace();
        }
        long capacity = ds.getCapacity();
        long used = ds.getDfsUsed();
        long remaining = ds.getRemaining();
        long presentCapacity = used + remaining;
        String name = "GrobleStatus";
        String value = "GrobleValue";
        BaseItem bitem = new BaseItem(name, value);
        bitem.setMap_value("Configured Capacity"+getunittype(StringUtils.byteDesc(capacity)),
                getunitvalue(StringUtils.byteDesc(capacity)));
        bitem.setMap_value("Present Capacity"+getunittype(StringUtils.byteDesc(presentCapacity)),
                getunitvalue(StringUtils.byteDesc(presentCapacity)));
        bitem.setMap_value("DFS Remaining"+getunittype(StringUtils.byteDesc(remaining)), getunitvalue(StringUtils.byteDesc(remaining)));
        bitem.setMap_value("DFS Used"+getunittype(StringUtils.byteDesc(used)), getunitvalue(StringUtils.byteDesc(used)));
        bitem.setMap_value(
                "DFS Used%",
                StringUtils
                        .limitDecimalTo2(((1.0D * (double) used) / (double) presentCapacity) )
                        );
        ret.add(bitem);
        DatanodeInfo live[] = null;
        try {
            live = dfs
                    .getClient()
                    .datanodeReport(
                            org.apache.hadoop.hdfs.protocol.FSConstants.DatanodeReportType.LIVE);
        } catch (IOException e) {
            e.printStackTrace();
            return null;
        }
        DatanodeInfo dead[] = null;
        try {
            dead = dfs
                    .getClient()
                    .datanodeReport(
                            org.apache.hadoop.hdfs.protocol.FSConstants.DatanodeReportType.DEAD);
        } catch (IOException e) {
            e.printStackTrace();
            return null;
        }
        for (int i = 0; i < live.length; i++) {
            DatanodeInfo dn = live[i];
            ret.add(getbItem(dn));
        }

        for (int j = 0; j < dead.length; j++) {
            DatanodeInfo dn = dead[j];
            ret.add(getbItem(dn));
        }
        return ret;
    }

以前写过的 类似的 你可以看下。

本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2015-01-26
展开全部
FileSystem貌似没有吧,有时间下一份源码看看挺好的。。。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式