HDFS Remote

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。

高级选项

以下是 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”
      • 确保启用认证、完整性检查和加密。

–hdfs-encoding

后端的编码方式。

有关更多信息,请参阅 概述中的编码部分

属性:

  • 配置项:encoding
  • 环境变量:RCLONE_HDFS_ENCODING
  • 类型:编码方式
  • 默认值:Slash(斜杠)、Colon(冒号)、Del(删除符)、Ctl(控制字符)、InvalidUtf8(无效的 UTF-8)、Dot(点)

–hdfs-description

远程存储的描述。

属性:

  • 配置项:description
  • 环境变量:RCLONE_HDFS_DESCRIPTION
  • 类型:字符串
  • 是否必需:否

限制

  • 不支持服务器端的 MoveDirMove 操作。
  • 未实现校验和功能。