<?xml version="1.0" encoding="utf-8" ?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:tt="http://teletype.in/" xmlns:opensearch="http://a9.com/-/spec/opensearch/1.1/"><title>author</title><author><name>author</name></author><id>https://teletype.in/atom/up2middle</id><link rel="self" type="application/atom+xml" href="https://teletype.in/atom/up2middle?offset=0"></link><link rel="alternate" type="text/html" href="https://teletype.in/@up2middle?utm_source=teletype&amp;utm_medium=feed_atom&amp;utm_campaign=up2middle"></link><link rel="next" type="application/rss+xml" href="https://teletype.in/atom/up2middle?offset=10"></link><link rel="search" type="application/opensearchdescription+xml" title="Teletype" href="https://teletype.in/opensearch.xml"></link><updated>2026-05-01T02:25:33.515Z</updated><entry><id>up2middle:ByYVgmrhH</id><link rel="alternate" type="text/html" href="https://teletype.in/@up2middle/ByYVgmrhH?utm_source=teletype&amp;utm_medium=feed_atom&amp;utm_campaign=up2middle"></link><title>Is Spark really in-memory?</title><published>2019-11-22T08:45:36.776Z</published><updated>2019-11-22T08:51:45.421Z</updated><summary type="html">#becomeDataEngineer</summary><content type="html">
  &lt;p&gt;#becomeDataEngineer&lt;/p&gt;
  &lt;p&gt;Когда врубаешься в тему инструментов для Big Data узнаешь, что сначала был Hadoop, который все мог, с помощью map reduce можно запилить любой пайплайн обработки данных. &lt;/p&gt;
  &lt;p&gt;Но эра Hadoop продолжалась недолго (см в Google Trands), и в какой-то момент Apache Spark вытеснил его как наиболее крутой инструмент. Основное достоинство - Spark умеет делать операции в in-memory и не нужно постоянно использовать hdfs в ходе выполнения какой-то джобы. &lt;/p&gt;
  &lt;p&gt;Однако когда читаешь доку Spark видишь что-то про запись каких-то файлов на диск, думаешь “было же in-memory”. Ну если все же нет, то куда эти файлы пишутся: на hdfs или disk space воркеров?&lt;/p&gt;
  &lt;hr /&gt;
  &lt;hr /&gt;
  &lt;p&gt;Дело в том, что важным процессом в работе Spark является &lt;code&gt;shuffle&lt;/code&gt; - процесс когда данные перераспределяются с воркеров на воркеры. Это он пишет результаты на диск. Рекомендую посмотреть картинки про &lt;code&gt;shuffle&lt;/code&gt; если вы не в курсе про него. Вкратце это перераспределение данных между воркерами, а значит жирная операция по IO. &lt;/p&gt;
  &lt;ul&gt;
    &lt;li&gt;Как &lt;code&gt;shuffle&lt;/code&gt; пишет файлы и можно ли этого не делать? &lt;/li&gt;
    &lt;li&gt;В чем преимущество перед Hadoop в таком случае?&lt;/li&gt;
  &lt;/ul&gt;
  &lt;ul&gt;
    &lt;li&gt;Где тогда in-memory в Spark?&lt;/li&gt;
  &lt;/ul&gt;
  &lt;hr /&gt;
  &lt;p&gt;- Shuffle пишет файлы в памяти воркеров. Это кеширование делается чтобы переиспользовать эти данные, если дальше по процессу нужно снова этот RDD использовать. В памяти же их хранить не хочется, потому что память более ценный ресурс, и она активно используется для других текущих операций (не shuffle)&lt;/p&gt;
  &lt;p&gt;- Преимущество над Hadoop в том, что Spark умеет объединять стадии джобы в одну таску (которым не требуется shuffle), тогда как Hadoop не умеет и будет использовать hdfs между выполнениями этих стадий.&lt;/p&gt;
  &lt;p&gt;- Где тогда in-memory в Spark? В отличие от Hadoop, Spark при объединении стадий джобы не записывает их результаты на диск (тем более в hdfs). В этом смысле Spark быстрее и круче чем Hadoop&lt;/p&gt;
  &lt;hr /&gt;
  &lt;p&gt;used: &lt;a href=&quot;https://stackoverflow.com/questions/35479876/why-does-spark-save-map-phase-output-to-local-disk/41088478#41088478&quot; target=&quot;_blank&quot;&gt;https://stackoverflow.com/questions/35479876/why-does-spark-save-map-phase-output-to-local-disk/41088478#41088478 &lt;/a&gt;&lt;/p&gt;
  &lt;p&gt;also look on related links in answers&lt;/p&gt;

</content></entry></feed>