标签: distributed-computing

共享内存与分布式内存和多线程与多进程

我正在学习并行编程.我想知道分布式内存是否总是多进程,多线程总是共享内存?如果多进程可以用于分布式内存和共享内存?感谢致敬!

parallel-processing distributed-computing shared-memory

4
推荐指数
1
解决办法
1万
查看次数

在单节点群集上运行Hadoop示例时出错

我正在运行hadoop提供的单词计数示例.以下是我得到的错误:

-bash-4.1$ ./hadoop jar /home/chanders/Hadoop/bin/hadoop-examples-0.20.203.0.jar wordcount /usr/temp_hadoop /usr/output
Warning: Maximum heap size rounded up to 1024 MB
Warning: Maximum heap size rounded up to 1024 MB
Exception in thread "main" java.io.IOException: Error opening job jar: /home/chanders/Hadoop/bin/hadoop-examples-0.20.203.0.jar
    at org.apache.hadoop.util.RunJar.main(RunJar.java:90)
Caused by: java.util.zip.ZipException: error in opening zip file
    at java.util.zip.ZipFile.open(Native Method)
    at java.util.zip.ZipFile.<init>(ZipFile.java:129)
    at java.util.jar.JarFile.<init>(JarFile.java:141)
    at java.util.jar.JarFile.<init>(JarFile.java:78)
    at org.apache.hadoop.util.RunJar.main(RunJar.java:88)
-bash-4.1$ ^C
-bash-4.1$ ./hadoop jar /home/chanders/Hadoop/bin/hadoop*examples*.jar wordcount /usr/temp_hadoop /usr/output
Warning: Maximum heap size rounded up to 1024 MB
Warning: Maximum heap size rounded …
Run Code Online (Sandbox Code Playgroud)

hadoop mapreduce distributed-computing

4
推荐指数
1
解决办法
1万
查看次数

Erlang:对数组进行分布式工作

我正在开发一个项目,我们有一个原子数组作为哈希.每当用户连接到服务器时,都会对某个值进行哈希处理,并将该哈希值用作查找数组中元素的索引,并返回该元素."外部力量"(由长时间运行的gen_server处理)能够更改此数组,因此我不能简单地对其进行硬编码.我的问题是如何"托管"这个数组.

我的第一个实现是一个简单的gen_server,它保存了一个数组的副本并将其发送给任何要求它的人.然后,请求它的过程可以遍历它并获得他们想要的索引.这个实现有大量的内存被使用,我归结为这个相同的数组有很多副本浮动.

我当前的实现有一个中央gen_server来处理这个数组的状态,以及处理实际请求的子节点.当状态改变时,中央gen_server更新子节点.当进程想要找到它的哈希结果时,它会将其索引号发送到中央gen_server,后者将请求转发给其中一个子进程.子进程遍历其"本地"列表,并将生成的原子发送回原始进程.

当前实施的问题在于它在高流量时陷入困境.我已经尝试过越来越多的孩子,但我很确定中央gen_server是瓶颈.

有没有人对我的问题有更好的解决方案?

编辑:%s/array/list/g

arrays erlang distributed-computing

4
推荐指数
1
解决办法
679
查看次数

MPI标准和Map-Reduce编程模型之间的比较?

正如我所学的,各种并行范例标准的基础知识,例如OpenMP,MPI,OpenCL,可以编写并行程序。但是我对Map-Reduce编程模型不了解很多。

众所周知,各种流行的公司都在遵循Map-Reduce编程模型来解决其庞大的数据密集型任务。MPI和MPI都是为大型并行计算机和工作站群集上的高性能计算而设计的。

所以我的第一个困惑是..我可以使用Map-Reduce模型代替MPI标准吗?反之亦然?还是取决于应用!

它们之间的确切区别是什么?

Which one is better and when?
Run Code Online (Sandbox Code Playgroud)

cloud mapreduce distributed-computing mpi

4
推荐指数
1
解决办法
1461
查看次数

设计模式监控分布式系统?

我有一个分布式系统:12个应用程序在10个盒子上运行(每个盒子有大约8个核心).我的应用程序是多线程的.

在一天中,我的应用程序非常繁忙.延迟对我的工作至关重要.

