Building the world with Elastic Map Reduce

37
apps on maps...

description

Talk given by Oliver Norton and Tim Jenks at AWS for the Gaming Industry November 2012 Terrabyte geometry processing to build a 3D interactive model of the real world from GIS data. https://aws.amazon.com/campaigns/aws-for-gaming-london/

Transcript of Building the world with Elastic Map Reduce

Page 1: Building the world with Elastic Map Reduce

apps on maps...

Page 2: Building the world with Elastic Map Reduce

Building the World with Elastic Map Reduce

Oliver Norton, Technical DirectorTim Jenks, Technical Lead

Page 3: Building the world with Elastic Map Reduce
Page 4: Building the world with Elastic Map Reduce
Page 5: Building the world with Elastic Map Reduce
Page 6: Building the world with Elastic Map Reduce
Page 7: Building the world with Elastic Map Reduce
Page 8: Building the world with Elastic Map Reduce

appsonmaps.com

AS3 SDK – Apps in Browser

JS API – Embed on your website

IOS SDK – Mobile, coming Q4 2012

Page 9: Building the world with Elastic Map Reduce

social media

Page 10: Building the world with Elastic Map Reduce

social commerce

Page 11: Building the world with Elastic Map Reduce

traffic updates

Page 12: Building the world with Elastic Map Reduce

journey planning

Page 13: Building the world with Elastic Map Reduce

worldflightclub.com

flying like a bird

World Flight Club on YouTube

Page 15: Building the world with Elastic Map Reduce

photographic maps

Photographic-based maps ….

Page 16: Building the world with Elastic Map Reduce
Page 17: Building the world with Elastic Map Reduce
Page 18: Building the world with Elastic Map Reduce
Page 19: Building the world with Elastic Map Reduce

layered data

We fuse layered data to procedurally generate our maps(using AWS’ Elastic Map Reduce)

Page 20: Building the world with Elastic Map Reduce
Page 21: Building the world with Elastic Map Reduce
Page 22: Building the world with Elastic Map Reduce
Page 23: Building the world with Elastic Map Reduce
Page 24: Building the world with Elastic Map Reduce
Page 25: Building the world with Elastic Map Reduce
Page 26: Building the world with Elastic Map Reduce

streamed

All built & served from off-the-shelf Amazon Web Service infrastructure

Page 27: Building the world with Elastic Map Reduce

pipeline

Page 28: Building the world with Elastic Map Reduce

data size

Over 2TB Data

Terrain:GB (10m, ¼ million Km2)US (10m, 40x GB)

Buildings :GB (full coverage)

US (120 cities)

Roads: GB (¼ million miles)

US (4 million miles)

Processing this can start to be expensive $$$

Page 29: Building the world with Elastic Map Reduce
Page 30: Building the world with Elastic Map Reduce

before

• Limited scalability -> 60 desktop spec machines

• Multi-TB SAN with a £10k/year maintenance cost

• In house build that needed maintaining

• 10mbit/sec symmetric internet to upload TBs of data

• 3 developers knew how to run builds

• Electric costs -> who knows…

Page 31: Building the world with Elastic Map Reduce

now

On Amazon Elastic Map Reduce

Page 32: Building the world with Elastic Map Reduce

now

• Scalability -> 800 m1.large instances

• Off shelf tech that’s discoverable (hadoop, MRJob)

• Maintenance reduced

• Data is already in cloud (source, and destination)

• More predictable costs (and happier costs, with spot pricing)

• DevOps benefits: Now any engineer can write and run jobs, not just 3

Page 33: Building the world with Elastic Map Reduce

pipeline

AWS

S3AWS

EMR AWS

S3AWS

CloudFront

AWS

EC2

Page 34: Building the world with Elastic Map Reduce

mrjob

• MRjob from Yelp

• http://github.com/Yelp/mrjob

Page 35: Building the world with Elastic Map Reduce

800 machines in 20linesclass MyMapReduceJob(MRJob): def mapper_init(self): self.__mapper = # wire up mapper

def mapper(self, key, line): # perform map work for key, value in self.__mapper.map(line, None): yield str(key), value

def reducer_init(self): self.__reducer = # wire up reducer

def reducer(self, key, values): # perform reduce work result = self.__reducer.reduce(key, values) if result: yield key, "built successfully" else: yield key, "failed"

if __name__ == '__main__': MyMapReduceJob.run()

Page 36: Building the world with Elastic Map Reduce

amazon emr

Processing Complexity X Data Size

Page 37: Building the world with Elastic Map Reduce

thanks

appsonmaps.com

Twitter: @eeGeo