<turbo-stream action="append" target="posts_list"><template>    <div class="postbit" id="6461" data-post-id="6461">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="andre1sk" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/andre1sk/120/1380_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  andre1sk
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>The reason that a lot of projects rely on zookeeper is that properly implementing paxos, raft or zab in case of zookeeper is very hard and resource consuming project, fortunately there is fairly mature erlang implementation in<br>
the form of riak_ensemble which could serve as foundation. Now implementing kafka like system that relyes on riak_ensemble would be a really cool project.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="6461" data-batch-url="/posts/batch_likers">
                        1
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/big-data-with-elixir/154/42">Post #41</a>
	                </div>
	            </div>
              <div id="likers-container-6461" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="6461"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #41"></div>
  </section>
</div>
    <div class="postbit" id="19496" data-post-id="19496">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="uranther" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/uranther/120/2627_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  uranther
                    <span class="op-star" title="Thread Starter">
                      <img alt="OP" class="op-star-icon" src="/assets/thread-icons/thread-icon-thread-starter-df91e872.png" />
                    </span>
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<h2><a name="p-19496-elixir-otp-primitives-1" class="anchor" href="#p-19496-elixir-otp-primitives-1" aria-label="Heading link" rel="nofollow"></a>Elixir / OTP primitives</h2>
<ul>
<li><a href="https://github.com/elixir-lang/gen_stage" rel="noopener nofollow ugc"><strong>GenStage</strong></a> is a specification for exchanging events between producers and consumers. It also provides a mechanism to specify the computational flow between stages
<ul>
<li><code>Experimental.GenStage</code> (<a href="https://hexdocs.pm/gen_stage/Experimental.GenStage.html" rel="noopener nofollow ugc">docs</a>) - a behaviour for implementing producer and consumer stages</li>
<li><code>Experimental.Flow</code> (<a href="https://hexdocs.pm/gen_stage/Experimental.Flow.html" rel="noopener nofollow ugc">docs</a>) - <strong><code>Flow</code></strong> allows developers to express computations on collections, similar to the <code>Enum</code> and <code>Stream</code> modules, although computations will be executed in parallel using multiple <code>GenStage</code>s</li>
<li><code>Experimental.DynamicSupervisor</code> (<a href="https://hexdocs.pm/gen_stage/Experimental.DynamicSupervisor.html" rel="noopener nofollow ugc">docs</a>) - a supervisor designed for starting children dynamically. Besides being a replacement for the <code>:simple_one_for_one</code> strategy in the regular <code>Supervisor</code>, a <code>DynamicSupervisor</code> can also be used as a stage consumer, making it straight-forward to spawn a new process for every event in a stage pipeline</li>
</ul>
</li>
<li><a href="http://elixir-lang.org/docs/stable/elixir/GenEvent.html" rel="nofollow"><strong>GenEvent</strong></a> is a behaviour module for implementing event handling functionality.<br>
The event handling model consists of a generic event manager process with an arbitrary number of event handlers which are added and deleted dynamically.<br>
An event manager implemented using this module will have a standard set of interface functions and include functionality for tracing and error reporting. It will also fit into a supervision tree.</li>
</ul>
<h2><a name="p-19496-basho-riak-2" class="anchor" href="#p-19496-basho-riak-2" aria-label="Heading link" rel="nofollow"></a>Basho Riak</h2>
<ul>
<li><a href="http://docs.basho.com/riak/kv/2.1.4/setup/planning/backend/bitcask/" rel="noopener nofollow ugc"><strong>Bitcask</strong></a> is an Erlang application that provides an API for storing and retrieving key/value data using log-structured hash tables that provide very fast access. The design of Bitcask was inspired, in part, by log-structured filesystems and log file merging.</li>
<li><a href="https://github.com/basho/riak" rel="noopener nofollow ugc"><strong>Riak KV (key-value)</strong></a> is a distributed NoSQL database designed to deliver maximum data availability by distributing data across multiple servers. As long as your Riak KV client can reach one Riak server, it should be able to write data. Its default storage backend is Bitcask and it also supports LevelDB and memory backends.<br>
Riak KV Enterprise includes multi-datacenter cluster replication, which ensures low-latency and robust business continuity.</li>
<li><a href="https://github.com/basho/riak_cs" rel="noopener nofollow ugc"><strong>Riak CS (cloud storage)</strong></a> is an object storage system built on top of Riak. It facilitates storing large objects in Riak and presents an S3-compatible interface. It also provides multi-tenancy features such as user accounts, authentication, access control mechanisms, and per account usage reporting.</li>
<li><a href="http://docs.basho.com/riak/ts/1.5.0/" rel="noopener nofollow ugc"><strong>Riak TS (time-series)</strong></a> is a distributed NoSQL key/value store optimized for time series data. With TS, you can associate a number of data points with a specific point in time. TS uses discrete slices of time to co-locate data. For example, humidity and temperature readings from a meter reported during the same slice of time will be stored together on disk.</li>
<li><a href="https://github.com/basho/riak_pipe" rel="noopener nofollow ugc"><strong>Riak Pipelines</strong></a> is most simply described as “UNIX pipes for Riak.” In much the same way you would pipe the output of one program to another on the command line (e.g. <code>find . -name *.hrl | xargs grep define | uniq | wc -l</code>), <code>riak_pipe</code> allows you to pipe the output of a function on one vnode to the input of a function on another (e.g. <code>kvget | xform | reduce</code>).</li>
<li><a href="https://github.com/basho/riak_ensemble" rel="noopener nofollow ugc"><strong>Riak Ensemble</strong></a> is a consensus library that supports creating multiple consensus groups (ensembles). Each ensemble is a separate Multi-Paxos instance with its own leader, set of members, and state.</li>
<li><a href="http://docs.basho.com/dataplatform/1.0.0/" rel="noopener nofollow ugc"><strong>Basho Data Platform</strong></a> reduces the complexity of integrating and deploying the components of your technology stack, providing Riak KV in-product, NoSQL databases, caching, real-time analytics, and search. These features are required in order to run distributed active workloads across applications; BDP controls the replication and synchronization of data between components while also providing cluster management.
<ul>
<li>Basho Data Platform (BDP) builds on Riak KV (Riak) to support your data-centric services. Ensure your application is highly available and scalable by leveraging BDP features such as:
<ul>
<li>Data replication &amp; synchronization between components</li>
<li>Real-time analytics through Apache Spark integration</li>
<li>Cluster management</li>
<li>Caching with Redis for rapid performance <em>(Enterprise only)</em></li>
</ul>
</li>
<li><a href="https://github.com/basho/data_platform_core" rel="noopener nofollow ugc"><strong>Data Platform Core</strong></a> is the additive component to Riak KV, colloquially called <a href="http://docs.basho.com/dataplatform/1.0.0/learn/service-manager/" rel="noopener nofollow ugc">“the Service Manager”</a>, that enables Riak to run supervised 3rd party applications on a Riak+BDP cluster. More generally, it can be thought of an application executor and watcher, that provides service configuration meta-data exchange in a distributed, scalable, fault-tolerant method. The service manager is the foundation of the Basho Data Platform. It provides a means for building a cluster of nodes that can deploy, run, and manage platform services.</li>
<li><a href="http://docs.basho.com/dataplatform/1.0.0/learn/cache-proxy/" rel="noopener nofollow ugc"><strong>Cache Proxy <em>(Enterprise-only)</em></strong></a> service uses Redis and Riak KV to provide pre-sharding and connection aggregation for your data platform cluster, which reduces latency and increases addressable cache memory space with lower cost hardware. Cache proxy has the following components:
<ul>
<li>Pre-sharding</li>
<li>Connection Aggregation</li>
<li>Command Pipelining</li>
<li>Read-through Cache</li>
</ul>
</li>
<li><a href="http://docs.basho.com/dataplatform/1.0.0/learn/leader-election-service/" rel="noopener nofollow ugc"><strong>Leader Election <em>(Enterprise-only)</em></strong></a> service enables Spark clusters to run without a ZooKeeper instance. The Leader Election Service uses a simple, line-based, ascii protocol to interact with Spark. This protocol is incompatible with the ZooKeeper protocol, and requires a BDP-specific patch to Spark for compatibility purposes.</li>
<li><a href="http://docs.basho.com/dataplatform/1.0.0/learn/spark-cluster-manager/" rel="noopener nofollow ugc"><strong>Spark Cluster Manager <em>(Enterprise-only)</em></strong></a> provides all the functionality required for Spark Master high availability without the need to manage yet another software system (Zookeeper).This reduces operational complexity of Basho Data Platform (BDP).</li>
</ul>
</li>
</ul>
<h2><a name="p-19496-other-3" class="anchor" href="#p-19496-other-3" aria-label="Heading link" rel="nofollow"></a>Other</h2>
<ul>
<li><a href="https://github.com/ParaPhrase/skel" rel="noopener nofollow ugc"><strong>Skel</strong></a> is a streaming process-based skeleton library for Erlang. <a href="https://chrisb.host.cs.st-andrews.ac.uk/skel-test-master/tutorial/bin/tutorial.html" rel="noopener nofollow ugc">(Tutorial)</a>
<ul>
<li>Skel is a library produced as part of the Paraphrase project to assist in the introduction of parallelism for Erlang programs. It is a collection of algorithmic skeletons, a structured set of common patterns of parallelism, that may be used and customised for a range of different situations.</li>
<li>Workflow Items
<ul>
<li>A Recurring Example</li>
<li>Sequential Function</li>
<li>Pipe Skeleton</li>
<li>Farm Skeleton</li>
<li>Ord Skeleton</li>
<li>Reduce Skeleton</li>
<li>Map Skeleton</li>
<li>Feedback Skeleton</li>
</ul>
</li>
</ul>
</li>
<li><a href="https://github.com/apache/couchdb" rel="noopener nofollow ugc"><strong>CouchDB</strong></a> is a document-oriented NoSQL database architecture and is implemented in Erlang; it uses JSON to store data, JavaScript as its query language using MapReduce, and HTTP for an API.</li>
<li><a href="https://github.com/seantanly/elixir-paratize" rel="noopener nofollow ugc"><strong>Paratize</strong></a> - Elixir library providing some handy parallel processing facilities that supports configuring number of workers and timeout.</li>
</ul> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="19496" data-batch-url="/posts/batch_likers">
                        5
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/big-data-with-elixir/154/43">Post #42</a>
	                </div>
	            </div>
              <div id="likers-container-19496" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="19496"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #42"></div>
  </section>
