大数据工作,第一个可以源码维护的项目就是SQOOP了,12年Sqoop只有sqoop1,版本sqoop1.4.0-incubating版本,代码写得确实不错,运用MapReduce思想并发加载数据,数据输入与输出写特定的Java类,实时编译和运行,到今天7年过去了,sqoop1版本还是1.4.7,记得15年从原公司离职是1.4.5版本,几乎没啥变化。这玩意最容易出错的地方是MapReduce开启Speculative执行,由于没有事务,如果某个任务比其它任务明显delay,一个block可能起多个tasks,从而数据重复。
后面自研StreamSets或者Nifi类似项目,基于Sqoop2,Sqoop2包括ETL框架,当然,只有E和L,没有Transfer。都是自己加的。
Sqoop1和Sqoop2都是批处理架构,优点是可以处理PB级数据,缺点嘛,速度慢(数据分段,通过MapReduce的并发执行,和MySql Dump比还是快很多),后面工作使用Spark Stream做了另外工作,那速度,飞快。每秒几十万的TPS。还有谁!
StreamSets、Nifi、Apache Gobblin、甚至Kafka Streaming都是后来者。均支持批处理和流式ETL。Sqoop2基于MapReduce框架,性能甚至没Sqoop好,不可谓不失败。
网友评论