Meepo最开始是为了Mysql到Mysql的数据迁移开发的,今年年初对其进行了重构。

目前可以基本替代Sqoop完成每天凌晨将Mysql数据拷贝到HDFS上的需求,数据格式为Parquet+Snappy。

并且Meepo还提供了AVSC文件,方便Hive更新表结构(TBLPROPERTIES (‘avro.schema.url’=’hdfs://onlinecluster/xxxxxxxxxx))。

Meepo的Mysql数据表迁移功能也优化了很多:

  1. 支持基本字段类型的自动匹配转化

  2. 自动识别表结构和主键

  3. 支持同时使用N个Plugin

  4. 提供了ReplacePlugin,用于系统升级中常见的表字段值替换需求(查另外一张表,来决定替换成什么值)

这次重构中,还引入了Disruptor的Ringbuffer,作为数据缓冲区。

Ringbuffer强制了对象复用,大幅度减少了GC的频率,使得Meepo可以用更小的JVM来完成任务,性能也有一定的提升。

在我们的测试中,Meepo的吞吐能力一直在每秒6W行以上,极限可以达到每秒15W。

这次重构后的测试中,也找到了更多应该暴露的Metric指标,方便对Meepo进行调优。