当前位置:首页 » 文件管理 » 遍历hdfs文件夹

遍历hdfs文件夹

发布时间: 2023-05-10 07:30:28

A. 用 java遍历hadoop分布式文件系统中某个目录下的全部文件,我的hadoop是单节点的

原因:
访问的是本地文件系统而非hdfs , 因为Configuration默认的是在core-default.xml中的属性fs.default.name默认值是file:///,表示本地文件系统。在我们new Configuration();时会默认加载core-default.xml文件,所以根据这个文件的fs.default.name值使用了本地文件系统。

解决方法:
一般安装hadoop时都是修改core-site.xml文件,这个文件设置的属性值一般使用来覆盖core-default.xml这个文件的,在core-site.xml文件中会设置fs.default.name值为hadoop的namenode的地址以及端口号,如hdfs://localhost:9000,即表示namenode是本机,也就是为分布式。所以我们在连接hdfs时需要指定连接的地址,也就是hadoop集群中core-site.xml中fs.default.name属性值。所以解决方法有三种:
1)在代码Configuration conf=new Configuration();之后手动为Configuration对象设置fs.default.name属性值,如:conf.set("fs.default.name","hdfs:localhost:9000");
2)在代码的classpath下创建一个文件,在文件中设置fs.default.name属性值,再使用conf.addResource("文件路径")将该文件添加到Configuration中;
3)直接将集群的core-site.xml添加到classpath下即可,无需手动添加到Configuration,在new Configuration时会自动加载该文件

B. 关于hdfs的物理存储路径问题

我没用过Hive,但HDFS的存储机制都是一样的。
你所谓的物理位置指的是在操作系统中的磁盘路径?
这个路径是在Hadoop配置的时候写在hdfs-site.xml文件的dfs.datanode.data.dir字段里的,在每个datanode的这个文件夹里存着该节点上存储的所有数据块block,以blk_打头。
dfs.namenode.data.dir指定的文件夹在namenode中则存在元数据。
所以即便你知道这个所谓的物理路径也没什么用,数据都是以block形式存在的,大的数据还由好多个block组成,而且每个block还有副本。

C. 编写一个JAVA类方法,通过该方法可以获取出存储在HDFS集群中根目录的所有文件

public void listMyFile() throws Exception {

//获取FileSystem
//"hdfs"为伪造用户,使用hdfs用户进行访问
FileSystem fileSystem = FileSystem.get(new URI("hdfs://192.168.83.141:8020"), new Configuration(), "hdfs");
//获取指定目标目录下的所有文件信息
RemoteIterator<LocatedFileStatus> iterator =
fileSystem.listFiles(new Path("/"), true);
//遍历迭代器
while (iterator.hasNext()) {
//获取每个文件详细信息
LocatedFileStatus fileStatus = iterator.next();
//获取每个文件的存储路径
System.out.println("路径:" + fileStatus.getPath() +
"---" + fileStatus.getPath().getName());
//获取文件的block存储信息
BlockLocation[] blockLocations = fileStatus.getBlockLocations();
//打印每个文件的block数
System.out.println("block数量:" + blockLocations.length);
//打印每一个block副本的存储位置
for (BlockLocation blockLocation : blockLocations) {
String[] hosts = blockLocation.getHosts();
for (String host : hosts) {
System.out.println("主机:" + host);
}
}
}
}

热点内容
python脚本编程基础 发布:2025-02-12 20:03:40 浏览:485
我的世界服务器里刷怪 发布:2025-02-12 19:57:04 浏览:388
疯狂java视频 发布:2025-02-12 19:38:17 浏览:149
flash免费上传网站 发布:2025-02-12 19:14:03 浏览:190
买脚本一般都在哪里 发布:2025-02-12 19:08:07 浏览:823
恋舞刷分脚本se下载 发布:2025-02-12 18:56:53 浏览:8
c语言大小写转换程序 发布:2025-02-12 18:55:23 浏览:524
三星耳机坏了怎么配置 发布:2025-02-12 18:54:46 浏览:975
简易编程语言 发布:2025-02-12 18:48:07 浏览:523
咋上传视频 发布:2025-02-12 18:45:50 浏览:288