Amazon announces Elastic MapReduce
aws.amazon.com
aws.amazon.com
I expect this will have huge importance to the web, and computing more generally, in the next 5 years or so. I wouldn't be surprised if this becomes as important, or even more important than their traditional business.
We kind of take for granted what they do since, you know, it's a store. But they're in search, they're heavy into data analysis, they've innovated in interfaces, payment processing, they've had community generated content since before we called it that, they've pulled off one of the most effective infrastructure platforms, they're redefining publishing and content distribution. And they have a great reputation for customer service.
Another thing I like about Amazon is that I have a pretty good idea of what they're collecting all of my data for and it's something that I'm pretty comfortable with.
I feel like they kind of get left out a lot of times when people are thinking about serious online innovation.
That's what I've enjoyed about Amazon for years. I like going back to Amazon to see the books it recommends for me based on patterns it finds in my purchases and the purchases of other customers with overlaps with my purchases. And of course that increases revenue for Amazon, so that is smart all around.
I really think Amazon parallels Google in innovation, but they've somehow stayed much less sexy in the hacker world. I suppose it's that Amazon hasn't needed to make "we're smart people" one of their selling points.
But as to love for Amazon... I dunno, most hackers I know have disdain for Google at this point, and much love for Amazon. But then... I am cloud obsessed, and this influences who I associate with :)
Amazon enables us. Google... not so much.
I guess the lesson is: A company's reputation, especially with the media, has a huge influence on the success of their products. So, try to be a media darling like Google or Apple.
I still think getting positive publicity about a product makes that product more likely to succeed, and that there's not much harm in being a media darling.
Amazon is winning by building more and more sophisticated services on top of their infrastructure to sell more and more use of the basic services.
I hate to sound repetitive, but everything about it is a race to the top, not the bottom.
This is the most amazing thing going, Amazon is leading the market and continuously innovating, and you don't buy it because of 'switching costs.' Tell me the truth: do you have or are you studying for your MBA?
Long term this business is analogous to the hosting business: low margin and commoditized. is it a market? yes. Is it a big market? no. Why? because there is no lock-in.
If you can't understand this consider the scenario where 5 or 10 years from now Amazon is providing the infrastructure for 20% of the web, taking in 20% margins above the cost to operate the data centers and making a hefty profit. What stops Microsoft or Google or any other player for that matter from getting in on the action by undercutting them in price?
If you look at any (amazon scale) money maker online there is some sort of lock-in involved which is central to their business. Most often its a network effect of some kind. Go ahead, go down the list of the top 10 web companies and take a look yourself.
Just because something is technologically cool does not mean its going to make enough money to be significant to amazon's bottom line.
Also don't insult people if you can't grasp what they are saying.
From http://www.wired.com/techbiz/it/magazine/16-05/mf_amazon?cur...:
Bezos doesn't disagree. "I'd be surprised if no one else does this," he says, pausing for effect. "It's a really good idea!" And there may be an ace up his sleeve. Any economist will tell you that a commodity business -- storing and processing data, for instance -- is a mug's game, with prices that plunge inevitably toward the cost of production (in the case of bits, pretty close to zero). That's music to Bezos' ears. "Commodity businesses don't scare us," he says. "We're experts at them. We've never had 35 or 40 percent margins like most tech companies."
The "write a better search engine" part is not easy, and Google's algorithms are proprietary, but their success is not really a network effect, is it?
Also, saying Amazon is providing "infrastructure" implies they are going to deliver their current product then stop. But they can continue to build higher levels on top of what they already have. Maybe next will be algorithms baked into Hadoop, so you can throw your data at it without writing any of your own code. They can keep building up like this indefinitely. If Microsoft had released the first version of Windows and stopped, it would have become a commodity eventually (even with network effects).
2. google is a consumer company where brand and user behavior are important (not the case here).
3. most importantly, they make their money with an ad network which has network effects and where they charge enormous margins
you'll notice in all the discussions between yhoo/msft the most important thing for both companies is their ownership share of the search ad network. this is key to the bottom line and long term relevance and its why you see proposals along the lines of we'll give you a bunch of money and a guarantee of a portion of revenues in exchange for ownership of your network
The point on rising above infrastructure only applies if they begin adding some sort of ip or secret sauce. Then they can get network effects if they have people building on a platform that is not easy to replicate, but we've seen nothing like that. Hadoop is not that.
You can install hadoop on your own machine today if you want: http://hadoop.apache.org/core/docs/current/quickstart.html
I understand thats harder and thats why consumers are using them, but its not hard in the sense of competing business.
In fact most large web companies _already_ do all of this stuff internally.
You're thinking in equilibrium terms. Yes, it's easy to imagine that one day this business will reach a low-margin equilibrium. Though that doesn't guarantee it will happen in our lifetimes. (An example of a factor that mitigates against it: Monopolies. Get a monopoly, and you can keep margins artificially high.) And just because something will eventually be commoditized doesn't mean it will never be a high margin business. Margins can be quite high at the beginning. And, if you stay out of the business because you're afraid of what will happen in ten years, you miss out on all that money that's on the table now. Just imagine if Microsoft had been unwilling to release Windows 95 because it was obvious that in ten years we'd all be trying to switch to Unix.
The electronic component industry knows all about this curve. Component manufacturers race to ramp up early production of a new part, because the part sells for higher margins when it is first to market. Within a year or two other manufacturers will clone your part, or invent alternatives, and your margins will drop to tiny levels. But by then you'll hopefully have ramped up something else. The business has worked that way for a long time.
In the case of this new Amazon service... I have never heard of Hadoop before. By releasing a turnkey service with big fanfare, Amazon will grow the market to include people like me. Because we have no clue what we're doing at first, they can charge us high margins for a standardized, widespread service with a relative wealth of documentation and buzz and (perhaps) some tech support. Eventually the market will stop growing, the customers will be educated and start hunting for bargains... and Amazon will move on to something else.
Amazon has my purchase history and preferences (about 10 years worth) as well as my trust and approval. Switching costs are not zero, in my case, at least.
http://developer.amazonwebservices.com/connect/entry.jspa?ex...
The cloudblast project is here: http://apps.sourceforge.net/mediawiki/cloudburst-bio/index.p...
The paper on BlastReduce is here: http://www.cs.umd.edu/Grad/scholarlypapers/papers/MichaelSch...
Now someone needs to build better open visualization tools to handle the output of this system.
Also presumably they have the cluster well tuned, which is not simple, here is a relevant research paper about the scheduling algorithm which also goes into some of the tradeoffs and particularities of Hadoop on EC2: http://www.eecs.berkeley.edu/Pubs/TechRpts/2008/EECS-2008-99...
This can be pretty useful for data analysis and science. I don't see Amazon making money from this, but they must think the market is larger than I do. I may have to adjust my opinion.
I think that Amazon believes that making Hadoop easy to use and popular is the best way to sell more EC2 and S3 by giving people an easy way to burn cycles and fill gigabytes.
I think they're right.
Most significant is the network speed. Small instances share a machine with other small instances so they can get more than their "fair share" of network capacity. So because of this the environment maybe effectively heterogeneous if some of the nodes are relatively starved for I/O because they are on a busy machine. Storing all the data on S3 makes this particularly relevant.
Since one of the defining features the the MapReduce model (as detailed by the 2004 Google paper: http://labs.google.com/papers/mapreduce.html) is that "moving computation is cheaper than moving data" the implementation of S3 becomes salient as well, where exactly is the data?
In a normal implementation of Hadoop one would run HDFS, which stores the data on the same machines that run the job. The scheduler attempts to minimize transfer AND transfer is still often the bottleneck when the data is shuffled for the reduce job. So interesting to see how this service compares.
EDIT: I haven't tried the new service though, but I will for sure after I get some sleep.
MapReduce implementations have to take into account locality, i.e., the dataNodes have to be rack-aware for optimal I/O speed. Therefore, if their dataNodes are actually just cpu cores reading/writing blocks to S3 (other racks) then they are effectively getting kicked in the face.
As to IO - HDFS is going to divvy up the workload from S3 when the cluster bootstraps. After that the data will be local to each compute node, so they won't be getting kicked in the face. There is no reason to suppose that S3 replaces HDFS - its just used to load your data in.
Also, one would hope that their Hadoop setup IS rack aware - why shouldn't it be?
Step 1: "-input", "s3n://elasticmapreduce/samples/similarity/lastfm/input/", "-output", "hdfs:///home/hadoop/output2/",
Step 2:
"-input", "hdfs:///home/hadoop/output2/", "-output", "hdfs:///home/hadoop/output3/",
etc..
There is no explicit support for mounting data from EBS yet, but in theory I think you can hack something together in the initial mapper to mount an EBS volume to be used in the second map task...
Small instances suck at Hadoop, you probably won't use them.
All the example use the built in "aggregate," which looks like it refers to the Hadoop aggregate sub-package. The lines output by the map functions start with the name of a Hadoop class within the aggregate package, which must tell it how to aggregate.
http://developer.amazonwebservices.com/connect/entry.jspa?ex...
http://elasticmapreduce.s3.amazonaws.com/samples/similarity/...
AWS just put a pointer to the code bucket on s3, I'll add a link to a zip file with the full source including a script for converting the raw netflix data to something more friendly to Hadoop streaming.
The article is here:
http://developer.amazonwebservices.com/connect/entry.jspa?ex...
Check out the resources link at the end, the Cloudera Hadoop Hacks site has a few good intros to custom reduers in java, ruby, and python.
http://elasticmapreduce.s3.amazonaws.com/samples/similarity/...
You will get much better performance out of Hadoop if you do this in Java, but I thought python would be more readable for a wider audience. Hadoop 18.3 doesn't have numerical sort in streaming (see https://issues.apache.org/jira/browse/HADOOP-2302 ), so the code is slightly more complicated than it needs to be. Dumbo will also probably be supported in the next release, then the code example would be even simpler.
edit: oh, guy above me has great link!
Every now and then I wonder if there's a market for someone to do something like app engine on EC2 in order to cater to the 10 minute job market.
With something like that you could just leave the EC2 instances up and just swap jobs in and out, track the time and charge some small markup for the convenience.
As long as the demand was there you'd just have to bring more instances up in peak times then let them die off one by one when things slow down. Put a nice client side API on it and use Amazons billing API so the client can handle all of their computing payments at the one point and you're ready to go.
You'd need decent customer service when things went wrong or if people had questions about jobs / billing, so I imagine you'd need pretty high and reasonably consistent demand to cover that, especially since the markup would probably be tiny.
If anyone once to give it a try I'd like to see how it turns out for them.
And if you spread your job across N machines so you get results in 10 min then be willing to pay for your impatience.
Deleted comment
Bottom line of what this means: it took me hours to get scripts going to launch a cloudburst hadoop compute cluster on demand on Monday. And I've written such scripts before.
I just launched the SAME JOB in 15 seconds.
You know what else? I got distracted and left my own custom compute cluster on overnight and it cost me $50. Elastic Reduce shuts it down for me. (edited for clarity)
I was looking into building this. Amazon did it first. Glad I didn't put too much time into it.
Elastic Reduce does that for you.
Although you can't do anything interesting like run Pig or Hive. 2.0 will be much better I'm sure.
http://groups.google.com/group/ec2ubuntu/browse_thread/threa...
Maybe the question should be, does a Mathematician need to know programming, or can he just learn it on an as needed basis?
Cloudera offers are more like consulting. People need help setting up Hadoop jobs, understand MapReduce, or don't want to send data to S3.
Is it because they know that no one will just have it constantly run it as a true server like some do with EC2, so they'll get more fractional hours? Even though that's true to some extent, it doesn't seem like enough. Any insight?
EDIT: Twitter ftw! Apparently, the prices are additive, not replacitive. http://twitter.com/mndoci/statuses/1442516630