<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ko">
	<id>https://devhrxoobm.itwiki.kr/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Matei</id>
	<title>IT 위키 - 사용자 기여 [ko]</title>
	<link rel="self" type="application/atom+xml" href="https://devhrxoobm.itwiki.kr/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Matei"/>
	<link rel="alternate" type="text/html" href="https://devhrxoobm.itwiki.kr/w/%ED%8A%B9%EC%88%98:%EA%B8%B0%EC%97%AC/Matei"/>
	<updated>2026-09-16T10:26:50Z</updated>
	<subtitle>사용자 기여</subtitle>
	<generator>MediaWiki 1.45.1</generator>
	<entry>
		<id>https://devhrxoobm.itwiki.kr/index.php?title=RAMCloud&amp;diff=40218</id>
		<title>RAMCloud</title>
		<link rel="alternate" type="text/html" href="https://devhrxoobm.itwiki.kr/index.php?title=RAMCloud&amp;diff=40218"/>
		<updated>2025-02-01T03:35:22Z</updated>

		<summary type="html">&lt;p&gt;Matei: 새 문서: &amp;#039;&amp;#039;&amp;#039;RAMCloud&amp;#039;&amp;#039;&amp;#039; is a distributed in-memory storage system designed for low-latency and high-throughput applications. It provides persistent storage with sub-microsecond access times by keeping all data in DRAM while ensuring durability through fast logging to disk or flash. ==Overview== RAMCloud aims to combine: *&amp;#039;&amp;#039;&amp;#039;Low-Latency Storage:&amp;#039;&amp;#039;&amp;#039; Data is stored entirely in DRAM for rapid access. *&amp;#039;&amp;#039;&amp;#039;High Availability:&amp;#039;&amp;#039;&amp;#039; Data is replicated across servers for fault tolerance. *&amp;#039;&amp;#039;&amp;#039;Durabil...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;RAMCloud&#039;&#039;&#039; is a distributed in-memory storage system designed for low-latency and high-throughput applications. It provides persistent storage with sub-microsecond access times by keeping all data in DRAM while ensuring durability through fast logging to disk or flash.&lt;br /&gt;
