云计算和数据仓库是合理的一对。云存储可以按需扩展,云可以将大量服务器贡献于某一具体任务。数据仓库通用功能是本地数据分析工具,受到计算和存储资源的限制,同时也受到设计者考虑新数据源集成的能力的限制。如果我们可以克服一些数据迁移的挑战,将一个数据仓库以及其数据分析工具从数据中心中的专用服务器转移到基于云的文件系统和数据库就可以解决这个问题。
云端数据管理通常牵扯到在分布式文件系统中加载和维护文件,像Hadoop分布式文件系统(HDFS),随后用类似MapReduce这样的工具处理数据。对于数据仓库和其他的分析人物,像Hive这样的数据库工具在分布式文件系统之上提供了类SQL的功能。
尽管传统关系型数据库管理系统和云端非关系型数据库之间可以并行描述,但是在两个片段之间转移数据时,不同的运行方式会导致问题。抽取、转换和加载流程甚至会造成更多挑战。
数据迁移工具辅助向云端迁移
从数据库抽取数据很容易,从数据库中有效挖掘大容量数据确是一项挑战。如果由于数据量的增长,数据仓库面临性能或者存储问题,可能就是时候考虑使用运资源了。下面提供了一些工具来协助从关系型数据库加载数据到云文件系统和数据库。
专业工具,像Sqoop(SQL-to-Hadoop)生成代码从关系型数据库抽取数据,并将其拷贝到HDFS或者Hive。Sqoop使用JDBC驱动,同多种类型的关系型数据库工作,但是通过JDBC推出大量数据导致了性能成本。
为了迁移到云端,从关系型数据库抽取数据时,你可能需要进行数据转换。如果你所工作的所有数据来自于单一数据库,就可以在源数据库中进行转换。如果从两个分离的系统合并数据,在抽取之后再转移数据源更有效。然而,你应该在加载数据到最终数据存储库之前做这些。Cascading数据处理API可以协助这项任务的进行。
Cascading提供了运行在Hadoop之上的功能,像工作流处理、计划和调度。就比如说,它同管道过滤器工作;数据应用过滤器通过管道从一个源流到目的源。其他功能像grouping可以应用于数据流。Cascading用Java实现,在MapReduce工作中调用转换API。
如果你正在同MySQL共事,Sqoop介意使用MySQL转储功能绕离JDBC并更加有效地抽取数据。Sqoop也可以生成Java类,这个类可以用于操纵加载数据并将其直接导入Hive。HIHO (Hadoop Input and Output)从关系型表抽取数据并提供一些基本的转换服务,像去重以及合并输入流。
当生成文件在将其加载到HDFS文件系统或者Hive数据仓库之前,要求最小化转换,你就能直接加载文件了。在确定目标表和分割规格后,Hive有一个命令来加载数据。Pig是数据分析程序的一种高水平语言,尤其是和Java中的MapReduce编码对比的时候。它提供了一种基本的统计函数,你可以在关系型数据库中找到(像min、max、count),在数学和字符串处理功能中也能找到。Pig支持架构化和非结构化文本文件的压缩。
云计算资源补充了数据仓库基础架构。然而,为将数据仓库转移到云端的利益最大化,适当结构化数据并使用正确的数据分析工具很重要。