1

我正在尝试使用 sqoop 导入将一些数据从 MySQL 迁移到 HBase。这是我正在使用的命令:

sqoop import --connect jdbc:mysql://hostname/database --username username -P
--query 'SELECT * FROM logs WHERE $CONDITIONS' --split-by log_id -m 4
--hbase-table logs --column-family cf --hbase-create-table

问题是当没有地图增加时执行时间会增加。由于并行处理是随着映射器的增加而完成的,所以理想情况下执行时间实际上应该减少。

这是模式

地图数量时间(秒)
    1 16
    2 20
    4 29
    8 51
    10 55
    16 82
    25 122


从上面可以看出,当只有一个映射器时,它花费的时间最少。知道可能是什么原因吗?任何帮助将不胜感激。
我的集群由一个名称节点和两个数据节点组成。

4

1 回答 1

1

同时运行多个查询时可能会增加 mySQL 的负载。此外,从总运行时间(16 秒)看来,您正在导入非常小的数据,因此添加更多地图会增加开销,但每个地图只处理一个小数据段,因此不会抵消开销。最后,您没有对您的集群说太多(我猜这是一个小型测试),因此如果您分配的映射器比插槽多,映射器将等到有空闲插槽,从而增加更多时间

于 2013-04-29T18:31:31.723 回答