</div>
    <div class="postbit" id="19501" data-post-id="19501">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="jwarlander" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/jwarlander/120/1155_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  jwarlander
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<aside class="quote no-group" data-username="asierguti" data-post="36" data-topic="154">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/letter_avatar_proxy/v4/letter/a/4af34b/48.png" class="avatar"> asierguti:</div>
<blockquote>
<p>Yes, if you want to have full control over the CPU cycles, you can embed some assembly with SIMD instructions in your C or C++ code, but I don’t see anybody writing large scale software in assembly.</p>
</blockquote>
</aside>
<p>I’ll just put this out there:</p>
<aside class="onebox allowlistedgeneric" data-onebox-src="https://2ton.com.au/rwasa/">
  <header class="source">
      <img src="https://2ton.com.au/icon.png" class="site-icon" alt="" width="64" height="64">

      <a href="https://2ton.com.au/rwasa/" target="_blank" rel="noopener nofollow ugc">2ton.com.au</a>
  </header>

  <article class="onebox-body">
    <div class="aspect-image" style="--aspect-ratio:690/671;"><img src="https://2ton.com.au/images/oglogo.png" class="thumbnail" alt="" width="690" height="671"></div>

<h3><a href="https://2ton.com.au/rwasa/" target="_blank" rel="noopener nofollow ugc">rwasa | 2 Ton Digital</a></h3>



  </article>

  <div class="onebox-metadata">
    
    
  </div>

  <div style="clear: both"></div>
