EMR-3.30.0及后续版本的Block模式,支持dump整个namespace的元数据信息至OSS中,并通过Jindo Sql工具直接分析元数信息。
背景信息
在HDFS文件系统中,整个分布式文件的元数据存储在名为fsimage的快照文件中。文件中包含了整个文件系统的命名空间、文件、Block和文件系统配额等元数据信息。HDFS支持通过命令行下载整个fsimage文件(xml形式)到本地,以便离线分析元数据信息,而JindoFS无需下载元数据信息至本地。
上传文件系统元数据至OSS
使用Jindo命令行工具上传命名空间的元数据至OSS,命令格式如下。
jindo jfs -dumpMetadata <nsName>
<nsName>
为Block模式对应的namespace名称。
例如,上传并离线分析test-block的元数据。
jindo jfs -dumpMetadata test-block
当提示如下信息时,表示上传成功并以JSON格式的文件存放在OSS中。
Sucessfully upload namespace metadata to OSS.
元数据上传路径
元数据信息上传的路径为JindoFS中配置的sysinfo的子目录下的metadataDump子目录。
例如,配置的
namespace.sysinfo.oss.uri
为oss://abc/
,则上传的文件会在oss://abc/metadataDump
子目录中。
参数 | 说明 |
---|---|
namespace.sysinfo.oss.uri | 存储Bucket和路径。 |
namespace.sysinfo.oss.endpoint | 对应Endpoint信息,支持跨Region。 |
namespace.sysinfo.oss.access.key | 阿里云的AccessKey ID。 |
namespace.sysinfo.oss.access.secret | 阿里云的AccessKey Secret。 |
批次信息:因为分布式文件系统的元数据会跟随用户的使用发生变化,所以我们每次对元数据进行分析是基于命令执行当时的元数据信息的快照进行的。每次运行Jindo命令进行上传会在目录下,根据上传时间生成对应批次号作为本次上传文件的根目录,以保证每次上传的数据不会被覆盖,您可以根据需要删除历史数据。
- ①表示OSS系统信息配置路径。
- ②表示namespce。
- ③表示批次号。
元数据Schema
上传至OSS的文件系统元信息以JSON文件格式存放。其Schema信息如下。
{
"type":"string", /*INode类型,FILE文件DIRECTORY目录*/
"id": "string", /*INode id*/
"parentId" :"string", /*父节点id*/
"name":"string", /*INode名称*/
"size": "int", /*INode大小, bigint*/
"permission":"int", /*permission以int格式存放*/
"owner":"string", /*owner名称*/
"ownerGroup":"string", /*owner组名称*/
"mtime":"int", /*inode修改时间,bigint*/
"atime":"int", /*inode最近访问时间,bigint*/
"attributes":"string", /*文件相关属性*/
"state":"string", /*INode状态*/
"storagePolicy":"string", /*存储策略*/
"etag":"string" /*etag*/
}