CSE 486/586 Distributed Systems Introduction

Slides:



Advertisements
Similar presentations
CSE 486/586, Spring 2013 CSE 486/586 Distributed Systems Concurrency Control Steve Ko Computer Sciences and Engineering University at Buffalo.
Advertisements

CSE 486/586, Spring 2012 CSE 486/586 Distributed Systems Introduction Steve Ko Computer Sciences and Engineering University at Buffalo.
CSE 486/586 CSE 486/586 Distributed Systems Introduction Steve Ko Computer Sciences and Engineering University at Buffalo.
CSE 486/586, Spring 2013 CSE 486/586 Distributed Systems Introduction Steve Ko Computer Sciences and Engineering University at Buffalo.
CSE 486/586, Spring 2013 CSE 486/586 Distributed Systems Mid-Semester Overview Steve Ko Computer Sciences and Engineering University at Buffalo.
COMP Introduction to Programming Yi Hong May 13, 2015.
Syllabus. Instructor Dr. Hanan Lutfiyya Middlesex College 418 Ext Office Hours: Tuesday from 12:05-1:05 and Thursday from 11:05-1:05.
Introduction. Readings r Coulouris, Dollimore and Kindberg Distributed Systems: Concepts and Design Edn. 3 m Note: All figures from this book.
Course Information Sarah Diesburg Operating Systems COP 4610.
CSE 486/586, Spring 2013 CSE 486/586 Distributed Systems Wrap-up Steve Ko Computer Sciences and Engineering University at Buffalo.
Course Information Andy Wang Operating Systems COP 4610 / CGS 5765.
L-1 Introduction 1. Today's Lecture Administrivia Example topics 2.
CSE 486/586, Spring 2012 CSE 486/586 Distributed Systems Wrap-up Steve Ko Computer Sciences and Engineering University at Buffalo.
Syllabus. Instructor Dr. Hanan Lutfiyya Middlesex College 418 Ext Office Hours: Wednesday 5-6; Thursdays 4-6 or by appointment.
Distributed systems [Fall 2015] G Lec 1: Course Introduction.
COP4610/CGS5765 Operating Systems Syllabus. Instructor Xin Yuan Office: 168 LOV Office hours: W M F 9:10am – 10:00am, or by appointments.
CSE 486/586, Spring 2014 CSE 486/586 Distributed Systems Introduction Steve Ko Computer Sciences and Engineering University at Buffalo.
CSE 486/586, Spring 2012 CSE 486/586 Distributed Systems Replication Steve Ko Computer Sciences and Engineering University at Buffalo.
Copyright ©: Nahrstedt, Angrave, Abdelzaher, Caccamo1 University of Illinois at Urbana-Champaign Welcome to CS 241 Systems Programming University of Illinois.
CSc 120 Introduction to Computer Programing II
Networking CS 3470, Section 1 Sarah Diesburg
CSE 489/589 Modern Networking Concepts
CSE 486/586 Distributed Systems Wrap-up
Introduction to Operating Systems
Course Overview - Database Systems
CS 450/550 Operating Systems Loc & Time: MW 1:40pm-4:20pm, 101 ENG
Networking CS 3470, Section 1 Sarah Diesburg
CSE 486/586 Distributed Systems Consistency --- 2
CMSC 471 Principles of Artificial Intelligence Course Overview
CSCE 451/851 Operating System Principles
CSE 486/586 Distributed Systems Leader Election
CSE 486/586 Distributed Systems Mid-Semester Overview
Steve Ko Computer Sciences and Engineering University at Buffalo
CSE 486/586 Distributed Systems Consistency --- 2
CSE 486/586 Distributed Systems Consistency --- 1
CPE741: Distributed Systems Course Introduction
Steve Ko Computer Sciences and Engineering University at Buffalo
Course Information Mark Stanovich Principles of Operating Systems
CSE 486/586 Distributed Systems Wrap-up
CPE741: Distributed Systems Course Introduction
September 27 – Course introductions; Adts; Stacks and Queues
CS 194: Lecture 1 University of California Berkeley
CS 5565 Network Architecture and Protocols
Course Overview - Database Systems
Andy Wang Operating Systems COP 4610 / CGS 5765
Web: courses.engr.illinois.edu/cs425/
Andy Wang Operating Systems COP 4610 / CGS 5765
Andy Wang Operating Systems COP 4610 / CGS 5765
Andy Wang Operating Systems COP 4610 / CGS 5765
IS 651: Distributed Systems
CSE 486/586 Distributed Systems Leader Election
Web: courses.engr.illinois.edu/cs425/
First Semester 1439/1440 Welcome 
Andy Wang Operating Systems COP 4610 / CGS 5765
Intro to CIT 594
Intro to CIT 594
Andy Wang Operating Systems COP 4610 / CGS 5765
EECE.4810/EECE.5730 Operating Systems
Welcome to the First-Year Experience!
CSE 486/586 Distributed Systems Wrap-up
CSE 486/586 Distributed Systems Consistency --- 2
Sarah Diesburg Operating Systems CS 3430
CSE 486/586 Distributed Systems Consistency --- 1
Steve Ko Computer Sciences and Engineering University at Buffalo
CSE 486/586 Distributed Systems Byzantine Fault Tolerance
CSE 486/586 Distributed Systems Case Study: Amazon Dynamo
CS 232 Geometric Algorithms: Lecture 1
CSE 486/586 Distributed Systems Leader Election
Welcome to the First-Year Experience!
CSE 486/586 Distributed Systems Mid-Semester Overview
Presentation transcript:

CSE 486/586 Distributed Systems Introduction Steve Ko Computer Sciences and Engineering University at Buffalo

First Things Instructor TAs Add/drop Steve Ko 9th year at UB Harishankar Vishwanathan Archita Pathak Yuyang Chen Hanbin Zhang Add/drop Help your fellow students and make up your mind by Thursday (and drop if that’s your decision). On Friday, if necessary, I will increase the cap Please don’t email me for force registration until Friday night.

Welcome to CSE 486/586 Why do you want to take this course? Some positive feedback of this course… “(CSE 486/586) didn't only helped with understanding the concepts involved, but have also always given me something cool and interesting to talk about in interviews.” “I am actually learning new things.” “(CSE 486/586) literally got me a job.” Some negative feedback of this course… “Projects are a bit too much on the difficult side.” “The midterm came almost out of nowhere.” “Stay away at all cost!” Are you ready? ;-)

Building a Distributed System “The number of people who know how to build really solid distributed systems…is about ten” Scott Shenker, Professor at UC Berkeley The point: it’s hard to build a solid distributed system. So, why is it hard?...but first of all…

What is a Distributed System?

What is a Distributed System? A distributed system is a collection of entities with a common goal, each of which is autonomous, programmable, asynchronous and failure-prone, and which communicate through an unreliable communication medium. This will be a working definition for us.

Why Is It Hard to Build One? Scale: hundreds or thousands of machines Google: 4K-machine MapReduce cluster Yahoo!: 4K-machine Hadoop cluster Akamai: 70K machines distributed over the world Facebook: 60K machines providing the service Hard enough to program one machine! Dynamism: machines do fail! 50 machine failures out of 20K machine cluster per day (reported by Yahoo!) 1 disk failure out of 16K disks every 6 hours (reported by Google) As we will learn, these come with: Concurrent execution, consistency, etc.

OK; But Who Cares? This is where all the actions are! What is the two biggest driving forces in the computing industry for the last 7-8 years? It’s the cloud! And smartphones! They are distributed! (And there’s also machine learning, robotics, etc.) Now --- it’s all about distributed systems! Well…with a bit of exaggeration… ;-)

OK, Cool; How Am I Going to Learn? Textbook Main: Distributed Systems: Concepts and Design, 5th Edition (Coulouris, Dollimore, Kindberg, Blair) Optional: Distributed Systems: Principles and Paradigms, 2nd Edition, (Tanenbaum, Van Steen) Lectures (Non-graded) HW assignments Programming assignments Exams

What Am I Going to Build? A “starter” project: PA1 This will be out today and due next week Friday. A distributed key-value storage (based on Amazon Dynamo) on Android in multiple stages Individual submission

Important Policies Late submissions only allowed for one day Regrading 20% penalty The deadlines are on Friday, and we don’t count weekends, so technically you have 3 more days. Regrading If requested, the entire work will be regraded No “I” No makeup exam No grade negotiation

