Hardware Selection for a Low Cost Cluster

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:

Bill of Materials

  • 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.