HDFS Remote
HDFS 是一种分布式文件系统,它是 Apache Hadoop 框架的一部分。
路径指定为 remote:
或 remote:path/to/dir
。
配置
以下是一个如何创建名为 remote
的远程存储的示例。首先运行:
rclone config
这将引导你完成一个交互式的设置过程:
No remotes found, make a new one?
n) New remote
s) Set configuration password
q) Quit config
n/s/q> n
name> remote
Type of storage to configure.
Enter a string value. Press Enter for the default ("").
Choose a number from below, or type in your own value
[skip]
XX / Hadoop distributed file system
\ "hdfs"
[skip]
Storage> hdfs
** See help for hdfs backend at: https://rclone.cn/hdfs/ **
hadoop name node and port
Enter a string value. Press Enter for the default ("").
Choose a number from below, or type in your own value
1 / Connect to host namenode at port 8020
\ "namenode:8020"
namenode> namenode.hadoop:8020
hadoop user name
Enter a string value. Press Enter for the default ("").
Choose a number from below, or type in your own value
1 / Connect to hdfs as root
\ "root"
username> root
Edit advanced config? (y/n)
y) Yes
n) No (default)
y/n> n
Remote config
Configuration complete.
Options:
- type: hdfs
- namenode: namenode.hadoop:8020
- username: root
Keep this "remote" remote?
y) Yes this is OK (default)
e) Edit this remote
d) Delete this remote
y/e/d> y
Current remotes:
Name Type
==== ====
hadoop hdfs
e) Edit existing remote
n) New remote
d) Delete remote
r) Rename remote
c) Copy remote
s) Set configuration password
q) Quit config
e/n/d/r/c/s/q> q
这个远程存储名为 remote
,现在可以像下面这样使用它。
查看所有顶级目录
rclone lsd remote:
列出目录的内容
rclone ls remote:directory
将远程的 directory
同步到 /home/local/directory
,并删除多余的文件。
rclone sync --interactive remote:directory /home/local/directory
为测试搭建你自己的 HDFS 实例
你可以从 手动设置 开始,或者使用测试中的 Docker 镜像:
如果你想构建 Docker 镜像
git clone https://github.com/rclone/rclone.git
cd rclone/fstest/testserver/images/test-hdfs
docker build --rm -t rclone/test-hdfs .
或者您可以直接使用最新推送的版本
docker run --rm --name "rclone-hdfs" -p 127.0.0.1:9866:9866 -p 127.0.0.1:8020:8020 --hostname "rclone-hdfs" rclone/test-hdfs
注:启动需要几秒钟。
对于这个 docker 镜像,远程镜像需要这样配置:
[remote]
type = hdfs
namenode = 127.0.0.1:8020
username = root
你可以使用 docker kill rclone-hdfs
命令停止这个镜像(注意:该镜像未使用卷,因此所有上传的数据都将丢失)。
修改时间
修改时间会精确到 1 秒进行存储。
校验和
目前未实现校验和功能。
使用信息
你可以使用 rclone about remote:
命令来显示文件系统的大小和当前使用情况。
受限文件名的字符
除了 默认受限字符集 之外,以下字符也会被替换:
字符 | 编码值 | 替换字符 |
---|---|---|
: | 0x3A | : |
无效的 UTF-8 字节也会被 替换。
标准选项
以下是 HDFS(Hadoop 分布式文件系统)特有的标准选项。
–hdfs-namenode
Hadoop 名称节点和端口。
例如,使用 “namenode-1:8020,namenode-2:8020,…” 来连接到端口为 8020 的多个名称节点。
属性:
- 配置项:namenode
- 环境变量:RCLONE_HDFS_NAMENODE
- 类型:逗号分隔的列表
- 默认值:
–hdfs-username
Hadoop 用户名。
属性:
- 配置项:username
- 环境变量:RCLONE_HDFS_USERNAME
- 类型:字符串
- 是否必需:否
- 示例:
- “root”
- 以 root 用户身份连接到 HDFS。
- “root”
高级选项
以下是 HDFS(Hadoop 分布式文件系统)特有的高级选项。
–hdfs-service-principal-name
名称节点的 Kerberos 服务主体名称。
启用 KERBEROS 认证。指定名称节点的服务主体名称(SERVICE/FQDN)。例如,对于运行在 FQDN 为 ’namenode.hadoop.docker’ 上的 ‘hdfs’ 服务,名称节点的服务主体名称为 "hdfs/namenode.hadoop.docker"。
属性:
- 配置项:service_principal_name
- 环境变量:RCLONE_HDFS_SERVICE_PRINCIPAL_NAME
- 类型:字符串
- 是否必需:否
–hdfs-data-transfer-protection
Kerberos 数据传输保护:authentication(认证)|integrity(完整性)|privacy(隐私)。
指定在与数据节点通信时是否需要进行认证、数据签名完整性检查以及有线加密。可能的值为 ‘authentication’、‘integrity’ 和 ‘privacy’。仅在启用 KERBEROS 时使用。
属性:
- 配置项:data_transfer_protection
- 环境变量:RCLONE_HDFS_DATA_TRANSFER_PROTECTION
- 类型:字符串
- 是否必需:否
- 示例:
- “privacy”
- 确保启用认证、完整性检查和加密。
- “privacy”
–hdfs-encoding
后端的编码方式。
有关更多信息,请参阅 概述中的编码部分。
属性:
- 配置项:encoding
- 环境变量:RCLONE_HDFS_ENCODING
- 类型:编码方式
- 默认值:Slash(斜杠)、Colon(冒号)、Del(删除符)、Ctl(控制字符)、InvalidUtf8(无效的 UTF-8)、Dot(点)
–hdfs-description
远程存储的描述。
属性:
- 配置项:description
- 环境变量:RCLONE_HDFS_DESCRIPTION
- 类型:字符串
- 是否必需:否
限制
- 不支持服务器端的
Move
或DirMove
操作。 - 未实现校验和功能。