将保存在rdbms中的非结构化数据卸载到hadoop

2skhul33  于 2021-05-31  发布在  Hadoop
关注(0)|答案(1)|浏览(349)

我的组织正在考虑将作为oracle数据库中表的一部分保存的文本、图像等非结构化数据卸载到hadoop中。数据库的大小约为10 tb,并且还在不断增长。clob/blob列的大小约为3TB。现在,这些列通过web应用程序查询特定类型的报表。它们也会被写入,但不是很频繁。
我们可以采取什么样的方法来实现适当的数据卸载,并确保卸载的数据可供通过现有web应用程序读取。

fnatzsnv

fnatzsnv1#

你可以在甲骨文博客(link)上找到部分答案。
如果需要通过sqoop在hdfs环境中提取数据,那么必须首先阅读sqoop文档中的以下内容。
sqoop以特定的方式处理大型对象(blob和clob列)。如果这个数据真的很大,那么这些列不应该像大多数列那样在内存中完全具体化以进行操作。相反,他们的数据是以流方式处理的。大对象可以与其余数据一起内联存储,在这种情况下,每次访问时它们都会在内存中完全具体化,或者它们可以存储在链接到主数据存储的辅助存储文件中。默认情况下,小于16MB的大型对象与其余数据一起内联存储。在较大的大小时,它们存储在导入目标目录的\u lobs子目录中的文件中。这些文件以一种单独的格式存储,这种格式针对大型记录存储进行了优化,每个文件最多可容纳2^63字节的记录。lob溢出到单独文件的大小由--inline lob limit参数控制,该参数接受一个参数,该参数指定要保持内联的最大lob大小(以字节为单位)。如果将内联lob限制设置为0,则所有大型对象都将放置在外部存储中。
如果您使用的是mpp查询引擎,比如impala,那么通过web应用程序进行阅读是可能的,它工作得很好,而且是一种生产就绪的技术。我们大量使用复杂的impala查询来呈现springboot应用程序的内容。因为impala在内存中运行所有的东西,所以如果它是多租户cloudera集群的话,就有可能运行缓慢或失败。对于较小的用户群(1000-2000个用户群),它工作得非常好。
如果你需要更多的意见,一定要告诉我。
建议如下:
使用cloudera发行版(请阅读此处)
给 Impala 执事足够的记忆
确保正确配置了基于计划(公平共享或优先级共享)的etl负载与web应用程序负载
如果需要,让 Impala 守护进程远离Yarn
为impala内存定义内存配额,以便允许并发查询
平展您的查询,使 Impala 运行更快,没有加入和洗牌。
如果你只是读了几个专栏,在Parquet地板商店,它的工作非常快。

相关问题