For this first phase of my project, I will be building a cluster on the cheap. My cost goal was $600 for a 4 node system, or $150 per node. The Raspberry Pi immediately comes to mind as an option. Indeed, there have been several projects where people turned a set of Raspberry Pis into a cluster. However, since my goal is to create a cluster for Spark, the size of the aggregate RAM pool of the cluster is important. The Raspberry Pi Model 3 only has 1 GB of RAM. So I explored whether there are other options with more RAM. I found the ODROID-XU4 single board computer, which has 2 GB of RAM, and an 8-core ARM CPU. Furthermore, each board is only $76 without storage. It also has some other nice features, such as:
- USB 3 ports
- HDMI output
- eMMC 5.0 hard drive connector
- MicroSD slot supporting the faster UHS-1 standard
- Onboard gigabit ethernet
- Serial console port
One consideration is data storage. The ODROID provides the options of having both a eMMC module and a MicroSD card attached to it for storage. The eMMC modules are fast but expensive. In order to balance performance and cost, I decided to use the eMMC module for the main drive containing the operating system, software, and scratch space, but will use a MicroSD card for the bulk data storage. I went with 64 GB MicroSD cards, as they are pretty cheap and generally have faster read/write speeds than the 128 GB versions. Given that this is a “learning cluster”, I don’t need to max out storage.
Finally, for the networking, I will use a gigabit switch for the nodes to talk to each other. I strongly prefer that the cluster’s node-to-node communication be done on it’s own private network. That means the head node will need an extra ethernet port to enable external communication. This can easily be accomplished with a USB ethernet adapter.
All together, the set of items I will need to order to build the cluster are:
- 4x ODROID-XU4 computers – The computers to be clustered.
- 4x 16 GB eMMC Module XU4 – These are the drives the OS and software will be installed on. Get the one with Ubuntu Linux preinstalled (not Android). You can save some money by getting the 8 GB versions, but I wanted to have some extra space to ensure I won’t run out when installing software.
- USB-UART Module – This device is so that you can directly log into the console on each machine (if needed)
- Wall wart friend power strip – I will have 5 device to plug in.
- 40mm standoffs – This is for stacking the computers together
- 12mm standoffs – More stacking hardware. These are for the “feet”
- 5-port Gigabit Switch – This switch will drive the node-to-node communication
- 5 pack 6 inch Cat6 cables – Notice the short, 6 inch cables. You may choose to make your own cables custom lengths.
- 1 10 foot Ethernet cable – This cable is to connect the cluster to my home network
- USB3 to Ethernet Adaptor – The onboard ethernet will be used for non-to-node communications. This ethernet adapter will be attached to the head node to allow external communications.
- 4x 64GB MicroSD UHS-1 card – These cards are for data storage on each computer.
At the time of this posting, the total cost came to $583.67. If I conveniently ignore shipping and tax costs, this is within my $150/node cost target – Success! The computers are being shipped from Korea, so I will have to wait a week or two to start putting things together.