0

Hadoopこんにちは、Java プログラムからユーザーとグループのリストを取得したいと考えています。それを取得する方法はありますAPIか?私はたくさんグーグルで検索しましたが、まだ何も見つかりませんでした.:(

4

2 に答える 2

0

API についてはわかりませんが、情報を取得する確実な方法は、名前ノードの fsimage を解析し、XML 形式で情報を取得する Offline Image Viewer を使用することです。その後、単純な Java API を使用して xml を解析し、ユーザーとグループのリストを取得できます。

役立つリンク a) http://hadoop.apache.org/docs/current/hadoop-project-dist/hadoop-hdfs/HdfsImageViewer.html b) https://github.com/twitter/hdfs-du

于 2013-06-19T09:03:17.073 に答える
0

hdfs://localhost:8020/user からすべてのユーザーを取得し、グループを使用してそれらのユーザーのグループを取得できます (ShellBasedUnixGroupsMapping サービス経由)。

ここにコードがあります

    public class Sample {
    public static void main(String[] args) throws IOException {
        Configuration conf = new Configuration();
        conf.addResource(new Path("/path/to/core-site.xml"));
        conf.addResource(new Path("/path/to/hdfs-site.xml"));
        Groups g = new Groups(conf);

        FileSystem fs = FileSystem.get(conf);

        FileStatus[] files = fs.listStatus(new Path("/user"));
        for (FileStatus f : files) {
            Path p = f.getPath();


            try {
                List<String> gs = g.getGroups(p.getName());
                if (gs != null) {
                    System.out.println(p.getName() + " === " + gs.toString());
                }
            } catch (Exception e) {
                System.out.println("No groups found for " + p.getName());
            }
        }

    }
}

java -cp myjar.jar:/usr/lib/hadoop-hdfs/hadoop-hdfs.jar com.tools.Sample
于 2013-06-19T17:57:19.403 に答える