Without an undo retention guaranteed, your undo_retention is very much a "loose" guideline. You can see what kind of retention you are actually getting by looking at v$undostat
SQL> select begin_time, end_time, TUNED_UNDORETENTION
2 from v$undostat;
BEGIN_TIME END_TIME TUNED_UNDORETENTION
------------------- ------------------- -------------------
30/08/2017 12:24:11 30/08/2017 12:33:41 900
30/08/2017 12:14:11 30/08/2017 12:24:11 900
30/08/2017 12:04:11 30/08/2017 12:14:11 900
30/08/2017 11:54:11 30/08/2017 12:04:11 900
30/08/2017 11:44:11 30/08/2017 11:54:11 900
30/08/2017 11:34:11 30/08/2017 11:44:11 900
30/08/2017 11:24:11 30/08/2017 11:34:11 900
30/08/2017 11:14:11 30/08/2017 11:24:11 900
30/08/2017 11:04:11 30/08/2017 11:14:11 2005
30/08/2017 10:54:11 30/08/2017 11:04:11 1397
30/08/2017 10:44:11 30/08/2017 10:54:11 1388
30/08/2017 10:34:11 30/08/2017 10:44:11 1443
30/08/2017 10:24:11 30/08/2017 10:34:11 2037
30/08/2017 10:14:11 30/08/2017 10:24:11 2629
...
My undo_retention is 900, and sometimes I get that...sometimes I get a lot more (because my laptop database is mainly idle with minimal activity).
So you need the undo_retention to be higher than the time to scan your largest table in the datapump. So it is either a higher retention or a faster data pump. You could look at using parallelism or see if avoiding the compression can speed up the datapump elapsed time.
Also, check to see if you are exporting LOB's. If you are, then check MOS note 12656535.8 for details which might be impacting you.