跳至主要內容

...大约 4 分钟

HDFS 集成

存储共享架构

当前,TSFile(包括 TSFile 文件和相关的数据文件)支持存储在本地文件系统和 Hadoop 分布式文件系统(HDFS)。配置使用 HDFS 存储 TSFile 十分容易。

系统架构

当你配置使用 HDFS 存储 TSFile 之后,你的数据文件将会被分布式存储。系统架构如下:

Config and usage

如果你希望将 TSFile 存储在 HDFS 上,可以遵循以下步骤:

首先下载对应版本的源码发布版或者下载 github 仓库

使用 maven 打包 server 和 Hadoop 模块:mvn clean package -pl server,hadoop -am -Dmaven.test.skip=true -P get-jar-with-dependencies

然后,将 Hadoop 模块的 target jar 包hadoop-tsfile-X.X.X-jar-with-dependencies.jar复制到 server 模块的 target lib 文件夹 .../server/target/iotdb-server-X.X.X/lib下。

编辑iotdb-engine.properties中的用户配置。相关配置项包括:

  • tsfile_storage_fs
名字tsfile_storage_fs
描述Tsfile 和相关数据文件的存储文件系统。目前支持 LOCAL(本地文件系统)和 HDFS 两种
类型String
默认值LOCAL
改后生效方式仅允许在第一次启动服务器前修改
  • core_site_path
Namecore_site_path
描述在 Tsfile 和相关数据文件存储到 HDFS 的情况下用于配置 core-site.xml 的绝对路径
类型String
默认值/etc/hadoop/conf/core-site.xml
改后生效方式重启服务器生效
  • hdfs_site_path
Namehdfs_site_path
描述在 Tsfile 和相关数据文件存储到 HDFS 的情况下用于配置 hdfs-site.xml 的绝对路径
类型String
默认值/etc/hadoop/conf/hdfs-site.xml
改后生效方式重启服务器生效
  • hdfs_ip
名字hdfs_ip
描述在 Tsfile 和相关数据文件存储到 HDFS 的情况下用于配置 HDFS 的 IP。如果配置了多于 1 个 hdfs_ip,则表明启用了 Hadoop HA
类型String
默认值localhost
改后生效方式重启服务器生效
  • hdfs_port
名字hdfs_port
描述在 Tsfile 和相关数据文件存储到 HDFS 的情况下用于配置 HDFS 的端口
类型String
默认值9000
改后生效方式重启服务器生效
  • dfs_nameservices
名字hdfs_nameservices
描述在使用 Hadoop HA 的情况下用于配置 HDFS 的 nameservices
类型String
默认值hdfsnamespace
改后生效方式重启服务器生效
  • dfs_ha_namenodes
名字hdfs_ha_namenodes
描述在使用 Hadoop HA 的情况下用于配置 HDFS 的 nameservices 下的 namenodes
类型String
默认值nn1,nn2
改后生效方式重启服务器生效
  • dfs_ha_automatic_failover_enabled
名字dfs_ha_automatic_failover_enabled
描述在使用 Hadoop HA 的情况下用于配置是否使用失败自动切换
类型Boolean
默认值true
改后生效方式重启服务器生效
  • dfs_client_failover_proxy_provider
名字dfs_client_failover_proxy_provider
描述在使用 Hadoop HA 且使用失败自动切换的情况下配置失败自动切换的实现方式
类型String
默认值org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider
改后生效方式重启服务器生效
  • hdfs_use_kerberos
名字hdfs_use_kerberos
描述是否使用 kerberos 验证访问 hdfs
类型String
默认值false
改后生效方式重启服务器生效
  • kerberos_keytab_file_path
名字kerberos_keytab_file_path
描述kerberos keytab file 的完整路径
类型String
默认值/path
改后生效方式重启服务器生效
  • kerberos_principal
名字kerberos_principal
描述Kerberos 认证原则
类型String
默认值your principal
改后生效方式重启服务器生效

启动 server, Tsfile 将会被存储到 HDFS 上。

如果你想要恢复将 TSFile 存储到本地文件系统,只需编辑配置项tsfile_storage_fsLOCAL。在这种情况下,如果你已经在 HDFS 上存储了一些数据文件,你需要将它们下载到本地,并移动到你所配置的数据文件文件夹(默认为../server/target/iotdb-server-X.X.X/data/data), 或者重新开始你的整个导入数据过程。

常见问题

  1. 这个功能支持哪些 Hadoop 版本?

A: Hadoop 2.x and Hadoop 3.x 均可以支持。

  1. 当启动服务器或创建时间序列时,我遇到了如下错误:
ERROR org.apache.iotdb.tsfile.fileSystem.fsFactory.HDFSFactory:62 - Failed to get Hadoop file system. Please check your dependency of Hadoop module.

A: 这表明你没有将 Hadoop 模块的依赖放到 IoTDB server 中。你可以这样解决:

  • 使用 Maven 打包 Hadoop 模块:mvn clean package -pl hadoop -am -Dmaven.test.skip=true -P get-jar-with-dependencies
  • 将 Hadoop 模块的 target jar 包hadoop-tsfile-X.X.X-jar-with-dependencies.jar复制到 server 模块的 target lib 文件夹 .../server/target/iotdb-server-X.X.X/lib下。

Copyright © 2024 The Apache Software Foundation.
Apache IoTDB, IoTDB, Apache, the Apache feather logo, and the Apache IoTDB project logo are either registered trademarks or trademarks of The Apache Software Foundation in all countries

Have a question? Connect with us on QQ, WeChat, or Slack. Join the community now.