==Overview==&lt;br /&gt;
RAMCloud aims to combine:&lt;br /&gt;
*&#039;&#039;&#039;Low-Latency Storage:&#039;&#039;&#039; Data is stored entirely in DRAM for rapid access.&lt;br /&gt;
*&#039;&#039;&#039;High Availability:&#039;&#039;&#039; Data is replicated across servers for fault tolerance.&lt;br /&gt;
*&#039;&#039;&#039;Durability:&#039;&#039;&#039; Uses fast disk/flash logging to prevent data loss.&lt;br /&gt;
*&#039;&#039;&#039;Scalability:&#039;&#039;&#039; Can scale to thousands of nodes while maintaining low-latency access.&lt;br /&gt;
RAMCloud is particularly useful in environments requiring real-time data access, such as financial systems, search engines, and large-scale web applications.&lt;br /&gt;
==Key Features==&lt;br /&gt;
*&#039;&#039;&#039;Sub-Microsecond Latency:&#039;&#039;&#039; Provides faster access than traditional disk-based storage.&lt;br /&gt;
*&#039;&#039;&#039;Distributed Key-Value Store:&#039;&#039;&#039; Supports efficient data retrieval across a cluster.&lt;br /&gt;
*&#039;&#039;&#039;Crash Recovery in Seconds:&#039;&#039;&#039; Recovers lost data quickly by reloading from logs.&lt;br /&gt;
*&#039;&#039;&#039;High Scalability:&#039;&#039;&#039; Designed to handle petabyte-scale datasets with thousands of servers.&lt;br /&gt;
==How RAMCloud Works==&lt;br /&gt;
#&#039;&#039;&#039;Data Storage in DRAM:&#039;&#039;&#039; All active data is stored in memory for fast retrieval.&lt;br /&gt;
#&#039;&#039;&#039;Log-Structured Storage:&#039;&#039;&#039; Updates are written sequentially to persistent logs.&lt;br /&gt;
#&#039;&#039;&#039;Crash Recovery Mechanism:&#039;&#039;&#039; Lost data is restored by replaying logs across servers.&lt;br /&gt;
#&#039;&#039;&#039;Distributed Coordination:&#039;&#039;&#039; A master node manages metadata, while worker nodes handle data storage.&lt;br /&gt;
==Example Usage==&lt;br /&gt;
RAMCloud supports a key-value API that allows fast reads and writes:&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
// Connect to a RAMCloud cluster&lt;br /&gt;
RAMCloud::Client client(&amp;quot;tcp:host=ramcloud-cluster&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
// Store a key-value pair&lt;br /&gt;
client.write(&amp;quot;myTable&amp;quot;, &amp;quot;key1&amp;quot;, &amp;quot;Hello RAMCloud!&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
// Retrieve a value&lt;br /&gt;
string value;&lt;br /&gt;
client.read(&amp;quot;myTable&amp;quot;, &amp;quot;key1&amp;quot;, &amp;amp;value);&lt;br /&gt;
cout &amp;lt;&amp;lt; &amp;quot;Retrieved: &amp;quot; &amp;lt;&amp;lt; value &amp;lt;&amp;lt; endl;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
==Comparison with Other Storage Systems==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Feature!!RAMCloud!!Redis!!Apache Cassandra&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;Storage Medium&#039;&#039;&#039;||DRAM (with disk backup)||DRAM||Disk&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;Primary Use Case&#039;&#039;&#039;||Low-latency storage||Caching||Distributed database&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;Replication&#039;&#039;&#039;||Log-based persistence||In-memory replication||Multi-node replication&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;Fault Tolerance&#039;&#039;&#039;||Fast recovery via logs||Data loss risk without persistence||High availability with replication&lt;br /&gt;
|}&lt;br /&gt;
==Advantages==&lt;br /&gt;
*Provides ultra-low-latency storage.&lt;br /&gt;
*Recovers from crashes within seconds.&lt;br /&gt;
*Scales efficiently across large distributed clusters.&lt;br /&gt;
==Limitations==&lt;br /&gt;
*Requires large amounts of DRAM, making it expensive.&lt;br /&gt;
*Not suitable for workloads requiring deep historical storage.&lt;br /&gt;
*Limited adoption compared to more established distributed databases.&lt;br /&gt;
==Applications==&lt;br /&gt;
*&#039;&#039;&#039;Real-Time Analytics:&#039;&#039;&#039; Used in financial trading and fraud detection.&lt;br /&gt;
*&#039;&#039;&#039;Search Engine Indexing:&#039;&#039;&#039; Supports rapid access to large indexes.&lt;br /&gt;
*&#039;&#039;&#039;Web Applications:&#039;&#039;&#039; Reduces response times for latency-sensitive services.&lt;br /&gt;
*&#039;&#039;&#039;Machine Learning Serving:&#039;&#039;&#039; Stores feature embeddings for fast model inference.&lt;br /&gt;
==See Also==&lt;br /&gt;
*[[In-Memory Computing]]&lt;br /&gt;
*[[Distributed Storage]]&lt;br /&gt;
*[[Redis]]&lt;br /&gt;
*[[Apache Cassandra]]&lt;br /&gt;
*[[Key-Value Store]]&lt;br /&gt;
*[[High-Performance Computing]]&lt;br /&gt;
[[분류:Distributed Computing]]&lt;/div&gt;</summary>
		<author><name>Matei</name></author>
	</entry>
	<entry>
		<id>https://devhrxoobm.itwiki.kr/index.php?title=Resilient_Distributed_Datasets&amp;diff=40217</id>
		<title>Resilient Distributed Datasets</title>
		<link rel="alternate" type="text/html" href="https://devhrxoobm.itwiki.kr/index.php?title=Resilient_Distributed_Datasets&amp;diff=40217"/>
		<updated>2025-02-01T03:34:54Z</updated>

		<summary type="html">&lt;p&gt;Matei: 새 문서: &amp;#039;&amp;#039;&amp;#039;Resilient Distributed Datasets (RDDs)&amp;#039;&amp;#039;&amp;#039; are the fundamental data structure in Apache Spark that provide fault-tolerant, parallel computation on large datasets. RDDs enable efficient distributed data processing while ensuring resilience to failures. ==Overview== RDDs are immutable, distributed collections of objects that can be processed in parallel. They are designed to optimize large-scale data processing by: *&amp;#039;&amp;#039;&amp;#039;Fault Tolerance:&amp;#039;&amp;#039;&amp;#039; Automatically recovering lost data us...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Resilient Distributed Datasets (RDDs)&#039;&#039;&#039; are the fundamental data structure in [[Apache Spark]] that provide fault-tolerant, parallel computation on large datasets. RDDs enable efficient distributed data processing while ensuring resilience to failures.&lt;br /&gt;
==Overview==&lt;br /&gt;
RDDs are immutable, distributed collections of objects that can be processed in parallel. They are designed to optimize large-scale data processing by:&lt;br /&gt;
*&#039;&#039;&#039;Fault Tolerance:&#039;&#039;&#039; Automatically recovering lost data using lineage (recomputing from original data).&lt;br /&gt;
*&#039;&#039;&#039;In-Memory Processing:&#039;&#039;&#039; Storing intermediate results in memory to improve performance.&lt;br /&gt;
*&#039;&#039;&#039;Lazy Evaluation:&#039;&#039;&#039; Transformations are not executed immediately but only when an action is triggered.&lt;br /&gt;
*&#039;&#039;&#039;Partitioning:&#039;&#039;&#039; Data is split across nodes to allow parallel execution.&lt;br /&gt;
==Key Features==&lt;br /&gt;
*&#039;&#039;&#039;Immutability:&#039;&#039;&#039; Once created, RDDs cannot be modified; transformations create new RDDs.&lt;br /&gt;
*&#039;&#039;&#039;Lineage Tracking:&#039;&#039;&#039; Maintains a history of transformations to recompute lost partitions.&lt;br /&gt;
*&#039;&#039;&#039;Lazy Evaluation:&#039;&#039;&#039; Delays execution until an action (e.g., count, collect) is called.&lt;br /&gt;
*&#039;&#039;&#039;Fault Tolerance:&#039;&#039;&#039; Automatically recomputes lost partitions without replicating data.&lt;br /&gt;
*&#039;&#039;&#039;Parallel Computation:&#039;&#039;&#039; Distributes tasks across nodes in a Spark cluster.&lt;br /&gt;
==Creating RDDs==&lt;br /&gt;
RDDs can be created in two main ways:&lt;br /&gt;
#&#039;&#039;&#039;From an existing collection:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
data = [1, 2, 3, 4, 5]&lt;br /&gt;
rdd = sparkContext.parallelize(data)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
#&#039;&#039;&#039;From an external data source:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
rdd = sparkContext.textFile(&amp;quot;hdfs://path/to/file.txt&amp;quot;)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
==Transformations and Actions==&lt;br /&gt;
RDDs support two types of operations:&lt;br /&gt;
===Transformations (Lazy Evaluation)===&lt;br /&gt;
Transformations produce new RDDs from existing ones but do not execute immediately:&lt;br /&gt;
*&#039;&#039;&#039;map(func)&#039;&#039;&#039; – Applies a function to each element.&lt;br /&gt;
*&#039;&#039;&#039;filter(func)&#039;&#039;&#039; – Keeps elements that satisfy a condition.&lt;br /&gt;
*&#039;&#039;&#039;flatMap(func)&#039;&#039;&#039; – Similar to map but allows returning multiple values per input.&lt;br /&gt;
*&#039;&#039;&#039;union(rdd)&#039;&#039;&#039; – Merges two RDDs.&lt;br /&gt;
===Actions (Trigger Execution)===&lt;br /&gt;
Actions compute and return results or store data:&lt;br /&gt;
*&#039;&#039;&#039;collect()&#039;&#039;&#039; – Returns all elements to the driver.&lt;br /&gt;
*&#039;&#039;&#039;count()&#039;&#039;&#039; – Returns the number of elements in the RDD.&lt;br /&gt;
*&#039;&#039;&#039;reduce(func)&#039;&#039;&#039; – Aggregates elements using a function.&lt;br /&gt;
*&#039;&#039;&#039;saveAsTextFile(path)&#039;&#039;&#039; – Saves the RDD to a storage location.&lt;br /&gt;
==RDD Lineage and Fault Tolerance==&lt;br /&gt;
RDDs achieve fault tolerance through lineage tracking:&lt;br /&gt;
*Instead of replicating data, Spark logs the sequence of transformations.&lt;br /&gt;
*If a node fails, Spark recomputes lost partitions from the original dataset.&lt;br /&gt;
*This approach minimizes storage overhead while ensuring reliability.&lt;br /&gt;
==Comparison with Other Distributed Data Models==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Feature!!RDDs (Spark)!!MapReduce (Hadoop)!!DataFrames (Spark)&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;Data Processing&#039;&#039;&#039;||In-memory||Disk-based||Optimized execution plans&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;Fault Tolerance&#039;&#039;&#039;||Lineage (recomputes lost data)||Replication||Lineage (like RDDs)&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;Performance&#039;&#039;&#039;||Fast (RAM-based)||Slow (disk I/O)||Faster (columnar storage)&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;Ease of Use&#039;&#039;&#039;||Low (requires functional programming)||Low (requires custom Java/Python)||High (SQL-like API)&lt;br /&gt;
|}&lt;br /&gt;
==Advantages==&lt;br /&gt;
*&#039;&#039;&#039;High Performance:&#039;&#039;&#039; In-memory computation reduces I/O overhead.&lt;br /&gt;
*&#039;&#039;&#039;Scalability:&#039;&#039;&#039; Designed to handle petabyte-scale data.&lt;br /&gt;
*&#039;&#039;&#039;Fault Tolerance:&#039;&#039;&#039; Efficient recovery via lineage tracking.&lt;br /&gt;
*&#039;&#039;&#039;Flexible API:&#039;&#039;&#039; Supports functional programming in Scala, Python, Java.&lt;br /&gt;
==Limitations==&lt;br /&gt;
*&#039;&#039;&#039;Complex API:&#039;&#039;&#039; Requires functional programming knowledge.&lt;br /&gt;
*&#039;&#039;&#039;High Memory Usage:&#039;&#039;&#039; Inefficient for certain workloads compared to optimized data structures like DataFrames.&lt;br /&gt;
*&#039;&#039;&#039;No Schema Optimization:&#039;&#039;&#039; Unlike DataFrames, RDDs do not optimize queries automatically.&lt;br /&gt;
==Applications==&lt;br /&gt;
*&#039;&#039;&#039;Big Data Processing:&#039;&#039;&#039; Used in large-scale ETL and analytics pipelines.&lt;br /&gt;
*&#039;&#039;&#039;Machine Learning:&#039;&#039;&#039; Supports distributed ML algorithms via [[MLlib]].&lt;br /&gt;
*&#039;&#039;&#039;Graph Processing:&#039;&#039;&#039; Backbone of [[GraphX]] for scalable graph analytics.&lt;br /&gt;
==See Also==&lt;br /&gt;
*[[Apache Spark]]&lt;br /&gt;
*[[DataFrames (Spark)]]&lt;br /&gt;
*[[Hadoop MapReduce]]&lt;br /&gt;
*[[Distributed Computing]]&lt;br /&gt;
*[[Big Data Processing]]&lt;br /&gt;
[[분류:Distributed Computing]]&lt;/div&gt;</summary>
		<author><name>Matei</name></author>
	</entry>
	<entry>
		<id>https://devhrxoobm.itwiki.kr/index.php?title=Distributed_Shared_Memory&amp;diff=40216</id>
		<title>Distributed Shared Memory</title>
		<link rel="alternate" type="text/html" href="https://devhrxoobm.itwiki.kr/index.php?title=Distributed_Shared_Memory&amp;diff=40216"/>
		<updated>2025-02-01T01:53:10Z</updated>

		<summary type="html">&lt;p&gt;Matei: 새 문서: &amp;#039;&amp;#039;&amp;#039;Distributed Shared Memory (DSM)&amp;#039;&amp;#039;&amp;#039; is a memory management architecture that enables multiple distributed systems to share a logical memory space, allowing processes on different machines to access shared data as if they were on a single system. ==Overview== Distributed shared memory provides an abstraction that simplifies parallel and distributed computing by: *&amp;#039;&amp;#039;&amp;#039;Providing a unified memory model:&amp;#039;&amp;#039;&amp;#039; Applications access memory as if it were shared, even though it is physicall...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Distributed Shared Memory (DSM)&#039;&#039;&#039; is a memory management architecture that enables multiple distributed systems to share a logical memory space, allowing processes on different machines to access shared data as if they were on a single system.&lt;br /&gt;
==Overview==&lt;br /&gt;
Distributed shared memory provides an abstraction that simplifies parallel and distributed computing by:&lt;br /&gt;
*&#039;&#039;&#039;Providing a unified memory model:&#039;&#039;&#039; Applications access memory as if it were shared, even though it is physically distributed.&lt;br /&gt;
*&#039;&#039;&#039;Reducing explicit message passing:&#039;&#039;&#039; Eliminates the need for developers to manually implement interprocess communication (IPC).&lt;br /&gt;
*&#039;&#039;&#039;Ensuring consistency:&#039;&#039;&#039; Various memory consistency models define how updates to shared data are propagated.&lt;br /&gt;
==Key Features==&lt;br /&gt;
*&#039;&#039;&#039;Transparency:&#039;&#039;&#039; Abstracts away the complexities of distributed memory management.&lt;br /&gt;
*&#039;&#039;&#039;Scalability:&#039;&#039;&#039; Supports large-scale distributed applications.&lt;br /&gt;
*&#039;&#039;&#039;Consistency Models:&#039;&#039;&#039; Defines how and when changes in memory are visible to other nodes.&lt;br /&gt;
*&#039;&#039;&#039;Fault Tolerance:&#039;&#039;&#039; Can recover from failures by replicating memory across nodes.&lt;br /&gt;
==Memory Consistency Models==&lt;br /&gt;
Different consistency models define how updates to shared memory are observed:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Consistency Model!!Description!!Example Use Case&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;Strict Consistency&#039;&#039;&#039;||Updates are immediately visible to all nodes.||Ideal but impractical in real-world distributed systems.&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;Sequential Consistency&#039;&#039;&#039;||All operations appear in some sequential order across all nodes.||Shared-memory multiprocessors.&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;Causal Consistency&#039;&#039;&#039;||Ensures that causally related memory updates appear in order.||Event-driven systems.&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;Release Consistency&#039;&#039;&#039;||Updates are visible after a synchronization operation (e.g., lock release).||High-performance computing.&lt;br /&gt;
|}&lt;br /&gt;
==Implementation Approaches==&lt;br /&gt;
Distributed shared memory can be implemented using different techniques:&lt;br /&gt;
*&#039;&#039;&#039;Hardware-Based DSM:&#039;&#039;&#039; Implements shared memory at the hardware level (e.g., NUMA systems).&lt;br /&gt;
*&#039;&#039;&#039;Software-Based DSM:&#039;&#039;&#039; Uses middleware or runtime systems to manage shared memory.&lt;br /&gt;
*&#039;&#039;&#039;Hybrid DSM:&#039;&#039;&#039; Combines hardware and software techniques for efficiency.&lt;br /&gt;
==Example DSM Systems==&lt;br /&gt;
*&#039;&#039;&#039;TreadMarks:&#039;&#039;&#039; A software DSM system supporting relaxed memory consistency.&lt;br /&gt;
*&#039;&#039;&#039;Memcached:&#039;&#039;&#039; A distributed caching system that can function as a shared memory abstraction.&lt;br /&gt;
*&#039;&#039;&#039;Spark RDDs:&#039;&#039;&#039; In-memory data sharing in distributed computing environments.&lt;br /&gt;
*&#039;&#039;&#039;IBM Coherence:&#039;&#039;&#039; A distributed in-memory data grid.&lt;br /&gt;
==Comparison with Other Memory Models==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Feature!!Distributed Shared Memory!!Message Passing!!Centralized Shared Memory&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;Abstraction Level&#039;&#039;&#039;||High||Low||High&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;Communication Method&#039;&#039;&#039;||Implicit memory access||Explicit message exchange||Direct memory access&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;Performance&#039;&#039;&#039;||Moderate||High||High&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;Fault Tolerance&#039;&#039;&#039;||High (via replication)||High (via redundancy)||Low&lt;br /&gt;
|}&lt;br /&gt;
==Advantages==&lt;br /&gt;
*Simplifies parallel programming by abstracting memory distribution.&lt;br /&gt;
*Reduces the need for explicit communication mechanisms.&lt;br /&gt;
*Provides a scalable solution for distributed computing applications.&lt;br /&gt;
==Limitations==&lt;br /&gt;
*Memory consistency overhead can degrade performance.&lt;br /&gt;
*Higher latency compared to local shared memory due to network communication.&lt;br /&gt;
*Complexity in ensuring fault tolerance and replication.&lt;br /&gt;
==Applications==&lt;br /&gt;
*&#039;&#039;&#039;High-Performance Computing (HPC):&#039;&#039;&#039; Used in large-scale parallel computing systems.&lt;br /&gt;
*&#039;&#039;&#039;Distributed Databases:&#039;&#039;&#039; Enables shared access to distributed in-memory storage.&lt;br /&gt;
*&#039;&#039;&#039;Cloud Computing:&#039;&#039;&#039; Used in distributed caching and shared resource management.&lt;br /&gt;
*&#039;&#039;&#039;Big Data Processing:&#039;&#039;&#039; Facilitates in-memory data sharing in frameworks like Apache Spark.&lt;br /&gt;
==See Also==&lt;br /&gt;
*[[Shared Memory]]&lt;br /&gt;
*[[Message Passing Interface (MPI)]]&lt;br /&gt;
*[[Parallel Computing]]&lt;br /&gt;
*[[Cloud Computing]]&lt;br /&gt;
*[[Big Data Processing]]&lt;br /&gt;
*[[NUMA (Non-Uniform Memory Access)]]&lt;br /&gt;
[[분류:Distributed Computing]]&lt;/div&gt;</summary>
		<author><name>Matei</name></author>
	</entry>
	<entry>
		<id>https://devhrxoobm.itwiki.kr/index.php?title=Piccolo&amp;diff=40215</id>
		<title>Piccolo</title>
		<link rel="alternate" type="text/html" href="https://devhrxoobm.itwiki.kr/index.php?title=Piccolo&amp;diff=40215"/>
		<updated>2025-02-01T01:52:45Z</updated>

		<summary type="html">&lt;p&gt;Matei: 새 문서: &amp;#039;&amp;#039;&amp;#039;Piccolo&amp;#039;&amp;#039;&amp;#039; is a distributed in-memory computing framework designed to simplify the development of parallel applications. It provides a shared, distributed key-value store that allows workers to efficiently process large datasets while reducing communication overhead. ==Overview== Piccolo enables efficient distributed computing by: *&amp;#039;&amp;#039;&amp;#039;In-Memory Data Storage:&amp;#039;&amp;#039;&amp;#039; Uses a distributed key-value store to minimize disk I/O. *&amp;#039;&amp;#039;&amp;#039;Fine-Grained Data Sharing:&amp;#039;&amp;#039;&amp;#039; Allows workers to share s...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Piccolo&#039;&#039;&#039; is a distributed in-memory computing framework designed to simplify the development of parallel applications. It provides a shared, distributed key-value store that allows workers to efficiently process large datasets while reducing communication overhead.&lt;br /&gt;