鉴于这种情况,我有一个新的额外要求,我必须监视分布在这些应用程序中的一堆内存对象并生成一些报告(可能是网页或文本文件无关紧要).

我正在寻找与监测工作相关的设计模式.困扰我的是,我不应该通过某些监视/观察者线程做任何令人讨厌的事情来引入任何延迟.如果它有所帮助,我现在主要是C++,所以像共享内存等低级别的东西肯定在桌面上.

design-patterns distributed-computing

4
推荐指数
1
解决办法
1821
查看次数

使用Airbnb Chronos REST API调度自定义mesos执行程序

Chronos的网站提到的Chronos支持自定义Mesos执行人.Mesos示例显示如何编写自定义Mesos执行程序(master/src/examples/java/TestExecutor.java).但是,我无法找到有关如何通过Chronos RET API安排此类自定义执行程序的任何文档.任何关于此的帮助或指示将不胜感激.

提前致谢.

distributed-computing job-scheduling mesos

4
推荐指数
1
解决办法
2468
查看次数

Kafka使用者 - 消费者进程和线程与主题分区的关系是什么

我最近一直在与卡夫卡合作,对消费者群体下的消费者有点困惑.混淆的中心是将消费者实现为流程还是线程.对于这个问题,假设我正在使用高级消费者.

让我们考虑一下我尝试过的场景.在我的主题中有2个分区(为简单起见,我们假设复制因子只有1).我创建了一个消费者(ConsumerConnector)过程consumer1与组group1,然后创建尺寸2的主题计数地图,然后产生了2个消费者线程consumer1_thread1consumer1_thread2该过程下.它看起来像consumer1_thread1正在消耗分区0并且consumer1_thread2正在消耗分区1.这种行为总是确定的吗?以下是代码段.Class TestConsumer是我的消费者线程类.

    ...
    Map<String, Integer> topicCountMap = new HashMap<String, Integer>();
    topicCountMap.put(topic, new Integer(2));
    Map<String, List<KafkaStream<byte[], byte[]>>> consumerMap = consumer.createMessageStreams(topicCountMap);
    List<KafkaStream<byte[], byte[]>> streams = consumerMap.get(topic);

    executor = Executors.newFixedThreadPool(2);

    int threadNumber = 0;
    for (final KafkaStream stream : streams) {
        executor.submit(new TestConsumer(stream, threadNumber));
        threadNumber++;
    }
    ...
Run Code Online (Sandbox Code Playgroud)

现在,让我们考虑另一个场景(我没有尝试但很好奇),我开始2个消费者进程consumer1,consumer2两个都有相同的组group1,每个都是一个单线程进程.现在我的问题是:

  1. 在这种情况下,两个独立的消费者流程(在同一群组下)如何与分区相关联?它与上述单进程多线程场景有何不同?

  2. 通常,消费者线程或进程如何映射/与主题中的分区相关?

  3. Kafka文档确实说消费者组下的每个消费者将使用一个分区.但是,这是指消费者线程(如我上面的代码示例)还是独立的消费者流程?

  4. 关于将消费者作为流程与线程实现,我在这里缺少任何微妙的东西吗?提前致谢.

java multithreading distributed-computing apache-kafka kafka-consumer-api

4
推荐指数
1
解决办法
7842
查看次数

PyCOMPSs应用程序中的奇怪错误:没有找到最后"y"的脚本

我试图运行版本1.4的示例pyCOMPSs应用程序之一,我收到以下错误,表示没有找到最终"y"的python脚本.你知道错误是什么吗?

xxx:~/xxx_xx/python/increment> runcompss --lang=python increment.py 3 1 2 3 
Using default location for project file:

 /opt/COMPSs/Runtime/scripts/user/../../configuration/xml/projects/project.xml
Using default location for resources file: /opt/COMPSs/Runtime/scripts/user/../../configuration/xml/resources/resources.xml

----------------- Executing increment.py --------------------------

WARNING: IT Properties file is null. Setting default values
[(0)    API]  -  Deploying COMPSs Runtime v1.4 (build 20160725-0937.r2315)
[(2)    API]  -  Starting COMPSs Runtime v1.4 (build 20160725-0937.r2315)
Traceback (most recent call last):
  File "/opt/COMPSs/Runtime/scripts/user/../../../Bindings/python/pycompss/runtime/launch.py", line 85, in <module>
    execfile(app_path)    # MAIN EXECUTION
  File "increment.py", line 92, in <module>
    @task(filePath = FILE_INOUT)
  File "/opt/COMPSs/Bindings/python/pycompss/api/task.py", …
