如何从hadoop的Hdfs上查询文件
打算设计一个基于Hadoop的网络硬盘,包含文件搜索功能。Hadoop会在namenode创建整个文件系统的索引,问题:1如何查看该索引并对该索引进行操作(api);2有...
打算设计一个基于Hadoop的网络硬盘,包含文件搜索功能。Hadoop会在namenode创建整个文件系统的索引,问题:1如何查看该索引并对该索引进行操作(api);2有没有专门的api可以对hdfs上的文件进行查找
先给50分,问题解决再给200分。
希望大家帮忙 展开
先给50分,问题解决再给200分。
希望大家帮忙 展开
展开全部
A1.该索引叫FsImage, 但没有对外提供api, 参考 附录的链接1
整个文件系统的名字空间,包括数据块到文件的映射、文件的属性等,都存储在一个称为FsImage的文件中,这个文件也是放在Namenode所在的本地文件系统上。
A2. FS Shell, 详细请参考链接2
1)hadoop fs -ls
功能跟shell 的 ls 命令相同
2)hadoop fs -lsr
ls命令的递归版本。类似于Unix中的ls -R。
如果要实现复杂的查找功能,可以考虑用下述方式
hadoop fs -lsr / | awk/sed/grep .....
链接1:FsImage/EditLog的官方说明
http://hadoop.apache.org/common/docs/r0.21.0/cn/hdfs_design.html#%E6%96%87%E4%BB%B6%E7%B3%BB%E7%BB%9F%E5%85%83%E6%95%B0%E6%8D%AE%E7%9A%84%E6%8C%81%E4%B9%85%E5%8C%96
链接2:HDFS shell
http://hadoop.apache.org/common/docs/r0.21.0/cn/hdfs_shell.html#ls
整个文件系统的名字空间,包括数据块到文件的映射、文件的属性等,都存储在一个称为FsImage的文件中,这个文件也是放在Namenode所在的本地文件系统上。
A2. FS Shell, 详细请参考链接2
1)hadoop fs -ls
功能跟shell 的 ls 命令相同
2)hadoop fs -lsr
ls命令的递归版本。类似于Unix中的ls -R。
如果要实现复杂的查找功能,可以考虑用下述方式
hadoop fs -lsr / | awk/sed/grep .....
链接1:FsImage/EditLog的官方说明
http://hadoop.apache.org/common/docs/r0.21.0/cn/hdfs_design.html#%E6%96%87%E4%BB%B6%E7%B3%BB%E7%BB%9F%E5%85%83%E6%95%B0%E6%8D%AE%E7%9A%84%E6%8C%81%E4%B9%85%E5%8C%96
链接2:HDFS shell
http://hadoop.apache.org/common/docs/r0.21.0/cn/hdfs_shell.html#ls
追问
脚本命令我知道用法,但不知道API,http://hadoop.apache.org/common/docs/r1.0.2/api/里面的org.apache.hadoop.contrib.index.lucene是否提供了index的api呢?我查了好多次但也没看出个所以然,你可以帮我查一下吗?
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
java API:
FileStatus[] status = fs.listStatus(paths);
Path[] listedPaths = FileUtil.stat2Paths(status);
for(Path p : listedPaths) {
System.out.println(p);
}
FileStatus[] status = fs.listStatus(paths);
Path[] listedPaths = FileUtil.stat2Paths(status);
for(Path p : listedPaths) {
System.out.println(p);
}
追问
这个我会 就是请教一下有没有直接从Hadoop的索引文件(FsImage)里检索的API
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询