HDFS 集成

存储共享架构

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

系统架构

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

HDFS集成 - 图1

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. 当启动服务器或创建时间序列时,我遇到了如下错误:
  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下。