I Have a Confession to Make… I have a split personality disorder. Jekyll Hyde Most of you (I expect) will just see my Jekyll’s side. If you… work with good ethics, respect others on Piazza, during office hours, etc., follow class and submission rules, and generally use common sense and are a good citizen in the class. Some of you might see my Hyde’s side. If you… copy other people’s code or exams, try to negotiate your way in the class, generally are not such a good citizen in the class.

Academic Integrity Policies Academic integrity: exams, HW, and code Copying others’ code: no Copying from other sources (the Web, books, etc.): get permission Exceptions: http://developer.android.com (copy freely, but mark clearly that you copied) http://stackoverflow.com (generally OK to see how things get done; but do not copy and paste.) If found, the incident will be reported to the university. Will use an automatic similarity checker. When similar submissions are found, both will get an F for the entire semester. Please be careful when using an online code repository, e.g., GitHub, BitBucket, etc.

How Can I Reach the Teaching Staff? Steve: 113F Davis Lectures (MWF 1:00 pm-1:50 pm) Office hours (TBD) TAs Office hours: Posted on Piazza Please do not expect that the TAs will stay more than the announced office hours. Use Piazza (http://piazza.com/class), instead of email, mailing list, blog, etc. The teaching staff will not have any activity during weekends and holidays. Signup link: http://piazza.com/buffalo/spring2019/cse486586 http://www.cse.buffalo.edu/~stevko/courses/cse486/spring19/

For Undergraduates We do have recitations. But it’s just like office hours, dedicated for undergraduates.

Background Required You must have some background in different topics. OS concepts Threads, processes, synchronization (e.g., locks, semaphores), etc. Networking concepts IP, DNS, NAT (e.g., private IPs vs. public IPs), TCP, etc. System programming experiences Programming experiences with sockets, processes, threads, synchronization primitives, file I/O, etc. Experiences with setting up environment variables, using regex, scripting (e.g., bash, python, etc.) Programming environment Linux or Mac

Background Check: PA1 Programming Assignment (PA) 1 Use this as a background check. If you can finish this in a week all by yourself, then you are ready to take this class. See for yourself! Due on next Friday (2/8) 11:59:59 am. SimpleMessenger on Android Overall, need to implement a chatting app. Need to set up the Android programming environment. Need to use sockets. Need to understand the code provided. Need to read Android tutorials and understand them. Need to understand and use Android APIs.

What Exactly Am I Going to Learn? Distributed Systems 10 Questions! Course goal: answering 10 questions on distributed systems At the end of the semester, if you can answer only 10 questions about distributed systems, you’ll probably get an A. Easy enough! What are those questions? Organized in 6 themes 1~2 questions in each theme A few (or several) lectures to answer each question

Theme 1: Hint What’s up? Hey!

Theme 1: Communications Q1: how do you talk to another machine? Networking basics Q2: how do you talk to multiple machines at once? Multicast Q3: can you call a function/method/procedure running in another machine? RPC

I thought I was doing it… Theme 2: Hint I thought I was doing it… I’m shaking my tail. What? I’m doing it too!

Theme 2: Concurrency Q4: how do you control access to shared resources? Distributed mutual exclusion, distributed transactions, 2-phase commit, etc.

Theme 3: Hint I want to shake my tail. No, I don’t want to. OK No way!

Theme 3: Consensus Q5: how do multiple machines reach an agreement? Time & synchronization, global states, snapshots, mutual exclusion, leader election, paxos Bad news: it’s impossible! The impossibility of consensus

Theme 4: Hint Who has a brain? I do. I don’t.

Theme 4: Storage Management Q6: how do you locate where things are and access them? DHT, DFS

I have a feeling that something went wrong… Theme 5: Hint I have a feeling that something went wrong… zzz…

Theme 5: Non-Byzantine Failures Q7: how do you know if a machine has failed? Failure detection Q8: how do you program your system to operate continually even under failures? Replication, gossiping

Theme 6: Hint We’re under attack!

Theme 6: Byzantine Failures Q9: how do you deal with attackers? Security Q10: what if some machines malfunction? Byzantine fault tolerance

Acknowledgements These slides heavily contain material developed and copyrighted by Indranil Gupta at UIUC. The material was originally developed for courses CS425/CSE424/ECE428 at UIUC.