Hadoop's Uncomfortable Fit in HPC
glennklockwood.blogspot.com
glennklockwood.blogspot.com
Basically, Big Data is much more sophisticated at distributed systems computer science and HPC is much more sophisticated at massive parallelism algorithms computer science. HPC tends to throw money at hardware to solve distributed computing problems, and Big Data is still very limited when it comes to parallel algorithm design techniques because their sharding models are incredibly primitive (hash and range only? no thanks) partly because of their original use cases.
In my perfect world, a good platform would combine the areas of sophistication from both but people in one domain tend to lack the perspective and experience of the other. And in many cases, the only way you can learn the more advanced techniques is by working in the field; I can't tell you how much really sophisticated HPC computer science is not documented anywhere on the web but I used it every day when I was working on those systems.
A thing is used because it is the very fastest. we know its fast because we have the numbers to prove it.
Infiniband is expensive, but it's much faster than ethernet for DMA. HTTP is far to inefficient for MPI. Posix file systems are brilliant. Object storage is far to slow and unreliable (see Http) ans usually miss important features like locking or concurrent access.
when you're paying by the hour, that 5-30% VM/bytecode penalty is ruinously expensive.
I don't think "HDFS is very slow and very obtuse" is true, though. If you use HDFS for what it was intended for-- reading large files that are mostly local-- it does pretty well. MapReduce and Impala explicitly support this paradigm by looking at where files are and scheduling computation there. If your workload has a ton of metadata operations, this can become a bottleneck, but that is not unique to HDFS. For example, if you use "ls" with the wrong options on Lustre, things can get quite slow due to the large number of metadata operations generated: https://wikis.nyu.edu/display/NYUHPC/Lustre+FAQ
Lustre is a cool filesystem in many ways, and has been battle-hardened for HPC. However, I think Lustre is relatively unlikely to gain ground in Hadoop due to the complexity of administering and upgrading its in-kernel server. Ceph might have a chance, though-- we'll see.
The article also doesn't discuss a lot of the areas in which Hadoop is way ahead. Hadoop handles faults in individual nodes, rather than just assuming we will use gold-plated hardware with infalliable RAID. Node failures happen, and HDFS and Hadoop can recover-- even from NameNode failures, these days. Google's Spanner paper points the way towards having strong consistency without sacrificing (as much) availability.
I agree that cramming traditional HPC problems into the Map-Reduce framework is not really a great idea. Instead, it would be better to use something like Spark (which, to his credit, Lockwood mentions). Spark is getting a huge amount of attention right now, and I think it's going to resolve some of these issues.
I'll say it again:
Hadoop will not penetrate HPC.
The reasons why vary quite a bit. But the core reasons are this:
Data is rarely local.
Resources are shared.
Users are heterogenous, even if the cluster isn't.
Users don't typically have CS degrees or understand more than basic networking (Computational Chemists and biologists tend to be a but more advanced)
Users still heavily rely on Fortran.
Users rarely know much about SQL, so even Hive is often out of the question.
Clusters are rarely under the control of users. On top of that, Users are rarely able to launch VMs.
Lots of other reasons too.
CUDA wins because it is wonderfully fast. There is a huge benifit for implementing it, even if it requires lots of work to get efficient MPI, because the rewards are literally massive.
Hadoop uses REST ffs. You're never going to get low latency with REST. Its a nasty hack in the world of web, let alone HPC where there really isn't any excuse for using HTTP for something its really not designed to do.
But the question is this:
what do people actually use Hadoop for?
Hadoop lets me pick up PBs of (typically) record-format data and stick it on a bunch of cheap servers that are already standard items in my datacenter catalogue and are well-understood by my datacenter/ops teams. I can then open up any Java IDE, write a program now I can process that data. Up until this point, I've not really needed much specialist knowledge, perhaps with the exception of understanding the map/reduce paradigm which is a fairly basic programming construct anyway.
There's lots of companies out there who have data problems that are bigger than a few TB, and they're bored of shovelling money at Oracle so they can have a fancy, expensive database when their data isn't actually relational to begin with.
In my datacenter, we run dirty cheap iron. The only thing special are the core switches(lots and lots of ten gig ports, to cope with the petabytes that we shove across it daily)
we use standard linux tools, sharded posix file systems with a decent task dispatcher that understands dependencies.
I do know one professor math professor who just a few hundred thousand on a Hadoop cluster to experiment with numerical algorithms. Talking with him, and I trust his opinion since he does research specifically in high performance linear algebra, was that he thought the technology was very appealing and can be an excellent addition to the repertoire. However there is still much work to be done since numerical linear algebra (which is the backbone of almost every single HPC calculation) using the Hadoop framework is very young. I believe it'll take a few years for researchers to determine whether or not Hadoop could be a useful tool for solving the types of problems academics do or whether it's just not as effective as the current tools.
I am pretty sure you don't need to specify a maximum memory allocation size to determine the version of Java being used.
I always enjoying reading blogs by people unfamiliar with a technology about why their poor understanding of a technology indicates that the technology they know better is better.
Its a totally valid observation that many HPC problems are not amenable to a Hadoop cluster, but it is not clear to me yet that there are no HPC problems that a distributed data approach might do better than the current system :-)
Part of this is the fault of the MPI standardization process: MPI didn't even try to deal with dynamic-but-expected changes to the computation (much less changes caused by "node" failure) because not all of the initial systems MPI was targeting could handle nodes coming or going. In this way, MPI was sort of a step backwards - PVM was much more flexible than MPI from the get-go.
I haven't paid much attention to MPI in a few years, so maybe some of the MPI-FT approaches have caught on.
One of the initial targets for YARN was MPI, but it was never clear to me that any MPI users actually wanted to use YARN.
With just a few tweaks, PVM and AFS could have given us a pretty good Big Data stack 15 years ago (And in the case of security, a better stack than what we've got today.) The hardware wasn't quite cheap enough to make the case as compelling as it is today, and the MapReduce programming model helped sell the entire approach, but it was a real missed opportunity.
If it will really happen, remains to be seen. But I am following it with interest.
"What is Big Data?" is frequently answered with "What I do!"