Data Mover 支持在 Teradata Database 和 Hadoop 之间复制视图所返回的表和数据。您可以将视图数据复制到 Hadoop 表,但不支持将视图定义复制到 Hadoop。
Hadoop 组件
Data Mover 需要以下 Hadoop 服务:
服务 | 说明 |
---|---|
hive | 使用类似 SQL 的语言来访问数据的服务。Apache Hive 提供数据摘要和特定查询。Data Mover 支持使用 Hiveserver2 来运行查询,以在 Teradata 和 Hive 之间移动表。 仅支持 hive.server2.transport.mode 属性的 binary 值。
|
HttpFS 和 WebHDFS | 提供 HTTP 网关以支持所有 HDFS 文件系统操作的 REST 服务。 |
WebHCAT | 必须为 HCatalog 启用的 REST API 数据集成服务。用于收集 Hive 表 DDL。 |
Oozie | 工作流计划程序系统,用于管理、提交和监控 Hadoop 作业。该服务用于运行 TDCH 作业。 |
实用程序
Data Mover 可以使用 TDCH 或 QueryGrid 在 Teradata 和 Hadoop 之间移动数据。
如果 TDCH 和 QueryGrid 都可用,Data Mover 将使用 QueryGrid。如果未指定任何外部服务器,Data Mover 将使用 TDCH。
实用程序 | 说明 |
---|---|
TDCH | 提供一组 API 和工具以支持在产品的 Teradata 系统和 Hadoop 生态系统之间进行高性能并行双向数据移动的命令行连接器。有关详细信息,请参阅 Teradata Developer Exchange 上的 Teradata Connector for Hadoop。 |
QueryGrid | QueryGrid 是一款 Teradata 软件,可用于在 Teradata 和 Hadoop 之间导入和导出数据。在 Data Mover 中,必须将 QueryGrid T2H 指定为可供使用的外部服务器。 在 Data Mover 中,T2H 支持 QueryGrid 2.x Teradata Hadoop 连接器。
|
将视图数据复制到 Hadoop 表时,Data Mover 使用的是 QueryGrid。TDCH 不支持复制视图数据。
JSON 支持
如果 Teradata 中的目标表具有 JSON 列类型,则只有当满足下列条件时才能将数据从 Hadoop 复制到 Teradata Database:
- T2H 用于将数据从 Hadoop 复制到 Teradata。
- 已在作业定义中指定外部服务器。
在 Teradata Database 15.10 或更高版本之间移动表时,Data Mover 支持使用 BSON 或 UBJSON 存储格式移动具有 JSON 列的表。从 Teradata Database 15.0 移动到 Teradata Database 15.10 或更高版本时,将对 JSON 列使用缺省文本存储格式。
限制
- 您不能使用 TDCH 将数据复制到 JSON 列类型。
- Data Mover 不支持将 JSON 列类型从 Teradata Database 复制到 Hadoop。
安全性
您可以使用以下设置在 Teradata 和 Hadoop 之间复制表:
- 在 Data Mover 作业中指定的 Hive 用户必须对 HDFS 中 Hive 表的基础文件和文件夹具有读取/写入/执行权限。
- Oozie 必须能够模拟 Hive 用户运行 TDCH 作业。
Teradata Connector for Hadoop 还支持在 Teradata Database 和带 Kerberos 保护的受支持 Hadoop 系统之间移动数据。有关详细信息,请咨询 Teradata 客户服务人员。
对象支持局限
- Data Mover 只允许在 Teradata 和 Hadoop 之间复制视图所返回的表和数据。您不能在 Teradata 和 Hadoop 之间复制其他对象,如视图、索引或整个数据库。
- 如果用户指定了表的列信息(如名称或类型),并且目标表已经存在,则列信息将用于比较源表和目标表的 DDL。如果目标表不存在,Data Mover 将使用列信息创建目标表。如果您未指定列信息,则源表元数据将用于列名称或类型。Data Mover 不会针对 Hadoop 支持删除目标表。有关详细信息,请参阅在数据库之间移动时支持的对象。
- 有关受支持或受限制数据类型的详细信息,请参阅数据类型映射。
限制
Data Mover 允许您限制并发运行的 Hadoop 连接器和 T2H 任务的数量。使用 Hadoop 连接器或 T2H 移动的每个表会分别封装为单个任务。
可以通过使用 save_configuration 命令设置 hadoop.connector.max.task.slot 属性的值来限制并发运行的 Hadoop 连接器任务的数量。也可以通过使用 save_configuration 命令设置 sqlh.max.task.slot 属性的值来限制并发运行的 T2H 任务的数量。
hadoop.connector.max.task.slot 和 sqlh.max.task.slot 的缺省值为 2。
已知问题
- 如果您无法从 WebHCAT 检索元数据并且 dmDaemon.log 中显示error 143,则可以增加 webhcat 参数 templeton.exec.timeout 的超时值。
- 如果并发启动的 Oozie 作业数多于 Hadoop 集群中映射器的数量,则 Oozie 作业会发生死锁。解决办法是:在每个 Oozie 作业之间添加一个等待时间,从而不允许 Oozie 作业并发启动。agent.properties 中的 hadoop.task.throttle 属性可在两个作业之间添加一个等待时间(以秒为单位)。如果您发现与 Oozie 相关的死锁问题,请使用此属性。
- 在 Teradata Database 上优化 T2H,以确保正确处理并发 T2H 查询。如果并发 T2H 查询的数量大于在 Teradata Database 中配置的数量,T2H 可能会变得不稳定并导致出现错误,例如 PermGen 异常或停止 T2H 查询,这将需要重新启动 UDF 服务器进程。可以使用 Data Mover 配置中的 sqlh.max.task.slot 属性来限制 Data Mover 并发运行的最大 T2H 查询数。