前言
本文隶属于专栏《1000个问题搞定大数据技术体系》,该专栏为笔者原创,引用请注明来源,不足和错误之处请在评论区帮忙指出,谢谢!
本专栏目录结构和参考文献请见1000个问题搞定大数据技术体系
正文
适合使用 Sqoop 的场景
Apache Sqoop 可以用来满足大数据中的多种数据传输需求,这些场景中, HDFS 作为主要的数据存储手段,用于存储来自各种源系统的数据。
下面列举了一些案例,在这些场景中使用 Sqoop 更有意义
- 对于 RDBMS 与 Hadoop ( HDFS / Hive / HBase )数据传输,例如常规的批处理,或近似批处理,比较适合使用 Apache Sqoop 。
Apache Sqoop 是数据获取层的一种主要的被广为使用的工具。 - 从 MongoDB 、 Cassandra 之类的 NOSQL 数据库传输数据到 Hadoop 文件系统中。
- 拥有大量依赖关系数据库的应用软件的企业, Sqoop 是传输数据到数据湖中的最佳选项。
- Hadoop 是一个存储海量数据的事实上的标准。 Sqoop 允许用户轻松地从传统数据库导入数据到 HDFS 中。
- 如果需要考虑传输性能时,适合使用 Sqoop ,因为它可以对数据进行分割,并行进行传输。
- Sqoop 中有 connectorI 的概念,如果企业中有多种依赖不同数据库的应用程序 Sqoop 是一个理想的选择。
Apache Sqoop 项目已经被 Apache 基金会终止,故 Apache Sqoop 后续已经得不到更新。
不适合使用 Sqoop 的场景
当业务极度依赖如 Oracle 、 MYSQL 、 Postgresql 、 Teradata 之类的关系数据库时, Sqoop 是最合适的配套工具。
Sqoop 并不是特别适合处理事件驱动型数据。
对于事件驱动型数据,适合使用 Apache Flume 而不是 Sqoop 。
下面列举了一些主要的不适合使用 Sqoop 的场景:
- 事件驱动型数据。
- 多源流式数据的处理与传输,如使用 JMS 从源系统传输过来的流式数据。
- 处理实时数据而不是处理批量/小批量数据。
- 处理宿主在 Web 服务器上的各种应用程序产生的日志形式的数据。
- 如果当 Sqoop job 执行时,源系统不能承受较大的压力,那么应避免使用 Sqoop 。同样地,当批处理任务中数据量特别大时,会给源系统带来更大的压力,这通常不是用户所期望的。