关系型数据的收集
作者:尹正杰
版权声明:原创作品,谢绝转载!否则将追究法律责任。
关系型数据是常见的一种数据类型,通常存储在像MySQL,Oracle等关系型数据库中,为了能够利用大数据技术处理和存储这些关系型数据,首先需将这些数据导入到像HDFS,HBase这样的大数据存储系统中,以便使用MapReduce,Spark这样的分布式计算技术进行高效分析和处理。
从另一个角度讲,为了便于前段和数据可视化系统对接,我们通常需要将Hadoop大数据系统产生的结构(比如报表,通常数据量不会太大)导回到关系型数据库中。
为了解决上述问题,高效实现关系型数据库与Hadoop之间的数据导入到处,Hadoop生态系统提供了Sqoop(SQL to Hadoop)。
一.Sqoop概述
1>.设计动机
Sqoop从工程角度,解决了关系型数据库与Hadoop之间的数据传输问题,它构建了两者之间的“桥梁”,使得数据迁移工作变得异常简单。在实际项目中,如果遇到一下任务,可尝试使用Sqoop完成: (1)数据迁移 公司内部商用关系性数据仓库中的数据以分析为主,综合考虑扩展性,容错性和成本开销等方面。若将数据迁移到Hadoop大数据平台上,可以方便地使用Hadoop提供如Hive,SparkSQL分布式等工具进行数据分析。为了一次性将数据导入Hadoop存储系统,可使用Sqoop。 (2)可视化分析结果 Hadoop处理的输入数据规模可能是非常庞大的,比如PB级别,但最终产生的结果可能不会太大,比如报表数据等,而这类结果通常需要进行可视化,以便更直观地展示分析结果。目前绝大部分可视化工具与关系型数据库对接比较好,因此,比较主流的做法是,将Hadoop产生的结果导入关系型数据库进行可视化展示。 (3)数据增量导入
考虑到Hadoop对事务的支持比较差,因此,凡事涉及事务的应用,比如支付平台等,后端的存储均回选择关系型数据库,而事务相关的数据,比如用户支付行为等,可能在Hadoop分析过程中用到(比如广告系统,推荐系统等)。为了减少Hadoop分析过程中影响这类系统的性能,我们通常不会直接让Hadoop访问这些关系型数据库,而是单独导入一份到Hadoop存储系统中。
为了解决上述数据收集过程中遇到的问题,Apache Sqoop项目诞生了,它是一个性能高,易用,灵活的数据导入导出工具,在关系型数据库与Hadoop之间搭建了一个桥梁,如下图所示,让关系型数据库变得异常简单。
2>.
3>.
二.