</aside>
 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="19501" data-batch-url="/posts/batch_likers">
                        3
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/big-data-with-elixir/154/44">Post #43</a>
	                </div>
	            </div>
              <div id="likers-container-19501" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="19501"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #43"></div>
  </section>
</div>
    <div class="postbit" id="24561" data-post-id="24561">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="dmoc" src="/assets/icons/user-9f439610.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  dmoc
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Given the inherent size of Big Data operations I think it will be very difficult to get organisations to adopt alternative technologies without an extremely good business case. Still, interesting thread and thanks for the effort.</p>
<p>Some other sw you might find interesting, maybe for “Not So Big-Data” ™ projects, <a href="https://nifi.apache.org/" rel="noopener nofollow ugc">Apache NiFi</a> and <a href="https://zeppelin.apache.org/" rel="noopener nofollow ugc">Apache Zeppelin</a>.</p>
<p>I’m only half joking with “Not So Big-Data” tag because all the focus (generally and for $$$ obviously) is on the enterprise level. “Big Data” used to be a relative term and I think there’s still a lot of scope for providing tooling for the segment between Desktop…SME, without them having to jump straight to enterprise level solutions.</p>
<p>Question (from someone with little practical FP): I see “immutability” cropping up a lot regarding raw data processing speed and discussions typical end with fact the Beam doesn’t and possibly never will support mutable buffers. As someone pointed out, pick any language and it’s a good bet that it relies on some well established libs. So the question: what’s wrong with the idea of splitting a pipeline into immutable/mutable stages, implementing the latter in whatever is best/convenient and hooking everything up via unix pipes? Is this method slow or inflexible? Are there any benchmarks, guidelines, etc, for alternative methods?</p>
<p>(edit) PS: I understand there are a few scenarios where you would want to edit data in-place but, guessing, there are a lot more where the transformed data is going to copied elsewhere eventually.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="24561" data-batch-url="/posts/batch_likers">
                        2
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/big-data-with-elixir/154/45">Post #44</a>
	                </div>
	            </div>
              <div id="likers-container-24561" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="24561"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #44"></div>
  </section>
