2015-04-10 1 views
2

При запуске моей программы локально на 16Gb MBP я получаю следующие вхождения:Apache Spark проливая на диск

15/04/10 20:07:50 INFO BlockManagerMaster: Updated info of block rdd_12_3 
15/04/10 20:07:50 INFO BlockFetcherIterator$BasicBlockFetcherIterator: maxBytesInFlight: 50331648, targetRequestSize: 10066329 
15/04/10 20:07:50 INFO BlockManagerInfo: Added rdd_12_6 in memory on 192.168.1.4:60005 (size: 854.0 KB, free: 682.9 MB) 
15/04/10 20:07:50 INFO BlockFetcherIterator$BasicBlockFetcherIterator: Getting 8 non-empty blocks out of 8 blocks 
15/04/10 20:07:50 INFO BlockFetcherIterator$BasicBlockFetcherIterator: Started 0 remote fetches in 0 ms 
15/04/10 20:07:50 INFO BlockManagerMaster: Updated info of block rdd_12_6 
15/04/10 20:07:50 INFO BlockFetcherIterator$BasicBlockFetcherIterator: maxBytesInFlight: 50331648, targetRequestSize: 10066329 
15/04/10 20:07:50 INFO BlockFetcherIterator$BasicBlockFetcherIterator: Getting 8 non-empty blocks out of 8 blocks 
15/04/10 20:07:50 INFO BlockFetcherIterator$BasicBlockFetcherIterator: Started 0 remote fetches in 0 ms 
15/04/10 20:07:50 INFO ExternalAppendOnlyMap: Thread 67 spilling in-memory batch of 7.9 MB to disk (1 times so far) 
15/04/10 20:07:50 INFO ExternalAppendOnlyMap: Thread 95 spilling in-memory batch of 5.0 MB to disk (1 times so far) 
15/04/10 20:07:50 INFO ExternalAppendOnlyMap: Thread 66 spilling in-memory batch of 8.0 MB to disk (1 times so far) 
15/04/10 20:07:50 INFO ExternalAppendOnlyMap: Thread 95 spilling in-memory batch of 5.0 MB to disk (2 timess so far) 
15/04/10 20:07:50 INFO ExternalAppendOnlyMap: Thread 65 spilling in-memory batch of 5.8 MB to disk (1 times so far) 
15/04/10 20:07:51 INFO ExternalAppendOnlyMap: Thread 67 spilling in-memory batch of 5.2 MB to disk (2 timess so far) 
15/04/10 20:07:51 INFO ExternalAppendOnlyMap: Thread 66 spilling in-memory batch of 5.6 MB to disk (2 timess so far) 
15/04/10 20:07:51 INFO ExternalAppendOnlyMap: Thread 95 spilling in-memory batch of 5.0 MB to disk (3 timess so far) 
15/04/10 20:07:51 INFO ExternalAppendOnlyMap: Thread 65 spilling in-memory batch of 5.0 MB to disk (2 timess so far) 
15/04/10 20:07:51 INFO ExternalAppendOnlyMap: Thread 61 spilling in-memory batch of 24.3 MB to disk (1 times so far) 
15/04/10 20:07:52 INFO ExternalAppendOnlyMap: Thread 67 spilling in-memory batch of 5.0 MB to disk (3 timess so far) 
15/04/10 20:07:52 INFO ExternalAppendOnlyMap: Thread 66 spilling in-memory batch of 5.0 MB to disk (3 timess so far) 
15/04/10 20:07:52 INFO ExternalAppendOnlyMap: Thread 95 spilling in-memory batch of 5.0 MB to disk (4 timess so far) 
15/04/10 20:07:52 INFO ExternalAppendOnlyMap: Thread 65 spilling in-memory batch of 5.3 MB to disk (3 timess so far) 
15/04/10 20:07:52 INFO ExternalAppendOnlyMap: Thread 66 spilling in-memory batch of 5.0 MB to disk (4 timess so far) 
15/04/10 20:07:52 INFO ExternalAppendOnlyMap: Thread 95 spilling in-memory batch of 5.2 MB to disk (5 timess so far) 
15/04/10 20:07:52 INFO ExternalAppendOnlyMap: Thread 67 spilling in-memory batch of 5.8 MB to disk (4 timess so far) 
15/04/10 20:07:53 INFO ExternalAppendOnlyMap: Thread 63 spilling in-memory batch of 35.6 MB to disk (1 times so far) 
15/04/10 20:07:53 INFO ExternalAppendOnlyMap: Thread 65 spilling in-memory batch of 5.0 MB to disk (4 timess so far) 
15/04/10 20:07:53 INFO ExternalAppendOnlyMap: Thread 66 spilling in-memory batch of 5.0 MB to disk (5 timess so far) 
15/04/10 20:07:53 INFO ExternalAppendOnlyMap: Thread 95 spilling in-memory batch of 5.0 MB to disk (6 timess so far) 
15/04/10 20:07:53 INFO MemoryStore: ensureFreeSpace(872616) called with curMem=1345765155, maxMem=2061647216 
15/04/10 20:07:53 INFO MemoryStore: Block rdd_12_2 stored as values in memory (estimated size 852.2 KB, free 681.9 MB) 
15/04/10 20:07:53 INFO BlockManagerInfo: Added rdd_12_2 in memory on 192.168.1.4:60005 (size: 852.2 KB, free: 682.0 MB) 
15/04/10 20:07:53 INFO BlockManagerMaster: Updated info of block rdd_12_2 

