将保存在 RDBMS 中的非结构化数据卸载到 Hadoop
Offloading unstructured data saved in RDBMS to Hadoop
我的组织正在考虑将作为表的一部分保存在 Oracle 数据库中的非结构化数据(如文本、图像等)卸载到 Hadoop 中。数据库的大小约为 10 TB,并且还在不断增长。 CLOB/BLOB 列的大小约为 3 TB.Right,现在这些列通过 Web 应用程序查询某些类型的报告。它们也被写入但不是很频繁。
我们可以采取什么样的方法来实现正确的数据卸载并确保卸载的数据可用于通过现有 Web 应用程序读取。
您可以在oracle blog(link)中获得部分答案。
如果需要通过sqoop在HDFS环境中拉取数据,那么您必须先阅读sqoop文档中的以下内容。
Sqoop 以特定方式处理大型对象(BLOB 和 CLOB 列)。如果此数据确实很大,那么这些列不应像大多数列那样在内存中完全具体化以进行操作。相反,他们的数据以流方式处理。大对象可以与其余数据一起存储,在这种情况下,每次访问时它们都会在内存中完全具体化,或者它们可以存储在链接到主数据存储的辅助存储文件中。默认情况下,大小小于 16 MB 的大对象与其余数据一起存储。较大时,它们存储在导入目标目录的 _lobs 子目录中的文件中。这些文件以针对大型记录存储优化的单独格式存储,每个文件最多可容纳 2^63 字节的记录。 lob 溢出到单独文件的大小由 --inline-lob-limit 参数控制,该参数采用指定最大 lob 大小的参数以保持内联,以字节为单位。如果将内联 LOB 限制设置为 0,则所有大对象都将放在外部存储中。
如果您使用像 Impala 这样的 MPP 查询引擎,则可以通过 Web 应用程序进行读取,并且它运行良好并且是生产就绪技术。我们大量使用复杂的 Impala 查询来呈现 SpringBoot 应用程序的内容。由于 Impala 在内存中运行所有内容,如果它是多租户 Cloudera 集群,则可能会出现缓慢或失败的情况。对于较小的用户组(1000-2000 用户群),它工作得很好。
如果您需要更多信息,请告诉我。
推荐
- 使用 Cloudera 发行版 (read here)
- 为 Impala 守护进程
提供足够的内存
- 确保为基于 ETL 负载的计划(公平份额或优先份额)正确配置了 YARN 与 Web 应用程序负载
- 如果需要,让 Impala 守护进程远离 YARN
- 为 Impala 内存定义内存配额,以便允许并发查询
- 展平您的查询,这样 Impala 运行速度更快,无需连接和随机播放。
- 如果您只阅读几列,存储在 Parquet 中,它工作得非常快。
我的组织正在考虑将作为表的一部分保存在 Oracle 数据库中的非结构化数据(如文本、图像等)卸载到 Hadoop 中。数据库的大小约为 10 TB,并且还在不断增长。 CLOB/BLOB 列的大小约为 3 TB.Right,现在这些列通过 Web 应用程序查询某些类型的报告。它们也被写入但不是很频繁。
我们可以采取什么样的方法来实现正确的数据卸载并确保卸载的数据可用于通过现有 Web 应用程序读取。
您可以在oracle blog(link)中获得部分答案。
如果需要通过sqoop在HDFS环境中拉取数据,那么您必须先阅读sqoop文档中的以下内容。
Sqoop 以特定方式处理大型对象(BLOB 和 CLOB 列)。如果此数据确实很大,那么这些列不应像大多数列那样在内存中完全具体化以进行操作。相反,他们的数据以流方式处理。大对象可以与其余数据一起存储,在这种情况下,每次访问时它们都会在内存中完全具体化,或者它们可以存储在链接到主数据存储的辅助存储文件中。默认情况下,大小小于 16 MB 的大对象与其余数据一起存储。较大时,它们存储在导入目标目录的 _lobs 子目录中的文件中。这些文件以针对大型记录存储优化的单独格式存储,每个文件最多可容纳 2^63 字节的记录。 lob 溢出到单独文件的大小由 --inline-lob-limit 参数控制,该参数采用指定最大 lob 大小的参数以保持内联,以字节为单位。如果将内联 LOB 限制设置为 0,则所有大对象都将放在外部存储中。
如果您使用像 Impala 这样的 MPP 查询引擎,则可以通过 Web 应用程序进行读取,并且它运行良好并且是生产就绪技术。我们大量使用复杂的 Impala 查询来呈现 SpringBoot 应用程序的内容。由于 Impala 在内存中运行所有内容,如果它是多租户 Cloudera 集群,则可能会出现缓慢或失败的情况。对于较小的用户组(1000-2000 用户群),它工作得很好。
如果您需要更多信息,请告诉我。
推荐
- 使用 Cloudera 发行版 (read here)
- 为 Impala 守护进程 提供足够的内存
- 确保为基于 ETL 负载的计划(公平份额或优先份额)正确配置了 YARN 与 Web 应用程序负载
- 如果需要,让 Impala 守护进程远离 YARN
- 为 Impala 内存定义内存配额,以便允许并发查询
- 展平您的查询,这样 Impala 运行速度更快,无需连接和随机播放。
- 如果您只阅读几列,存储在 Parquet 中,它工作得非常快。