==Overview==&lt;br /&gt;
Piccolo enables efficient distributed computing by:&lt;br /&gt;
*&#039;&#039;&#039;In-Memory Data Storage:&#039;&#039;&#039; Uses a distributed key-value store to minimize disk I/O.&lt;br /&gt;
*&#039;&#039;&#039;Fine-Grained Data Sharing:&#039;&#039;&#039; Allows workers to share state via a global table abstraction.&lt;br /&gt;
*&#039;&#039;&#039;Fault Tolerance:&#039;&#039;&#039; Supports recovery mechanisms to handle worker failures.&lt;br /&gt;
*&#039;&#039;&#039;Efficient Synchronization:&#039;&#039;&#039; Reduces communication overhead through user-defined consistency models.&lt;br /&gt;
Piccolo provides a programming model where developers can focus on computation while the framework handles data distribution and consistency.&lt;br /&gt;
==Key Features==&lt;br /&gt;
*&#039;&#039;&#039;Shared Global Tables&#039;&#039;&#039; – Workers access shared state stored in distributed key-value tables.&lt;br /&gt;
*&#039;&#039;&#039;Automatic Data Partitioning&#039;&#039;&#039; – Distributes data across workers for parallel processing.&lt;br /&gt;
*&#039;&#039;&#039;Flexible Consistency Models&#039;&#039;&#039; – Supports user-defined update models to balance performance and correctness.&lt;br /&gt;
*&#039;&#039;&#039;Fault Recovery&#039;&#039;&#039; – Can recover from worker failures by reloading lost state.&lt;br /&gt;
*&#039;&#039;&#039;Scalability&#039;&#039;&#039; – Designed to run efficiently on large clusters.&lt;br /&gt;
==How Piccolo Works==&lt;br /&gt;
#&#039;&#039;&#039;Workers Execute User Code:&#039;&#039;&#039; Each worker runs a computation task on distributed data.&lt;br /&gt;
#&#039;&#039;&#039;Global Tables Store State:&#039;&#039;&#039; Data is shared through distributed key-value tables.&lt;br /&gt;
#&#039;&#039;&#039;Synchronization Ensures Consistency:&#039;&#039;&#039; User-defined update models handle concurrent modifications.&lt;br /&gt;
#&#039;&#039;&#039;Checkpointing Provides Fault Tolerance:&#039;&#039;&#039; Periodic checkpoints allow recovery from failures.&lt;br /&gt;
==Example Usage==&lt;br /&gt;
A simple Piccolo job that counts word occurrences in a distributed manner:&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
import piccolo&lt;br /&gt;
&lt;br /&gt;
# Define a distributed key-value table&lt;br /&gt;
word_counts = piccolo.Table(&amp;quot;word_counts&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
def count_words(worker, data):&lt;br /&gt;
    for line in data:&lt;br /&gt;
        for word in line.split():&lt;br /&gt;
            word_counts.update(word, lambda x: x + 1 if x else 1)&lt;br /&gt;
&lt;br /&gt;
# Run job on a distributed cluster&lt;br /&gt;
piccolo.run(count_words, input_data=&amp;quot;hdfs://input.txt&amp;quot;)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
==Comparison with Other Distributed Frameworks==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Feature!!Piccolo!!Hadoop (MapReduce)!!Apache Spark&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;Data Storage&#039;&#039;&#039;||In-Memory Key-Value Store||Distributed File System||Resilient Distributed Datasets (RDDs)&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;Programming Model&#039;&#039;&#039;||Shared Global Tables||Map and Reduce Functions||Functional Transformations&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;Fault Tolerance&#039;&#039;&#039;||Checkpointing||Data Replication||Lineage-Based Recovery&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;Use Case&#039;&#039;&#039;||Iterative Data Processing||Batch Processing||Batch &amp;amp; Streaming Processing&lt;br /&gt;
|}&lt;br /&gt;
==Advantages==&lt;br /&gt;
*Faster than traditional MapReduce due to in-memory processing.&lt;br /&gt;
*Simple API for shared global state management.&lt;br /&gt;
*Scales efficiently for iterative computations.&lt;br /&gt;
==Limitations==&lt;br /&gt;
*Limited adoption compared to Spark and Hadoop.&lt;br /&gt;
*Not optimized for streaming workloads.&lt;br /&gt;
*Requires explicit consistency management by users.&lt;br /&gt;
==Applications==&lt;br /&gt;
*&#039;&#039;&#039;Graph Processing:&#039;&#039;&#039; Computing PageRank, social network analysis.&lt;br /&gt;
*&#039;&#039;&#039;Machine Learning:&#039;&#039;&#039; Distributed training of models with shared parameters.&lt;br /&gt;
*&#039;&#039;&#039;Iterative Computation:&#039;&#039;&#039; Workloads requiring frequent updates to shared state.&lt;br /&gt;
==See Also==&lt;br /&gt;
*[[Distributed Computing]]&lt;br /&gt;
*[[In-Memory Computing]]&lt;br /&gt;
*[[MapReduce]]&lt;br /&gt;
*[[Apache Spark]]&lt;br /&gt;
*[[Big Data Processing]]&lt;br /&gt;
[[분류:Distributed Computing]]&lt;/div&gt;</summary>
		<author><name>Matei</name></author>
	</entry>
	<entry>
		<id>https://devhrxoobm.itwiki.kr/index.php?title=FlumeJava&amp;diff=40213</id>
		<title>FlumeJava</title>
		<link rel="alternate" type="text/html" href="https://devhrxoobm.itwiki.kr/index.php?title=FlumeJava&amp;diff=40213"/>
		<updated>2025-01-31T20:53:07Z</updated>

		<summary type="html">&lt;p&gt;Matei: 새 문서: &amp;#039;&amp;#039;&amp;#039;FlumeJava&amp;#039;&amp;#039;&amp;#039; is a Java-based distributed data processing framework developed by Google for building and executing efficient, parallel, and distributed pipelines. It provides an abstraction over MapReduce and other parallel computation models, enabling users to write high-level data processing workflows. ==Overview== FlumeJava simplifies large-scale data processing by providing: *&amp;#039;&amp;#039;&amp;#039;Lazy Evaluation:&amp;#039;&amp;#039;&amp;#039; Pipelines are defined but not executed immediately, allowing for optimizati...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;FlumeJava&#039;&#039;&#039; is a Java-based distributed data processing framework developed by Google for building and executing efficient, parallel, and distributed pipelines. It provides an abstraction over MapReduce and other parallel computation models, enabling users to write high-level data processing workflows.&lt;br /&gt;
==Overview==&lt;br /&gt;
FlumeJava simplifies large-scale data processing by providing:&lt;br /&gt;
*&#039;&#039;&#039;Lazy Evaluation:&#039;&#039;&#039; Pipelines are defined but not executed immediately, allowing for optimization before execution.&lt;br /&gt;
*&#039;&#039;&#039;Parallel Execution:&#039;&#039;&#039; Supports distributed computation over large datasets.&lt;br /&gt;
*&#039;&#039;&#039;Pipeline Abstraction:&#039;&#039;&#039; Enables users to write composable data transformations without handling low-level MapReduce details.&lt;br /&gt;
FlumeJava is designed to improve productivity by allowing developers to focus on pipeline logic rather than parallel execution mechanics.&lt;br /&gt;
==Key Features==&lt;br /&gt;
*&#039;&#039;&#039;High-Level API&#039;&#039;&#039; – Provides abstractions for common data transformations.&lt;br /&gt;
*&#039;&#039;&#039;Automatic Optimization&#039;&#039;&#039; – Lazily builds an execution plan and optimizes before running.&lt;br /&gt;
*&#039;&#039;&#039;Integration with MapReduce&#039;&#039;&#039; – Executes jobs on Google’s distributed infrastructure.&lt;br /&gt;
*&#039;&#039;&#039;Fault Tolerance&#039;&#039;&#039; – Handles failures efficiently during execution.&lt;br /&gt;
*&#039;&#039;&#039;Scalability&#039;&#039;&#039; – Processes petabyte-scale data efficiently.&lt;br /&gt;
==How FlumeJava Works==&lt;br /&gt;
#&#039;&#039;&#039;Define a Pipeline:&#039;&#039;&#039; The user writes a sequence of transformations using FlumeJava&#039;s API.&lt;br /&gt;
#&#039;&#039;&#039;Lazy Evaluation:&#039;&#039;&#039; The system constructs a deferred execution plan.&lt;br /&gt;
#&#039;&#039;&#039;Optimization:&#039;&#039;&#039; The execution plan is optimized before running.&lt;br /&gt;
#&#039;&#039;&#039;Execution:&#039;&#039;&#039; The optimized plan is executed on a distributed backend like MapReduce.&lt;br /&gt;
==Example Usage==&lt;br /&gt;
A simple FlumeJava pipeline for processing text data:&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
PCollection&amp;lt;String&amp;gt; lines = readTextFile(&amp;quot;gs://input-data&amp;quot;);&lt;br /&gt;
PCollection&amp;lt;String&amp;gt; words = lines.parallelDo(new DoFn&amp;lt;String, String&amp;gt;() {&lt;br /&gt;
    public void process(String line, EmitFn&amp;lt;String&amp;gt; emitter) {&lt;br /&gt;
        for (String word : line.split(&amp;quot;\\s+&amp;quot;)) {&lt;br /&gt;
            emitter.emit(word);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}, stringType());&lt;br /&gt;
&lt;br /&gt;
PCollection&amp;lt;KV&amp;lt;String, Integer&amp;gt;&amp;gt; wordCounts = words.count();&lt;br /&gt;
writeTextFile(wordCounts, &amp;quot;gs://output-data&amp;quot;);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
==Comparison with Other Distributed Frameworks==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Feature!!FlumeJava!!Apache Beam!!Hadoop (MapReduce)&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;Programming Model&#039;&#039;&#039;||High-Level Java API||Unified batch and streaming||Low-Level MapReduce API&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;Execution&#039;&#039;&#039;||Optimized pipeline execution||Portable across runners||Sequential execution&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;Ease of Use&#039;&#039;&#039;||High||High||Low&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;Primary Use Case&#039;&#039;&#039;||Batch Processing||Batch &amp;amp; Streaming||Batch Processing&lt;br /&gt;
|}&lt;br /&gt;
==Advantages==&lt;br /&gt;
*Provides a simple and expressive API for defining data pipelines.&lt;br /&gt;
*Automatically optimizes execution plans before running.&lt;br /&gt;
*Scales efficiently for large datasets.&lt;br /&gt;
==Limitations==&lt;br /&gt;
*Tightly integrated with Google’s ecosystem.&lt;br /&gt;
*Less flexible compared to newer frameworks like Apache Beam.&lt;br /&gt;
*No real-time streaming support (focused on batch processing).&lt;br /&gt;
==Applications==&lt;br /&gt;
*&#039;&#039;&#039;Log Processing:&#039;&#039;&#039; Analyzing large-scale system logs.&lt;br /&gt;
*&#039;&#039;&#039;ETL Pipelines:&#039;&#039;&#039; Extracting, transforming, and loading data.&lt;br /&gt;
*&#039;&#039;&#039;Machine Learning Data Preparation:&#039;&#039;&#039; Preprocessing large datasets for training models.&lt;br /&gt;
==See Also==&lt;br /&gt;
*[[Apache Beam]]&lt;br /&gt;
*[[MapReduce]]&lt;br /&gt;
*[[Distributed Computing]]&lt;br /&gt;
*[[Big Data Processing]]&lt;br /&gt;
*[[Google Cloud Dataflow]]&lt;br /&gt;
*[[ETL Process]]&lt;br /&gt;
[[분류:Distributed Computing]]&lt;/div&gt;</summary>
		<author><name>Matei</name></author>
	</entry>
	<entry>
		<id>https://devhrxoobm.itwiki.kr/index.php?title=DryadLINQ&amp;diff=40212</id>
		<title>DryadLINQ</title>
		<link rel="alternate" type="text/html" href="https://devhrxoobm.itwiki.kr/index.php?title=DryadLINQ&amp;diff=40212"/>
		<updated>2025-01-31T20:44:44Z</updated>

		<summary type="html">&lt;p&gt;Matei: 새 문서: &amp;#039;&amp;#039;&amp;#039;DryadLINQ&amp;#039;&amp;#039;&amp;#039; is a distributed computing framework developed by Microsoft that extends LINQ (Language Integrated Query) to work with large-scale data processing using the Dryad execution engine. It allows users to write data-parallel computations in C# or other .NET languages while leveraging distributed computing resources. ==Overview== DryadLINQ simplifies distributed data processing by combining: *&amp;#039;&amp;#039;&amp;#039;Dryad&amp;#039;&amp;#039;&amp;#039;: A distributed execution engine that processes dataflow graphs ac...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;DryadLINQ&#039;&#039;&#039; is a distributed computing framework developed by Microsoft that extends LINQ (Language Integrated Query) to work with large-scale data processing using the Dryad execution engine. It allows users to write data-parallel computations in C# or other .NET languages while leveraging distributed computing resources.&lt;br /&gt;
==Overview==&lt;br /&gt;
DryadLINQ simplifies distributed data processing by combining:&lt;br /&gt;
*&#039;&#039;&#039;Dryad&#039;&#039;&#039;: A distributed execution engine that processes dataflow graphs across multiple machines.&lt;br /&gt;
*&#039;&#039;&#039;LINQ&#039;&#039;&#039;: A high-level declarative programming model used for querying and manipulating data in .NET applications.&lt;br /&gt;
It enables developers to write parallel processing jobs in a familiar LINQ syntax, without requiring deep knowledge of distributed systems.&lt;br /&gt;
==Key Features==&lt;br /&gt;
*&#039;&#039;&#039;Seamless Integration with LINQ&#039;&#039;&#039; – Enables developers to write queries using LINQ while automatically distributing computations.&lt;br /&gt;
*&#039;&#039;&#039;Distributed Execution&#039;&#039;&#039; – Uses clusters of machines to execute data-parallel computations efficiently.&lt;br /&gt;
*&#039;&#039;&#039;Automatic Optimization&#039;&#039;&#039; – Translates LINQ queries into optimized execution graphs for parallel processing.&lt;br /&gt;
*&#039;&#039;&#039;Fault Tolerance&#039;&#039;&#039; – Supports recovery mechanisms in case of node failures.&lt;br /&gt;
*&#039;&#039;&#039;Scalability&#039;&#039;&#039; – Works efficiently with large datasets by distributing workloads dynamically.&lt;br /&gt;
==How DryadLINQ Works==&lt;br /&gt;
#&#039;&#039;&#039;User writes a LINQ query.&#039;&#039;&#039;&lt;br /&gt;
#*The developer writes a LINQ query using C# or another .NET language.&lt;br /&gt;
#&#039;&#039;&#039;DryadLINQ transforms the query.&#039;&#039;&#039;&lt;br /&gt;
#*The query is translated into a directed acyclic graph (DAG) representing the execution flow.&lt;br /&gt;
#&#039;&#039;&#039;Dryad executes the graph.&#039;&#039;&#039;&lt;br /&gt;
#*The Dryad engine schedules and executes the computation across a distributed cluster.&lt;br /&gt;
#&#039;&#039;&#039;Results are aggregated.&#039;&#039;&#039;&lt;br /&gt;
#*The final results are returned to the user after parallel execution completes.&lt;br /&gt;
==Example Usage==&lt;br /&gt;
A simple DryadLINQ query to process distributed data:&amp;lt;syntaxhighlight lang=&amp;quot;csharp&amp;quot;&amp;gt;&lt;br /&gt;
IQueryable&amp;lt;int&amp;gt; data = DistributedSource&amp;lt;int&amp;gt;.FromFile(&amp;quot;input.txt&amp;quot;);&lt;br /&gt;
var result = from num in data&lt;br /&gt;
             where num % 2 == 0&lt;br /&gt;
             select num * num;&lt;br /&gt;
result.ToDistributedStream(&amp;quot;output.txt&amp;quot;);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
==Comparison with Other Distributed Frameworks==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Feature!!DryadLINQ!!Hadoop (MapReduce)!!Apache Spark&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;Programming Model&#039;&#039;&#039;||LINQ (Declarative)||Java/Python (Procedural)||RDDs, DataFrames (Functional)&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;Execution Model&#039;&#039;&#039;||Directed Acyclic Graph (DAG)||Map and Reduce Functions||DAG-based in-memory processing&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;Fault Tolerance&#039;&#039;&#039;||Checkpointing and recomputation||Data replication||Lineage-based recomputation&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;Ease of Use&#039;&#039;&#039;||High (familiar LINQ syntax)||Moderate (requires custom MapReduce logic)||High (functional programming model)&lt;br /&gt;
|}&lt;br /&gt;
==Advantages==&lt;br /&gt;
*Familiar syntax for .NET developers.&lt;br /&gt;
*Efficient distributed execution using Dryad’s DAG-based scheduler.&lt;br /&gt;
*Automatic query optimization and parallelization.&lt;br /&gt;
==Limitations==&lt;br /&gt;
*Limited adoption compared to Hadoop and Spark.&lt;br /&gt;
*Tightly integrated with the .NET ecosystem.&lt;br /&gt;
*Not actively maintained as Microsoft shifted focus to Azure-based big data solutions.&lt;br /&gt;
==Applications==&lt;br /&gt;
*&#039;&#039;&#039;Large-scale data analysis.&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;Machine learning preprocessing.&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;Log processing in distributed environments.&#039;&#039;&#039;&lt;br /&gt;
==See Also==&lt;br /&gt;
*[[LINQ]]&lt;br /&gt;
*[[Dryad (computing)]]&lt;br /&gt;
*[[Apache Spark]]&lt;br /&gt;
*[[Hadoop MapReduce]]&lt;br /&gt;
*[[Parallel Computing]]&lt;br /&gt;
*[[Big Data Processing]]&lt;br /&gt;
[[분류:Distributed Computing]]&lt;/div&gt;</summary>
		<author><name>Matei</name></author>
	</entry>
</feed>