</div>
    <div class="postbit" id="24936" data-post-id="24936">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="dmitriid" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/dmitriid/120/13182_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  dmitriid
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>I’ve mentioned this before: <a href="https://medium.com/@dmitriid/erlang-is-dead-long-live-e-885ccbcbc01f#.fyc9oiwv2" rel="noopener nofollow ugc">https://medium.com/@dmitriid/erlang-is-dead-long-live-e-885ccbcbc01f#.fyc9oiwv2</a></p>
<p>But I’ll mention this again: Java is becoming Erlang much faster than Erlang is becoming Java.</p>
<p>The following are illusions of grandeur that have no place in the real world:</p>
<ul>
<li><em>“Erlang/OTP being more well-suited for the task”</em></li>
<li><em>“I still have the feeling that Elixir could kill in all these areas”</em></li>
<li><em>“it seems that way because OTP has mostly solved the big and distributed part of the problem.”</em></li>
<li><em>“Java is not the most suitable language”</em></li>
<li><em>“Erlang or Elixir, which provides much more than what Hadoop of Spark gives you (fault tolerance distributed system with native map reduce)”</em></li>
<li>etc.</li>
</ul>
<p>It’s one thing two spawn a million green threads on your laptop. It’a different thing running a couple of thousand of distributed nodes with multiple tasks per node, spread across several data centres.</p>
<p>Guess what, Erlang/OTP is as suited for this task as Java: it’s not. Erlang was never designed to handle thousands of nodes in heterogenous environments. There are multiple known limitations of its distribution protocol. There’s a reason <a href="http://release-project.eu" rel="noopener nofollow ugc">RELEASE</a> exists.</p>
<p>However, Java provides established libraries and approaches that solve these problems. It might not be easy, but definitely not writing everything from scratch (or relying on Basho’s <code>riak_*</code> libraries).</p>
<p>Distribution? Distributed storage? Distributed databases? Streaming? Distributed map-reduce? Real-time analytics on streams?</p>
<p>All these problems have been solved multiple times over in other languages (primarily Java). Or they have been solved by AWS (stream your data into Kinesis/Kinesis Firehose, analyse in real time with Kinesis Analytics, dump into RDS for warehousing). Aaaand to use AWS you’ll undoubtedly use Python or Java, not Erlang.</p>
<p>There are multiple reasons for that, obviously. The main is, definitely, that Java (Python or whatever else) are just so much popular than Erlang.</p>
<p>The other important on is: Erlang has too long prided itself on being oh so much superior to other languages in anything that comes to parallel and distributed computing. So long that it completely missed other languages marching on and improving in the same areas. If not on a language level, then on library and infrastructure level.</p>
<p>So, the reality of today is the following. Unless someone is smart enough and has enough resources to build a library/infrastructure on par with other languages (a new Kafka/Hadoop/Kubernetes/Cassandra/Spark/Fink/…the list just goes on and on and on, doesn’t it?..), the only way to deal with BigData in Erlang/Elixir is to write a proper library to interface with any of these systems. Anything else is just illusions of grandeur.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="24936" data-batch-url="/posts/batch_likers">
                        6
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/big-data-with-elixir/154/46">Post #45</a>
	                </div>
	            </div>
              <div id="likers-container-24936" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="24936"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #45"></div>
  </section>