Моего понимания есть, это свободная память, большая часть памяти свободно на самом деле; :

15/04/10 20:07:50 INFO BlockManagerInfo: Added rdd_12_6 in memory on 192.168.1.4:60005 (size: 854.0 KB, free: 682.9 MB) 

И все же оно разливается на диск? Я использую набор данных ~ 265Mb, поэтому на самом деле его не нужно разливать на диск?

Для чего это стоит:

15/04/10 20:06:50 INFO MemoryStore: MemoryStore started with capacity 1966.1 MB 

При всем этом проливается на диске это занимает ~ 5 минут, чтобы запустить через мою программу один раз.

Почему это происходит?

+0

Какую версию Apache Spark вы используете? –

+0

Старо-иш версия: 1.1.1 - Я как бы привязан к нему в течение следующего месяца. – monster

+0

Спасибо, теперь я вижу, откуда приходит сообщение журнала: https://github.com/apache/spark/blob/v1.1.1/core/src/main/scala/org/apache/spark/util/collection/ ExternalAppendOnlyMap.scala # L184 Ну, если вы просто тестируете ноутбук, нет ничего, что помешало бы вам повторить эксперимент в новой версии. Тогда вы можете решить, стоит ли это делать. –

ответ

1

В игре есть разные арены памяти. Для кэширования Spark использует spark.storage.memoryFraction (по умолчанию 60%) кучи. Это то, о чем говорится в большинстве сообщений «свободной памяти». Он использует spark.shuffle.memoryFraction (по умолчанию 20%) кучи для тасования. Я думаю, что это то, о чем сообщения о разливе. Вы можете полностью отключить разлив в случайном порядке, установив spark.shuffle.spill на false (по умолчанию true).

Я не знаю, объясняет ли это все то, что вы видите. См. http://spark.apache.org/docs/latest/configuration.html для описания всех таких параметров.

+0

Я установил 'spark.shuffle.spill' значение false, но разлив все еще происходит. Я смущен тем, почему набор данных 265mb не может поместиться в памяти. – monster

+1

Если это размер на диске, он может легко взорваться 20-30 раз, когда он загружен. По крайней мере, в моем приложении это имеет тенденцию к :). Java не очень бережлив с памятью. –

+0

Пользовательский интерфейс показывает странное поведение, возможно, это то, что вы имеете в виду! Он говорит, что вход в 6.6GB! Почему он, похоже, реплицирует данные в 20-30 раз? Одна часть, где я читаю данные, и пользовательский интерфейс говорит, что входные данные: 934,9 МБ для просто чтения в файле 265 МБ !? Он разливает 56,7 МБ на диск. Я не ожидал этого. – monster

1

Я обнаружил, что одна из моих колонок имела nulls, вызывая перекос, который приводил к постоянным разливам.

+0

Так было и для меня. Я использую Spark's RowMatrix.columnSimilarity (порог) и с нулевыми значениями убил производительность. – Mark