Run Code Online (Sandbox Code Playgroud)

python hpc distributed-computing compss pycompss

4
推荐指数
1
解决办法
29
查看次数

作为spark作业提交时,Spark RDD映射中的NullPointerException

我们正在尝试提交一个火花工作(火花2.0,hadoop 2.7.2),但由于某种原因,我们在EMR中收到了相当神秘的NPE.一切都像scala程序一样运行,所以我们不确定是什么导致了这个问题.这是堆栈跟踪:

18:02:55,271 ERROR Utils:91 - 在org.apache.spark.sql.catalyst的org.apache.spark.sql.catalyst.expressions.GeneratedClass $ GeneratedIterator.agg_doAggregateWithKeys $(未知来源)中止任务java.lang.NullPointerException .expressions.GeneratedClass $ GeneratedIterator.processNext(未知来源)org.apache.spark.sql.execution.BufferedRowIterator.hasNext(BufferedRowIterator.java:43)org.apache.spark.sql.execution.WholeStageCodegenExec $$ anonfun $ 8 $ $ anon $ 1.hasNext(WholeStageCodegenExec.scala:370)at scala.collection.Iterator $$ anon $ 12.hasNext(Iterator.scala:438)at org.apache.spark.sql.execution.datasources.DefaultWriterContainer $$ anonfun $ writeRows $ 1.apply $ mcV $ sp(WriterContainer.scala:253)位于org.apache.spark的org.apache.spark.sql.execution.datasources.DefaultWriterContainer $$ anonfun $ writeRows $ 1.apply(WriterContainer.scala:252). sql.execution.datasources.DefaultWriterContainer $$ anonfun $ writeRows $ 1.apply(WriterContainer.scala:252)at org.apache.spark.util.Utils $ .tryWithSafeFinallyA ndFailureCallbacks(Utils.scala:1325)org.apache.spark.sql.execution.datasources.DefaultWriterContainer.writeRows(WriterContainer.scala:258)at org.apache.spark.sql.execution.datasources.InsertIntoHadoopFsRelationCommand $$ anonfun $ run $ 1 $$ anonfun $应用$ mcV $ sp $ 1.apply(InsertIntoHadoopFsRelationCommand.scala:143)在org.apache.spark.sql.execution.datasources.InsertIntoHadoopFsRelationCommand $$ anonfun $ run $ 1 $$ anonfun $ apply …

hadoop scala distributed-computing bigdata apache-spark

4
推荐指数
1
解决办法
3985
查看次数

使用MPI_Gather的MPI_Barrier使用小型和大型数据集大小?

我一直在使用MPI_Scatter/MPI_Gather进行各种并行计算.我注意到的一件事是MPI_Barrier()通常被称为同步处理器,类似于OpenMP屏障指令.我正在为一个项目调整我的代码并在下面注释掉我的MPI_Barrier()行,并发现计算仍然是正确的.为什么会这样?我可以理解为什么需要第一个MPI_Barrier() - 其他处理器不需要等待; 一旦他们从处理器MASTER获取数据,他们就可以开始计算.但MPI_arather之后是否需要MPI_Barrier,或者MPI_Gather内部是否已经存在隐含障碍?

编辑:在这种情况下,正在处理的数据的大小是否重要?

MPI_Scatter(&sendingbuffer,sendingcount,MPI_FLOAT,receivingbuffer,sendcount,
MPI_INT,MASTER_ID,MPI_COMM_WORLD);

// PERFORM SOME COMPUTATIONS
MPI_Barrier(); //<--- I understand why this is needed

MPI_Gather(localdata,sendcount, MPI_INT, global,sendcount, MPI_INT, MASTER_ID, MPI_COMM_WORLD);
//MPI_Barrier(); <------ is this ever needed?
Run Code Online (Sandbox Code Playgroud)

c synchronization distributed-computing mpi

4
推荐指数
1
解决办法
679
查看次数