In my spark cluster, there are 5 machines, each machine 16G memory, but my data may be more than 900G, the source may be HDFS or mongodb, I want to know how to put this 900G data into spark cluster memory because I have
a total memory space of 80G. How does spark work?
Obviously, you can't store 900GB of data into 80GB memory.
There is a concept in spark called disk spill, it means when your data size
increases and can't fit into memory then it spilled out to disk.
Also, spark doesn't use whole memory for storing the data, some fraction of
memory used for processing, shuffling and internal data structure too.
For more detail, you can have a look at
In genernal, RDD, which is the central concept of Spark, is just deffinition of how to get data and process data. Each partition of RDD defines how to get/process each partition of data. A series of transformation will transform every partitions of data from previous RDD. I give you very easy example of what I meant. For example, you need to count number of lines of 100 files. So your RDD will consist of 100 partitions, which one partition corresponding to 1 file path. You have only 3 executors/3 cores resource to do that. So executors will firstly get 3 tasks / 3 tasks, do count job and send the results to driver, and execute next tasks and so on until all tasks are done. So driver just do simple reduce operation to get final number of lines. Note that, the partition only defines how to get data, so you don't have to send data to each executor. If some tasks fail, you just need to do them again.