</div>
    <div class="postbit" id="24939" data-post-id="24939">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="josevalim" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/josevalim/120/1787_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  josevalim
                  </h3>
		          </div>
						
			          <div class="user-title">
									<span>Creator of Elixir</span>
			          </div>
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<aside class="quote no-group" data-username="dmitriid" data-post="46" data-topic="154">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/dmitriid/48/13182_2.png" class="avatar"> dmitriid:</div>
<blockquote>
<p>But I’ll mention this again: Java is becoming Erlang much faster than Erlang is becoming Java.</p>
</blockquote>
</aside>
<p>This is a very bad attempt to grab the headlines. <img src="https://forum.elixirforum.com/images/emoji/apple/slight_smile.png?v=15" title=":slight_smile:" class="emoji" alt=":slight_smile:" loading="lazy" width="20" height="20"> Java is not becoming Erlang, rather Java has a more complete ecosystem than Erlang/Elixir, which is not news for anybody.</p>
<p>And this is not a zero sum game. I have seen companies running hundreds of “heterogenous” Erlang nodes by using RabbitMQ or Apache Kafka for the communication. In my opinion, the part that Erlang shines is exactly in building a homogenous sub-system that runs on my infrastructure. It is an absolute pleasure to build a distributed pubsub system for websockets communication or something like Phoenix.Presence without a need to bring in third party tools. Then it can integrate with the rest of the system using thrift, a message queue, etc.</p>
<p>In the worst scenario, where you cannot rely on the Erlang distribution, then you have to pick up an off the shelf solution, as you would in any other language. And as the Erlang/Elixir communities grow, the quality of the packages that interface with those off-the-shelf brands will continue to improve.</p>
<aside class="quote no-group" data-username="dmitriid" data-post="46" data-topic="154">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/dmitriid/48/13182_2.png" class="avatar"> dmitriid:</div>
<blockquote>
<p>Erlang has too long prided itself on being oh so much superior to other languages in anything that comes to parallel and distributed computing</p>
</blockquote>
</aside>
<p>I truly hope this is fading away because it is easy to point out that parallel, concurrency and distributed computing have so many branches that there will be no single platform or ecosystem that can effectively tackle all options. Yes, you will end-up mixing technologies. However, I do hope we will continue to improve on our side of things.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="24939" data-batch-url="/posts/batch_likers">
                        22
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/big-data-with-elixir/154/47">Post #46</a>
	                </div>
	            </div>
              <div id="likers-container-24939" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="24939"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-most-liked cat-most-liked" title="One of the top 3 liked posts in this thread!"></div>
  </section>
