<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://homeostasis.scs.carleton.ca/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Ashley</id>
	<title>Soma-notes - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://homeostasis.scs.carleton.ca/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Ashley"/>
	<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php/Special:Contributions/Ashley"/>
	<updated>2026-05-12T21:34:56Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.42.1</generator>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=DistOS_2015W_Session_9&amp;diff=20197</id>
		<title>DistOS 2015W Session 9</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=DistOS_2015W_Session_9&amp;diff=20197"/>
		<updated>2015-04-13T01:49:48Z</updated>

		<summary type="html">&lt;p&gt;Ashley: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* Anderson et al., &amp;quot;SETI@home: An Experiment in Public-Resource Computing&amp;quot; (CACM 2002) [http://dx.doi.org/10.1145/581571.581573 (DOI)] [http://dl.acm.org.proxy.library.carleton.ca/citation.cfm?id=581573 (Proxy)]&lt;br /&gt;
* Anderson, &amp;quot;BOINC: A System for Public-Resource Computing and Storage&amp;quot; (Grid Computing 2004) [http://dx.doi.org/10.1109/GRID.2004.14 (DOI)] [http://ieeexplore.ieee.org.proxy.library.carleton.ca/stamp/stamp.jsp?tp=&amp;amp;arnumber=1382809 (Proxy)]&lt;br /&gt;
* [http://research.google.com/archive/mapreduce.html Dean &amp;amp; Ghemawat, &amp;quot;MapReduce: Simplified Data Processing on Large Clusters&amp;quot; (OSDI 2004)]&lt;br /&gt;
* [http://dl.acm.org/citation.cfm?doid=2517349.2522738 Murray et al., &amp;quot;Naiad: a timely dataflow system&amp;quot; (SOSP 2013)]&lt;br /&gt;
&lt;br /&gt;
Session 9 is about processing large volumes of data (big data).&lt;br /&gt;
&lt;br /&gt;
BOINC and SETI@home are crowdsourced systems that spread the input data across computers via the internet to have each chunk individually processed and returned back to the sender.&lt;br /&gt;
&lt;br /&gt;
MapReduce and Naiad are more technically challenging systems that not only let nodes process individual chunks of data but also combine and fold them together to allow algorithms to process various aggregate results from the input data set.&lt;br /&gt;
&lt;br /&gt;
== BOINC ==&lt;br /&gt;
&lt;br /&gt;
*Public Resource Computing Platform&lt;br /&gt;
*Gives scientists the ability to use large amounts of computation resources.&lt;br /&gt;
*The clients do not connect directly with each other but instead they talk to a central server located at Berkley&lt;br /&gt;
*The goals of Boinc are: &lt;br /&gt;
:*1) reduce the barriers of entry&lt;br /&gt;
:*2) Share resources among autonomous projects&lt;br /&gt;
:*3) Support diverse applications&lt;br /&gt;
:*4) Reward participants.&lt;br /&gt;
:*5) Provide screensaver graphics&lt;br /&gt;
&lt;br /&gt;
*It can run as applications in common language with no modifications&lt;br /&gt;
*A BOINC application can be identified by a single master URL, which serves as the homepage as well as the directory of the servers.&lt;br /&gt;
*Servers perform set of function using:&lt;br /&gt;
**Scheduling servers: handles Remote Procedure Call from clients&lt;br /&gt;
** Data servers:helps to manage the uploads&lt;br /&gt;
&lt;br /&gt;
*Can only work on data that can be split into many small shards and each shard processed entirely independently. Pure mappings on big data, no larger folding capabilities. Was used for scientific purposes mostly.&lt;br /&gt;
&lt;br /&gt;
== SETI@Home ==&lt;br /&gt;
&lt;br /&gt;
*Uses public resource computing to analyze radio signals to find extraterrestrial intelligence&lt;br /&gt;
*Need good quality telescope to search for radio signals, and lots of computational power, which was unavailable locally&lt;br /&gt;
*It has not yet found extraterrestrial intelligence, but its has established credibility of public resource computing projects&lt;br /&gt;
*Originally custom, now uses BOINC as a backbone for the project&lt;br /&gt;
*Uses relational database to store information on a large scale, further it uses a multi-threaded server to distribute work to clients&lt;br /&gt;
*Quality of data in this architecture is untrustworthy, the main incentive to use it, however, is that it is a cheap and easy way of scaling the work exponentially.&lt;br /&gt;
*Provided social incentives to encourage users to join the system.&lt;br /&gt;
*This computation model still exists but not in the legitimate world.&lt;br /&gt;
*Formed a good concept of public resource computing and a distributed computing by providing a platform independent framework&lt;br /&gt;
&lt;br /&gt;
== MapReduce ==&lt;br /&gt;
&lt;br /&gt;
*A programming model presented by Google to do large scale parallel computations&lt;br /&gt;
*Uses the &amp;lt;code&amp;gt;Map()&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;Reduce()&amp;lt;/code&amp;gt; functions from functional style programming languages&lt;br /&gt;
:*Map (Filtering)&lt;br /&gt;
::*Takes a function and applies it to a bunch of keys to produce values&lt;br /&gt;
* Hides parallelization, fault tolerance, locality optimization and load balancing&lt;br /&gt;
:*Reduce (Summary)&lt;br /&gt;
::*Accumulates results from the data set using a given function&lt;br /&gt;
* Very easy to use and understand, with many classic problems fitting this pattern&lt;br /&gt;
* Otherwise quite constrained in what exactly can be done&lt;br /&gt;
* Uses hashing to distribute similar keys to similar machines, but otherwise spread the load&lt;br /&gt;
&lt;br /&gt;
== Naiad ==&lt;br /&gt;
&lt;br /&gt;
*A programming model similar to &amp;lt;code&amp;gt;MapReduce&amp;lt;/code&amp;gt; but with streaming capabilities so that data results are almost instantaneous&lt;br /&gt;
*A distributed system for executing data parallel cyclic dataflow programs offering high throughput and low latency&lt;br /&gt;
*Aims to provide a general purpose system which will fulfill the requirements and the will also support wide variety of high level programming models.&lt;br /&gt;
*Highly used for parallel execution of data&lt;br /&gt;
*Provides the functionality of checkpoint and restoring&lt;br /&gt;
*A complex framework that can be the backend for simpler models of computation like LINQ or MapReduce to be built on top of.&lt;br /&gt;
*Real Time Applications:&lt;br /&gt;
:*Batch iterative Machine Learning: &lt;br /&gt;
VW, an open source distributed machine learning performs iteration in 3 phases: each process updates local state; processes independently training on local data; and process jointly performed global average which is All Reduce.&lt;br /&gt;
:*Streaming Acyclic Computation&lt;br /&gt;
When compared to a system called [http://research.microsoft.com/apps/pubs/default.aspx?id=163832 Kineograph] ( also done by Microsoft ), which processes twitter handles and provides counts of the occurrence of hashtags as well as links between popular tags, was written using Naiad in 26 lines of code and ran close to 2X faster.&lt;br /&gt;
* Naiad paper won the best paper award in SOSP 2013, check-out this link in Microsoft Research website http://research.microsoft.com/en-us/projects/naiad/ . Down in this page you can see some videos that explains naiad including Derek&#039;s Murray presentation at SOSP 2013.&lt;/div&gt;</summary>
		<author><name>Ashley</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=DistOS_2015W_Session_9&amp;diff=20196</id>
		<title>DistOS 2015W Session 9</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=DistOS_2015W_Session_9&amp;diff=20196"/>
		<updated>2015-04-13T01:43:45Z</updated>

		<summary type="html">&lt;p&gt;Ashley: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* Anderson et al., &amp;quot;SETI@home: An Experiment in Public-Resource Computing&amp;quot; (CACM 2002) [http://dx.doi.org/10.1145/581571.581573 (DOI)] [http://dl.acm.org.proxy.library.carleton.ca/citation.cfm?id=581573 (Proxy)]&lt;br /&gt;
* Anderson, &amp;quot;BOINC: A System for Public-Resource Computing and Storage&amp;quot; (Grid Computing 2004) [http://dx.doi.org/10.1109/GRID.2004.14 (DOI)] [http://ieeexplore.ieee.org.proxy.library.carleton.ca/stamp/stamp.jsp?tp=&amp;amp;arnumber=1382809 (Proxy)]&lt;br /&gt;
* [http://research.google.com/archive/mapreduce.html Dean &amp;amp; Ghemawat, &amp;quot;MapReduce: Simplified Data Processing on Large Clusters&amp;quot; (OSDI 2004)]&lt;br /&gt;
* [http://dl.acm.org/citation.cfm?doid=2517349.2522738 Murray et al., &amp;quot;Naiad: a timely dataflow system&amp;quot; (SOSP 2013)]&lt;br /&gt;
&lt;br /&gt;
== BOINC ==&lt;br /&gt;
&lt;br /&gt;
*Public Resource Computing Platform&lt;br /&gt;
*Gives scientists the ability to use large amounts of computation resources.&lt;br /&gt;
*The clients do not connect directly with each other but instead they talk to a central server located at Berkley&lt;br /&gt;
*The goals of Boinc are: &lt;br /&gt;
:*1) reduce the barriers of entry&lt;br /&gt;
:*2) Share resources among autonomous projects&lt;br /&gt;
:*3) Support diverse applications&lt;br /&gt;
:*4) Reward participants.&lt;br /&gt;
:*5) Provide screensaver graphics&lt;br /&gt;
&lt;br /&gt;
*It can run as applications in common language with no modifications&lt;br /&gt;
*A BOINC application can be identified by a single master URL, which serves as the homepage as well as the directory of the servers.&lt;br /&gt;
*Servers perform set of function using:&lt;br /&gt;
**Scheduling servers: handles Remote Procedure Call from clients&lt;br /&gt;
** Data servers:helps to manage the uploads&lt;br /&gt;
&lt;br /&gt;
*Can only work on data that can be split into many small shards and each shard processed entirely independently. Pure mappings on big data, no larger folding capabilities. Was used for scientific purposes mostly.&lt;br /&gt;
&lt;br /&gt;
== SETI@Home ==&lt;br /&gt;
&lt;br /&gt;
*Uses public resource computing to analyze radio signals to find extraterrestrial intelligence&lt;br /&gt;
*Need good quality telescope to search for radio signals, and lots of computational power, which was unavailable locally&lt;br /&gt;
*It has not yet found extraterrestrial intelligence, but its has established credibility of public resource computing projects&lt;br /&gt;
*Originally custom, now uses BOINC as a backbone for the project&lt;br /&gt;
*Uses relational database to store information on a large scale, further it uses a multi-threaded server to distribute work to clients&lt;br /&gt;
*Quality of data in this architecture is untrustworthy, the main incentive to use it, however, is that it is a cheap and easy way of scaling the work exponentially.&lt;br /&gt;
*Provided social incentives to encourage users to join the system.&lt;br /&gt;
*This computation model still exists but not in the legitimate world.&lt;br /&gt;
*Formed a good concept of public resource computing and a distributed computing by providing a platform independent framework&lt;br /&gt;
&lt;br /&gt;
== MapReduce ==&lt;br /&gt;
&lt;br /&gt;
*A programming model presented by Google to do large scale parallel computations&lt;br /&gt;
*Uses the &amp;lt;code&amp;gt;Map()&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;Reduce()&amp;lt;/code&amp;gt; functions from functional style programming languages&lt;br /&gt;
:*Map (Filtering)&lt;br /&gt;
::*Takes a function and applies it to a bunch of keys to produce values&lt;br /&gt;
* Hides parallelization, fault tolerance, locality optimization and load balancing&lt;br /&gt;
:*Reduce (Summary)&lt;br /&gt;
::*Accumulates results from the data set using a given function&lt;br /&gt;
* Very easy to use and understand, with many classic problems fitting this pattern&lt;br /&gt;
* Otherwise quite constrained in what exactly can be done&lt;br /&gt;
* Uses hashing to distribute similar keys to similar machines, but otherwise spread the load&lt;br /&gt;
&lt;br /&gt;
== Naiad ==&lt;br /&gt;
&lt;br /&gt;
*A programming model similar to &amp;lt;code&amp;gt;MapReduce&amp;lt;/code&amp;gt; but with streaming capabilities so that data results are almost instantaneous&lt;br /&gt;
*A distributed system for executing data parallel cyclic dataflow programs offering high throughput and low latency&lt;br /&gt;
*Aims to provide a general purpose system which will fulfill the requirements and the will also support wide variety of high level programming models.&lt;br /&gt;
*Highly used for parallel execution of data&lt;br /&gt;
*Provides the functionality of checkpoint and restoring&lt;br /&gt;
*A complex framework that can be the backend for simpler models of computation like LINQ or MapReduce to be built on top of.&lt;br /&gt;
*Real Time Applications:&lt;br /&gt;
:*Batch iterative Machine Learning: &lt;br /&gt;
VW, an open source distributed machine learning performs iteration in 3 phases: each process updates local state; processes independently training on local data; and process jointly performed global average which is All Reduce.&lt;br /&gt;
:*Streaming Acyclic Computation&lt;br /&gt;
When compared to a system called [http://research.microsoft.com/apps/pubs/default.aspx?id=163832 Kineograph] ( also done by Microsoft ), which processes twitter handles and provides counts of the occurrence of hashtags as well as links between popular tags, was written using Naiad in 26 lines of code and ran close to 2X faster.&lt;br /&gt;
* Naiad paper won the best paper award in SOSP 2013, check-out this link in Microsoft Research website http://research.microsoft.com/en-us/projects/naiad/ . Down in this page you can see some videos that explains naiad including Derek&#039;s Murray presentation at SOSP 2013.&lt;/div&gt;</summary>
		<author><name>Ashley</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=DistOS_2015W_Session_10&amp;diff=20195</id>
		<title>DistOS 2015W Session 10</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=DistOS_2015W_Session_10&amp;diff=20195"/>
		<updated>2015-04-13T01:41:19Z</updated>

		<summary type="html">&lt;p&gt;Ashley: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* [http://en.wikipedia.org/wiki/Distributed_hash_table Wikipedia&#039;s article on Distributed Hash Tables]&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Kademlia Wikipedia&#039;s article on Kademlia]&lt;br /&gt;
* [http://pdos.csail.mit.edu/~petar/papers/maymounkov-kademlia-lncs.pdf Maymounkov and Mazieres, &amp;quot;Kademlia: A Peer-to-peer information system based on the XOR Metric&amp;quot; (2002)]&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Tapestry_%28DHT%29 Wikipedia&#039;s article on Tapestry]&lt;br /&gt;
* [http://pdos.csail.mit.edu/~strib/docs/tapestry/tapestry_jsac03.pdf Zhao et al, &amp;quot;Tapestry: A Resilient Global-Scale Overlay for Service Deployment&amp;quot; (JSAC 2003)]&lt;br /&gt;
* [https://www.usenix.org/legacy/event/osdi10/tech/full_papers/Geambasu.pdf Geambasu et al., &amp;quot;Comet: An active distributed key-value store&amp;quot; (OSDI 2010)]&lt;br /&gt;
&lt;br /&gt;
Session 10 is about Distributed Hash Tables. How they work, various algorithmic options (keyspace partitioning being a major example) and some of the earliest implementations.&lt;br /&gt;
&lt;br /&gt;
(Feel free to tweak the questions!)&lt;br /&gt;
&lt;br /&gt;
==Kademlia==&lt;br /&gt;
Members: Kirill, Deep, Jason, Hassan&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Why are DHTs relevant to distributed OSs?&#039;&#039;&#039;&lt;br /&gt;
** Using many system, having repetition&lt;br /&gt;
** DHT to distributed content over  multiple nodes&lt;br /&gt;
** Decentralized therefore peer-to-peer&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;How is content divided?&#039;&#039;&#039;&lt;br /&gt;
** File hashes&lt;br /&gt;
** Node ID to locate the value&lt;br /&gt;
** 160 bit key space, binary tree for partition and searching down the tree&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;How is the network traversed?&#039;&#039;&#039;&lt;br /&gt;
** Highest prefix and increase the number of digit it used to get close to the target nodes&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;What trust assumptions does the system make?&#039;&#039;&#039;&lt;br /&gt;
** DHT by itself is insecure&lt;br /&gt;
** The academic and practitioner communities have realized that all current DHT designs suffer from a security weakness, known as the Sybil attack&lt;br /&gt;
** K-buckets&lt;br /&gt;
*** Binary tree with each node having k-buckets as leaf&lt;br /&gt;
*** Any given k-node is very unlikely to fail within an hour of each other&lt;br /&gt;
*** New nodes are only inserted when there is room in the bucket or the oldest node doesn&#039;t respond&lt;br /&gt;
** Uses UDP therefore packets are often lost&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Performance constraints?&#039;&#039;&#039;&lt;br /&gt;
** Binary tree traversing, therefore traversing is maximum O(log n)&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;What non-DHT internet infrastructure would you replace with a DHT?  How suitable is Kademlia for this purpose?&#039;&#039;&#039;&lt;br /&gt;
** DNS&lt;br /&gt;
** Any kind of meta-data service&lt;br /&gt;
&lt;br /&gt;
==Comet==&lt;br /&gt;
Members: Mohamed Ahmed, Apoorv Sangal, Ambalica Sharma&lt;br /&gt;
&lt;br /&gt;
* Why are DHTs relevant to distributed OSs?&lt;br /&gt;
DHT is an infrastructure than enables many clients to share information, and scale to handle node arrival, departure and failure. DHT&#039;s serve many of the design goals of disbtributed operating systems. The paper states that &amp;quot;DHTs are increasingly used to support a variety of distributed applications, such as file-sharing, distributed resource tracking, end-system multicast, publish-subscribe systems, distributed search engines&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* How is content divided?&lt;br /&gt;
One of the three main components of the comet system is a routing substrate which&lt;br /&gt;
implements the value/node mapping. This allows a client to find the node htat stores&lt;br /&gt;
a specific data item. Since Comet uses a DHT implementation, routing occurs by applying&lt;br /&gt;
a hash function to the key to compute node ID&#039;s that store the associated value.&lt;br /&gt;
&lt;br /&gt;
* How is the network traversed?&lt;br /&gt;
&lt;br /&gt;
* What trust assumptions does the system make?&lt;br /&gt;
Assumes clients re untrusted autonomous nodes. &lt;br /&gt;
&lt;br /&gt;
A client node running Comet should be protected from the execution of handlers &lt;br /&gt;
e.g. an executing handler cannot corrupt the node or use unlimited resources. &lt;br /&gt;
Handlers should not be able to mount messaging attacks on other nodes.&lt;br /&gt;
&lt;br /&gt;
Users downloading Comet must trust it and have guarantees about its behavior. For this reason, Comet enforces four important restrictions:&lt;br /&gt;
1. Limited knowledge: an ASO is not aware of other objects&lt;br /&gt;
or resources stored on the same node and has no&lt;br /&gt;
direct way to learn about them.&lt;br /&gt;
2. Limited access: an object handler can manipulate only its own value and cannot modify the values of other objects on its storage node.&lt;br /&gt;
3. Limited communication: an active storage object cannot&lt;br /&gt;
send arbitrary messages over the network.&lt;br /&gt;
4. Limited resource consumption: an ASO’s resource usage is strictly bounded, e.g., the system limits the amount of computation and memory it can consume.&lt;br /&gt;
&lt;br /&gt;
* Performance constraints?&lt;br /&gt;
&lt;br /&gt;
* What non-DHT internet infrastructure would you replace with a DHT?  How suitable is Comet for this purpose?&lt;br /&gt;
&lt;br /&gt;
==Tapestry==&lt;br /&gt;
Members: Ashley, Dany, Alexis, Khaled&lt;br /&gt;
&lt;br /&gt;
* Why are DHTs relevant to distributed OSs?&lt;br /&gt;
&lt;br /&gt;
Because they provide a way to distribute information over large networks (distributed key/value store).&lt;br /&gt;
&lt;br /&gt;
* How is content divided?&lt;br /&gt;
&lt;br /&gt;
Uses consistent hashing (SHA-1), upon node creation (join) creates optimal routing table.&lt;br /&gt;
&lt;br /&gt;
* How is the network traversed?&lt;br /&gt;
&lt;br /&gt;
You look at your neighbours, you see which neighbour is closest to your destination, and recurse.&lt;br /&gt;
&lt;br /&gt;
* What trust assumptions does the system make?&lt;br /&gt;
&lt;br /&gt;
It assumes the system is entirely trustworthy from adversaries. While network failures may happen and nodes may go down, no node will explicitly try to mess with the network.&lt;br /&gt;
&lt;br /&gt;
* Performance constraints?&lt;br /&gt;
&lt;br /&gt;
O(log n) access times to any given node. Best effort publishing/unpublishing via decentralized object location routing.&lt;br /&gt;
&lt;br /&gt;
* What non-DHT internet infrastructure would you replace with a DHT?  How suitable is Tapestry for this purpose?&lt;br /&gt;
&lt;br /&gt;
== Other Resources == &lt;br /&gt;
*[http://ieeexplore.ieee.org/xpls/abs_all.jsp?arnumber=1610546&amp;amp;tag=1 A survey and comparison of peer-to-peer overlay network schemes]&lt;br /&gt;
*[http://link.springer.com/article/10.1007/s12083-012-0157-3 Collaborative Applications over Peer-to-Peer Systems – Challenges and Solutions]&lt;/div&gt;</summary>
		<author><name>Ashley</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=DistOS_2015W_Session_11&amp;diff=20194</id>
		<title>DistOS 2015W Session 11</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=DistOS_2015W_Session_11&amp;diff=20194"/>
		<updated>2015-04-13T01:36:57Z</updated>

		<summary type="html">&lt;p&gt;Ashley: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* [http://research.google.com/archive/bigtable-osdi06.pdf Chang et al., &amp;quot;BigTable: A Distributed Storage System for Structured Data&amp;quot; (OSDI 2006)]&lt;br /&gt;
* [http://www.allthingsdistributed.com/files/amazon-dynamo-sosp2007.pdf DeCandia et al., &amp;quot;Dynamo: Amazon’s Highly Available Key-value Store&amp;quot; (SOSP 2007)]&lt;br /&gt;
* [http://www.cs.cornell.edu/projects/ladis2009/papers/lakshman-ladis2009.pdf Lakshman &amp;amp; Malik, &amp;quot;Cassandra - A Decentralized Structured Storage System&amp;quot; (LADIS 2009)]&lt;br /&gt;
* [https://www.usenix.org/conference/osdi12/technical-sessions/presentation/corbett Corbett et al., &amp;quot;Spanner: Google’s Globally-Distributed Database&amp;quot; (OSDI 2012)]&lt;br /&gt;
&lt;br /&gt;
Session 11&#039;s theme is about Distributed Hash Tables as they are used and implemented by large commercial companies, for what purposes, and with what specializations or design constraints. Two papers focus on Google, while Facebook and Amazon get one each.&lt;br /&gt;
&lt;br /&gt;
==BigTable==&lt;br /&gt;
* Google System used for storing data of various Google Products, for instance Google Analytics, Google Finance, Orkut, Personalized Search, Writely, Google Earth and many more&lt;br /&gt;
* Big table is &lt;br /&gt;
** Sparse&lt;br /&gt;
** Persistant&lt;br /&gt;
** Muti dimensional Sorted Map&lt;br /&gt;
*It is indexed by&lt;br /&gt;
** Row Key: Every read or write of data under single row key is atomic. Each row range is called Tablet. Select Row key to get good locality for data access.&lt;br /&gt;
** Column Key: Grouped into sets called Column Families. Forms basic unit of Access Control.All data stored is of same type.Syntax used: &#039;&#039;family:qualifier&#039;&#039;&lt;br /&gt;
** Time Stamp:Each cell consists of multiple versions of same data which are indexed by Timestamps.In order to avoid collisions, Timestamps need to be generated by applications.&lt;br /&gt;
* Big Table &#039;&#039;&#039;API&#039;&#039;&#039;: Provides functions for&lt;br /&gt;
** Creating and Deleting&lt;br /&gt;
*** Tables&lt;br /&gt;
*** Column Families&lt;br /&gt;
**Changing Cluster&lt;br /&gt;
**Changing Table&lt;br /&gt;
**Column Family metadata like Access Control Rights.&lt;br /&gt;
** Set of wrappers which allow Big Data to be used both as&lt;br /&gt;
*** Input source&lt;br /&gt;
***Output Target&lt;br /&gt;
*The timestamp mechanism in BIG table helps clients to access recent versions of data with simple accessing aspects of using row and column.&lt;br /&gt;
*Parallel computation and cluster management system makes BIG table flexible and highly scalable.&lt;br /&gt;
&lt;br /&gt;
== Dynamo==&lt;br /&gt;
* Amazon&#039;s Key Value Store&lt;br /&gt;
*Availability is the buzz word for Dynamo. Dynamo=Availability&lt;br /&gt;
*Shifted Computer Science paradigm from caring about the consistency to availability.&lt;br /&gt;
*Sacrifices consistency under certain failure scenarios.&lt;br /&gt;
*Treats failure handling as normal case without impact on availability and performance.&lt;br /&gt;
*Data is partitioned and replicated using consistent hashing and consistency is facilitated by use of object versioning.&lt;br /&gt;
* This system has certain requirements such as: &lt;br /&gt;
** Query Model: Simple read and write operations to data item that are uniquely identified by a key.&lt;br /&gt;
**ACID properties: Atomicity, Consistency, Isolation, Durability.&lt;br /&gt;
**Efficiency: System needs to function on a commodity hardware infrastructure.&lt;br /&gt;
*  Service Level Agreements(SLA): They are a negotiated contract between a client and a service regarding characteristics related to systems. They are used in order to guarantee that in a bounded time period, an application can deliver it&#039;s functionality.&lt;br /&gt;
* System Architecture: It consists of &#039;&#039;System Interface&#039;&#039;, &#039;&#039;Partitioning Algorithm&#039;&#039;, &#039;&#039;Replication&#039;&#039;,&#039;&#039;Data Versioning&#039;&#039;.&lt;br /&gt;
* Successfully handles&lt;br /&gt;
** Server Failure&lt;br /&gt;
** Data Centre Failure&lt;br /&gt;
** Network Partitions&lt;br /&gt;
* Allows service owners to customize their own storage systems according to their storage systems to meet the desired performance, durability and consistency SLAs.&lt;br /&gt;
* Building block for highly available applications.&lt;br /&gt;
&lt;br /&gt;
==Cassandra==&lt;br /&gt;
* Facebook&#039;s storage system to fulfil needs of the Inbox Search Problem&lt;br /&gt;
*Partitions data across the cluster using consistent hashing.&lt;br /&gt;
*Distributed multi dimensional map indexed by a key&lt;br /&gt;
* In it&#039;s data model:&lt;br /&gt;
** Columns grouped together into sets called column families. Column Families further of 2 types:&lt;br /&gt;
***Simple column families&lt;br /&gt;
***Super column families&lt;br /&gt;
* API consists of :&lt;br /&gt;
** Insert&lt;br /&gt;
**Get&lt;br /&gt;
** Delete&lt;br /&gt;
* System Architecture consists of :&lt;br /&gt;
** Partitioning: Takes place using consistent hashing&lt;br /&gt;
**Replication: Each item replicated at n hosts where &amp;quot;n&amp;quot; is the replication factor configured per system. &lt;br /&gt;
** Membership: Cluster membership is based on Scuttle butt which is a highly efficient anti-entropy Gossip based mechanism.The Membership further has sub part such as:&lt;br /&gt;
***Failure Detection&lt;br /&gt;
**Bootstrapping&lt;br /&gt;
** Scaling the cluster&lt;br /&gt;
*It can run cheap commodity hardware and handle high throughput &lt;br /&gt;
*Its multiple usable structure makes it very scalable&lt;br /&gt;
&lt;br /&gt;
=Spanner=&lt;br /&gt;
* Google&#039;s scalable, multi version, globally distributed database.&lt;br /&gt;
* Has been built on top of the Google&#039;s Big table.&lt;br /&gt;
*Provided data consistency and Supports SQL like Interface.&lt;br /&gt;
* Uses a separate high-reliability time service to guarantee the correctness properties around concurrency control.&lt;br /&gt;
** The timestamps are utilized.&lt;br /&gt;
*It shares data across machines and migrates data automatically across machines&lt;br /&gt;
*Data Control Functions in spanner controls latency and performance&lt;/div&gt;</summary>
		<author><name>Ashley</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=DistOS_2015W_Session_12&amp;diff=20193</id>
		<title>DistOS 2015W Session 12</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=DistOS_2015W_Session_12&amp;diff=20193"/>
		<updated>2015-04-13T01:10:53Z</updated>

		<summary type="html">&lt;p&gt;Ashley: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* [http://static.usenix.org/legacy/events/osdi10/tech/full_papers/Beaver.pdf Beaver et al., &amp;quot;Finding a needle in Haystack: Facebook’s photo storage&amp;quot; (OSDI 2010)]&lt;br /&gt;
* [https://www.usenix.org/conference/osdi12/technical-sessions/presentation/gordon Gordon et al., &amp;quot;COMET: Code Offload by Migrating Execution Transparently&amp;quot; (OSDI 2012)]&lt;br /&gt;
* [https://www.usenix.org/conference/osdi14/technical-sessions/presentation/muralidhar Muralidhar et al., &amp;quot;f4: Facebook&#039;s Warm BLOB Storage System&amp;quot; (OSDI 2014)]&lt;br /&gt;
* [https://www.usenix.org/conference/osdi14/technical-sessions/presentation/zhang Zhang et al., &amp;quot;Customizable and Extensible Deployment for Mobile/Cloud Applications&amp;quot; (OSDI 2014)]&lt;br /&gt;
&lt;br /&gt;
Session 12 had two separate themes running through their papers.&lt;br /&gt;
&lt;br /&gt;
The first was the storage of large volumes of data that would never be modified, rarely be deleted, and read with varying frequency distributions. This was a specific sub problem of the more general challenge of high performance scalable &amp;amp; reliable distributed storage, and once more leads the solvers at hand (Facebook) to design specialized systems to the exploit the specifics of the sub problem for superior performance.&lt;br /&gt;
&lt;br /&gt;
The second was a return to code offloading mechanisms that could turn programs distributed, in a new modern context. COMET works by taking existing smartphone applications and splicing the user interaction and computation between the phone and an external server. Sapphire provides a whole cluster of deployment modules that one can mix &amp;amp; match and apply to conformant programs to turn them into distributed applications.&lt;br /&gt;
&lt;br /&gt;
=Haystack=&lt;br /&gt;
* Facebook&#039;s Photo Application Storage System. &lt;br /&gt;
* Previous Fb photo storage based on NFS design. The reason why NFS didn&#039;t work is that it took 3 file-system accesses per logical photo read. Haystack only needs one access.&lt;br /&gt;
*Main goals of Haystack:&lt;br /&gt;
** High throughput with low latency. It uses one disk operation to provide these.&lt;br /&gt;
**Fault tolerance&lt;br /&gt;
**Cost effective&lt;br /&gt;
**Simple&lt;br /&gt;
*Facebook stored all images in haystack with a CDN in front to cache hot data. Haystack still needs to be fast since accessing non-cached data is still common.&lt;br /&gt;
*Haystack reduces the memory used for &#039;&#039;filesystem metadata&#039;&#039; &lt;br /&gt;
*It has 2 types of metadata:&lt;br /&gt;
**&#039;&#039;Application metadata&#039;&#039;&lt;br /&gt;
**&#039;&#039;File System metadata&#039;&#039;&lt;br /&gt;
* The architecture consists of 3 components:&lt;br /&gt;
**Haystack Store&lt;br /&gt;
**Haystack Directory&lt;br /&gt;
**Haystack Cache&lt;br /&gt;
*Pitchfork and bulk sync were used to tolerate faults. theTfault tolerance works in a very profound way to make haystack feasible and reliable&lt;br /&gt;
&lt;br /&gt;
=Comet=&lt;br /&gt;
*Introduced the concept of distributed shared memory (DSM). In a DSM, RAMs from multiple servers would appear as if they are all belonging to one server, allowing better scalability for caching.&lt;br /&gt;
*DSM provides advatage over RPC(Remote Procedure Call)  including multi threading suuport, thread migration during execution. &lt;br /&gt;
*client and server model maintain consistency using DSM&lt;br /&gt;
*Comet model works by offloading the computation intensive process from the mobile to only one server.&lt;br /&gt;
*The offloading process works by passing the computation intensive process to the server and hold it on the mobile device. Once the process on the server completes, it returns the results and the handle back to the mobile device. In other words, the process does not get physically offloaded to the server but instead it runs on the server and stopped on the mobile device.&lt;br /&gt;
&lt;br /&gt;
=F4=&lt;br /&gt;
* Warm Blob Storage System.&lt;br /&gt;
** Warm Blob is a store for large quantities of immutable data that isn&#039;t frequently accessed, but must still be available.&lt;br /&gt;
** Built to reduce the overhead of haystack for old data that doesn&#039;t need to be quite as available. Generally data that is a few months old is moved from Haystack to Warm Blob.&lt;br /&gt;
** F4 reduce the space usage of Haystack from a replication factor of 3.6 to 2.8 or 2.1 using Reed Solomon coding and XOR coding respectively but still provides consistency.&lt;br /&gt;
** Less robust to data center failures as a result.&lt;br /&gt;
*Reed Solomon coding basically use(10,4) which means 10 data and 4 parity blocks in a stripe, and can thus tolerate losing up to 4 blocks which means it can tolerate 4 rack failure and use 1.4 expansion factor.Two copies of this would be 2* 1.4= 2.8 effective replication factor.&lt;br /&gt;
*XOR coding use(2,1) across three data center and use 1.5 expansion factor which gives 1.5*1.4= 2.1 effective replication factor.&lt;br /&gt;
*The caching mechanism provides the reduction in load on storage system and it makes BLOB scaleable.&lt;br /&gt;
&lt;br /&gt;
=Sapphire=&lt;br /&gt;
*Represents a building block towards building this global distributed systems. The main critique to it is that it didn’t present a specific use case upon which their design is built upon.&lt;br /&gt;
*Sapphire does not show their scalability boundaries. There is no such distributed system model that can be “one size fits all”, most probably it will break in some large scale distributed application.&lt;br /&gt;
*Reaching this global distributed system that address all the distributed OS use cases will be a cumulative work of many big bodies and building it block by block and then this system will evolve by putting all these different building blocks together. In other words, reaching a global distributed system will come from a “bottom up not top down approach” [Somayaji, 2015].&lt;br /&gt;
*The concept of separate application logic from deployment logic helps programmers in making a flexible system. The other important part that makes it as a scalable system was that it is object based and could be integrated with any object oriented language.&lt;/div&gt;</summary>
		<author><name>Ashley</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=DistOS_2015W_Session_9&amp;diff=20192</id>
		<title>DistOS 2015W Session 9</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=DistOS_2015W_Session_9&amp;diff=20192"/>
		<updated>2015-04-12T20:09:34Z</updated>

		<summary type="html">&lt;p&gt;Ashley: /* BOINC */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== BOINC ==&lt;br /&gt;
&lt;br /&gt;
*Public Resource Computing Platform&lt;br /&gt;
*Gives scientists the ability to use large amounts of computation resources.&lt;br /&gt;
*The clients do not connect directly with each other but instead they talk to a central server located at Berkley&lt;br /&gt;
*The goals of Boinc are: &lt;br /&gt;
:*1) reduce the barriers of entry&lt;br /&gt;
:*2) Share resources among autonomous projects&lt;br /&gt;
:*3) Support diverse applications&lt;br /&gt;
:*4) Reward participants.&lt;br /&gt;
:*5) Provide screensaver graphics&lt;br /&gt;
&lt;br /&gt;
*It can run as applications in common language with no modifications&lt;br /&gt;
*A BOINC application can be identified by a single master URL, which serves as the homepage as well as the directory of the servers.&lt;br /&gt;
*Servers perform set of function using:&lt;br /&gt;
**Scheduling servers: handles Remote Procedure Call from clients&lt;br /&gt;
** Data servers:helps to manage the uploads&lt;br /&gt;
&lt;br /&gt;
*Can only work on data that can be split into many small shards and each shard processed entirely independently. Pure mappings on big data, no larger folding capabilities. Was used for scientific purposes mostly.&lt;br /&gt;
&lt;br /&gt;
== SETI@Home ==&lt;br /&gt;
&lt;br /&gt;
*Uses public resource computing to analyze radio signals to find extraterrestrial intelligence&lt;br /&gt;
*Need good quality telescope to search for radio signals, and lots of computational power, which was unavailable locally&lt;br /&gt;
*It has not yet found extraterrestrial intelligence, but its has established credibility of public resource computing projects&lt;br /&gt;
*Originally custom, now uses BOINC as a backbone for the project&lt;br /&gt;
*Uses relational database to store information on a large scale, further it uses a multi-threaded server to distribute work to clients&lt;br /&gt;
*Quality of data in this architecture is untrustworthy, the main incentive to use it, however, is that it is a cheap and easy way of scaling the work exponentially.&lt;br /&gt;
*Provided social incentives to encourage users to join the system.&lt;br /&gt;
*This computation model still exists but not in the legitimate world.&lt;br /&gt;
*Formed a good concept of public resource computing and a distributed computing by providing a platform independent framework&lt;br /&gt;
&lt;br /&gt;
== MapReduce ==&lt;br /&gt;
&lt;br /&gt;
*A programming model presented by Google to do large scale parallel computations&lt;br /&gt;
*Uses the &amp;lt;code&amp;gt;Map()&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;Reduce()&amp;lt;/code&amp;gt; functions from functional style programming languages&lt;br /&gt;
:*Map (Filtering)&lt;br /&gt;
::*Takes a function and applies it to a bunch of keys to produce values&lt;br /&gt;
* Hides parallelization, fault tolerance, locality optimization and load balancing&lt;br /&gt;
:*Reduce (Summary)&lt;br /&gt;
::*Accumulates results from the data set using a given function&lt;br /&gt;
* Very easy to use and understand, with many classic problems fitting this pattern&lt;br /&gt;
* Otherwise quite constrained in what exactly can be done&lt;br /&gt;
* Uses hashing to distribute similar keys to similar machines, but otherwise spread the load&lt;br /&gt;
&lt;br /&gt;
== Naiad ==&lt;br /&gt;
&lt;br /&gt;
*A programming model similar to &amp;lt;code&amp;gt;MapReduce&amp;lt;/code&amp;gt; but with streaming capabilities so that data results are almost instantaneous&lt;br /&gt;
*A distributed system for executing data parallel cyclic dataflow programs offering high throughput and low latency&lt;br /&gt;
*Aims to provide a general purpose system which will fulfill the requirements and the will also support wide variety of high level programming models.&lt;br /&gt;
*Highly used for parallel execution of data&lt;br /&gt;
*Provides the functionality of checkpoint and restoring&lt;br /&gt;
*A complex framework that can be the backend for simpler models of computation like LINQ or MapReduce to be built on top of.&lt;br /&gt;
*Real Time Applications:&lt;br /&gt;
:*Batch iterative Machine Learning: &lt;br /&gt;
VW, an open source distributed machine learning performs iteration in 3 phases: each process updates local state; processes independently training on local data; and process jointly performed global average which is All Reduce.&lt;br /&gt;
:*Streaming Acyclic Computation&lt;br /&gt;
When compared to a system called [http://research.microsoft.com/apps/pubs/default.aspx?id=163832 Kineograph] ( also done by Microsoft ), which processes twitter handles and provides counts of the occurrence of hashtags as well as links between popular tags, was written using Naiad in 26 lines of code and ran close to 2X faster.&lt;br /&gt;
* Naiad paper won the best paper award in SOSP 2013, check-out this link in Microsoft Research website http://research.microsoft.com/en-us/projects/naiad/ . Down in this page you can see some videos that explains naiad including Derek&#039;s Murray presentation at SOSP 2013.&lt;/div&gt;</summary>
		<author><name>Ashley</name></author>
	</entry>
</feed>