我的组织正在考虑将作为Oracle数据库中表的一部分保存的文本,图像等非结构化数据卸载到Hadoop中。数据库的大小约为10 TB,并且还在不断增长。 CLOB / BLOB列的大小约为3 TB。现在,可以通过Web应用程序查询这些列以获取某些类型的报告。它们也被写入但不是很频繁。
我们可以采取哪种方法来实现适当的数据卸载,并确保已卸载的数据可供通过现有Web应用程序读取。
答案 0 :(得分:1)
您可以在oracle博客(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用户群),它可以很好地工作。
如果需要更多输入,请告诉我。
推荐将会