</div>
    <div class="postbit" id="24965" data-post-id="24965">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="bbense" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/bbense/120/1074_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  bbense
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>FWIW, Mesosphere has done a lot of work on the Erlang at scale problem.</p>
<p><a href="https://github.com/dcos/lashup" class="onebox" target="_blank" rel="noopener nofollow ugc">https://github.com/dcos/lashup</a></p>
<p>In my experience, one of the strengths of Erlang/Elixir is that you can turn “big data” problems into medium data ones that actually work in a much smaller hardware footprint.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="24965" data-batch-url="/posts/batch_likers">
                        2
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/big-data-with-elixir/154/48">Post #47</a>
	                </div>
	            </div>
              <div id="likers-container-24965" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="24965"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #47"></div>
  </section>
</div>
    <div class="postbit" id="25016" data-post-id="25016">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="ssagaert" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/ssagaert/120/12848_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  ssagaert
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>It’s not just Java. Scala is pretty popular within the big data/data science niche. Especially if you work with Spark since it’s written in Scala and hence the Scala API the actual ‘native’ Spark API.</p>
<p>There’s also Clojure that has some popularity within the data science community.</p>
<p>Unsurprisingly both these languages support functional programming.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="25016" data-batch-url="/posts/batch_likers">
                        2
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/big-data-with-elixir/154/49">Post #48</a>
	                </div>
	            </div>
              <div id="likers-container-25016" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="25016"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #48"></div>
  </section>
</div>
    <div class="postbit" id="25194" data-post-id="25194">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="krapans" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/krapans/120/3866_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  krapans
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Have someone of you used Elixir for data mining? I have a case, where I have lots of data logs, lots of user input data, how they reacted to different user scenarios and would like to start playing around with that and get out maybe some useful insights using data mining.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="25194" data-batch-url="/posts/batch_likers">
                        3
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/big-data-with-elixir/154/50">Post #49</a>
	                </div>
	            </div>
              <div id="likers-container-25194" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="25194"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #49"></div>
  </section>
</div>
    <div class="postbit" id="31757" data-post-id="31757">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="petermorrow" src="/assets/icons/user-9f439610.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  petermorrow
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>What about a project that isn’t quite a “Big Data” project? Rather a <em>Medium Data</em> project - if you will.</p>
<p>Like an ETL / Data Warehousing project that required data to be collected from a dozen data sources that in total are not quite in PB territory. With Elixir it would be fairly straightforward to write an app that queries and processes the data sources concurrently.  There would certainly be some number crunching involved but nothing at a scale that justifies building a Hadoop cluster.</p>
<p>Would the issues discussed on here about Elixir/Erlang’s weak spots in the number crunching arena be problematic at this “Medium Data” scale?</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="31757" data-batch-url="/posts/batch_likers">
                        0
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/big-data-with-elixir/154/51">Post #50</a>
	                </div>
	            </div>
              <div id="likers-container-31757" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="31757"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #50"></div>
  </section>
</div>
</template></turbo-stream><turbo-stream action="replace" target="load-more-container"><template><div id="load-more-container" class="load-more-container">
    <a class="load-more-button" data-turbo-stream="true" href="/topics/154/load_more?page=6">Load more posts (9 remaining)</a>
</div></template></turbo-stream>