我们目前使用bash shell脚本和带有多个线程的SQL加载器的组合将CDR加载到oracle仓库。我们希望将此过程卸载到hadoop,因为我们设想由于用户群的增加而导致的数据增加将很快超出当前系统。我们还希望逐步将hadoop引入我们的数据仓库环境。
从hadoop加载会更快吗? 如果是这样的话,最好的hadoop工具是什么?
更多信息: 我们通常会通过ftp将contuno的管道分隔文本文件流传输到一个文件夹,为每个记录添加两个字段,加载到oracle中的临时表并运行一个过程加载到最终表。您将如何根据使用的工具建议流程流程。例如;
文件是ftp到Linux文件系统(或者可以直接ftp到hadoop?)和flume加载到hadoop。
添加了字段(最好做什么?猪,蜂房,火花或任何其他建议)
然后使用sqoop
调用最后的程序(sqoop可以进行oracle过程调用吗?如果没有什么工具最好执行程序并帮助控制整个过程?)
另外,如何控制平行度?它是否等于运行该作业的地图制作者的数量?
答案 0 :(得分:0)
从类似物中导出数据的类似任务6个节点Hadoop集群到Oracle Datewarehouse。 我测试了以下内容:
Sqoop
load data infile "-"
考虑到速度,使用sqloader作为映射器的Hadoop流式传输作业是传输数据的最快方式,但您必须在群集的每台计算机上安装sqloader。这更像是个人的好奇心,我不建议使用这种方式导出数据,日志记录功能有限,应该对您的数据仓库性能产生更大的影响。
根据我的测试,获胜者是Sqoop,非常可靠,它是Hadoop生态系统的导入/导出工具,是第二快的解决方案。(比第一名慢1.5倍)
使用OraOop的Sqoop(2012年最后更新)比最新版本的Sqoop慢,并且需要在群集上进行额外配置。
最后,使用Oracle的BigData连接器获得了最糟糕的时间,如果你有一个大型集群(> 100台机器),那么它应该不像我获得的时间那么糟糕。出口分两步完成。第一步涉及重新处理输出并将其转换为与Datawarehouse兼容的Oracle格式。第二步是将结果传输到Datawarehouse。如果您拥有大量的处理能力,这种方法会更好,而且您不会像其他解决方案那样影响Datawarehouse的性能。