Home | About | Sematext search-lucene.com search-hadoop.com
 Search Hadoop and all its subprojects:

Switch to Plain View
Sqoop >> mail # dev >> Review Request: SQOOP-604 Easy throttling feature for MySQL exports


+
Zoltán Tóth-Czifra 2012-09-27, 15:47
+
Zoltán Tóth-Czifra 2012-10-01, 09:54
+
Abhijeet Gaikwad 2012-10-01, 11:13
Copy link to this message
-
Re: Review Request: SQOOP-604 Easy throttling feature for MySQL exports

-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/7135/
-----------------------------------------------------------

(Updated Oct. 2, 2012, 10:08 a.m.)
Review request for Sqoop.
Changes
-------

You are right, I was in a hurry and here is the result. Anyways, I attach the fixed patch. Compiled with no checkstyle warnings.
Output of test:

2012-10-02 12:03:17,575 WARN com.cloudera.sqoop.mapreduce.MySQLExportMapper: Value for sqoop.mysql.export.sleep.ms has to be smaller than mapred.task.timeout
Description
-------

Code review for SQOOP-604, see https://issues.apache.org/jira/browse/SQOOP-604

The solution in short: Using the already existing "checkpoint" feature of the direct (--direct) MySQL exports (the export process is restarted every X bytes written), extending it with a new config value that would simply make the thread sleep for X milliseconds at the checkbpoints. With low enough byte count limit this can be a simple yet powerful throttling mechanism.
Diffs (updated)
-----

  src/java/org/apache/sqoop/mapreduce/MySQLExportMapper.java a4e8b88

Diff: https://reviews.apache.org/r/7135/diff/
Testing
-------

Executing with different settings of sqoop.mysql.export.checkpoint.bytes and sqoop.mysql.export.sleep.ms:

33554432B / 0ms: Transferred 4.7579 MB in 8.7175 seconds (558.8826 KB/sec)
102400B / 500ms: Transferred 4.7579 MB in 35.7794 seconds (136.1698 KB/sec)
51200B / 500ms: Transferred 4.758 MB in 57.8675 seconds (84.1959 KB/sec)
51200B / 250ms: Transferred 4.7579 MB in 35.0293 seconds (139.0854 KB/sec)

I did not add unit tests yet and as it involves calling to Thread.sleep, I find testing this difficult. Unfortunately there is no "machine" or "environment" object that could be injected to these classes as mocks that could take care of time-related fixtures.
Thanks,

Zoltán Tóth-Czifra

+
Abhijeet Gaikwad 2012-10-02, 15:45
+
Abhijeet Gaikwad 2012-10-03, 14:25
+
Zoltán Tóth-Czifra 2012-10-02, 16:08
+
Zoltán Tóth-Czifra 2012-10-04, 12:25
+
Abhijeet Gaikwad 2012-10-31, 03:47
+
Zoltán Tóth-Czifra 2012-11-02, 12:32
+
Abhijeet Gaikwad 2012-11-03, 05:18
+
Zoltán Tóth-Czifra 2012-11-03, 10:35
+
Abhijeet Gaikwad 2012-09-28, 09:59
+
Zoltán Tóth-Czifra 2012-09-28, 10:27
+
Abhijeet Gaikwad 2012-09-28, 11:45