Riak is a NOSQL database engine that works fine on a MAC OS system, Linux system and some others according the information available on the Basho site. The greatest thing about RIAK is that it works as a cluster (Ring, if you want to see it like that) composed by different nodes, which can be physical systems or virtual machines. It stores the data as Key-Value objects, where the value is stored as a JSON file, of course, accessed by the key in order to be modified, overwritten or deleted. The Cluster can be set up to work on a local network or a VPN where different nodes in different locations need to be linked to the Cluster, all one needs is a valid IP Address. The cluster has some options that can be changed when configuring the first node, as the ring size (Taking 64 as the default value, this means, 64 nodes can be linked together), the node name (Which would be the IP Address, however the IP address needs to be a valid IP from the Network the VM or the System is connected to, usually set to static. Note that when the name of the node is changed, the information of the ring needs to be deleted if the node was previously started, instructions can be found on the Basho Documentation; however, other steps might apply if the node is already linked to a Cluster). Another great thing about RIAK is that it handles fragmentation and duplication of the data all by itself, for 3 copies of one object is stored in the Cluster, in different nodes (Also, each Node is fragmented into divisions, but I can't recall the name of those at the moment) which benefits the availability of the data. There is a max amount of nodes that can be down for the Cluster to work properly (Check up RIAK documentation, the exact way to calculate the number is provided there).
In general terms. the data is stored in Buckets, which are pretty much slots within the Cluster to keep data organised (For example: If you have Books to store, you would have a "Books" Bucket to store your PDFs, word files, txt files, etc.).
Basho provides a lot of APIs for free, that can be dowloaded in order to ease a connection between and application and a RIAK cluster, and from my JAVA experienced, they are really easy to use. In general, a great tool to work, however, a lot of reading must be done to get comfortable with its environment.
There are few options for Map-Reduce tasks, however the cluster does give a Map algorithm which pretty much takes all the objects stored in a Bucket, and later on you can work on them as, for example, a Collection (If using JAVA).
Not available for Windows systems.
When using JAVA, is eases the way objects are stored. They can be stored with the corresponding Key, and the Value becomes a JSON with the info of the object, and when the Object needs to be redeemed, all it needs to be done is to request the value with the key, and convert the value to the corresponding object (Documentation on the matter available and provided by Basho). So this is a great trick when working with OO programming.