草庐IT

并行机

全部标签

scala - Spark 作业未在本地并行化(使用本地文件系统中的 Parquet + Avro)

编辑2通过将RDD重新分区为8个分区间接解决了问题。遇到avro对象不是“javaserialisable”的障碍,找到了一个片段heretodelegateavroserialisationtokryo.原来的问题依然存在。编辑1:删除了map函数中的局部变量引用我正在编写一个驱动程序,使用parquet和avroforio/schema在spark上运行计算繁重的作业。我似乎无法得到Spark来使用我所有的核心。我究竟做错了什么?是因为我已将键设置为null吗?我刚刚开始了解hadoop如何组织文件。据我所知,因为我的文件有1GB的原始数据,我应该期望看到与默认block和页面大小

java - 将数据并行加载到 hdfs

我有一个由3个节点组成的Hadoop集群。我想尽快将一个180GB的文件加载到HDFS中。我知道-put和-copyFromLocal都不会在这方面帮助我,因为它们是单线程的。我在考虑Map/Reduce。有没有办法将加载过程分发给节点本身。所以每个节点都会加载文件的一部分,比如每个60GB。我不想从每个节点手动执行此操作(这违背了目的)。如果有办法使用Java和Map/Reduce来做到这一点,我很乐意阅读它。我知道Hadoop可以处理通配符输入文件。假设每个60GBblock的名称如下:file_1、file_2、file_3..然后我可以将file_*用于我的下一个MR作业。我遇

hadoop - 如何使用 Dask 在 yarn 上运行并行化的 python 作业?

我有几个关于将Dask与Hadoop/Yarn结合使用的问题。1)如何将Dask连接到Hadoop/YARN并并行化作业?当我尝试使用时:fromdask.distributedimportClientclient=Client('Mynamenode:50070')它导致错误:CommClosedError:in:Streamisclosed:whiletryingtocallremotemethod'identity'我应该传递名称节点或数据节点的地址吗?我可以改用Zookeeper吗?2)如何使用Dask和HDFS3从HDFS读取数据?当我尝试使用以下方式读取文件时:import

hadoop - 如何在 hadoop distributbuion 0.20.0 中并行运行 hadoop 作业

我头疼了好久,目前我的hadoop集群是这样的,我有40个salve节点要运行,每个slave节点我配置25个mappers10个reducer,所以最多可以启动40*25=1000个mappers和400个reducer同时。好的,现在我有以下工作:job1:我配置运行5个映射器和5个缩减器job2:我配置运行20个映射器和10个reducerjob3:我配置运行975个映射器和385个reducer假设我使用默认的FIFO作业调度,如果我连续提交3个映射器,这3个作业是否可以同时运行?从而最大限度地利用集群?目前我测试在mapper阶段,提交3个job后貌似可以启动1000个map

hadoop - Mapreduce 并行副本与 http 线程

我无法了解以下2个mapreduce作业配置属性之间的差异。mapreduce.reduce.shuffle.parallelcopiesmapreduce.tasktracker.http.threadsmapreduce.reduce.shuffle.parallelcopies是在复制(洗牌)阶段由reduce运行的并行传输的数量。mapreduce.tasktracker.http.threads是http服务器的工作线程数。这用于map输出获取。parallelcopies表示并行传输的数量,我猜它指的是一次将map输出并行传输到reducer。httpthreads表示要在

hadoop - Spark/Hadoop 作业未并行运行

我想我遇到了初学者错误,但我真的不知道如何修复它,这让我抓狂。我有一个由2台机器组成的集群:8GB内存(6.9可用),4核,Win10:运行一个主机,一个工作机,它也是我运行java驱动程序的机器(来自IntelliJ)2GBRAM(1.3可用),4核,VM上的Ubuntu16.04(在VBox中运行):运行一个worker我有一个网络类,我想通过从具有单个网络的列表开始,然后使用平面图将每个网络转换为N个新网络,在for循环中生成网络。之后我有一个过滤器和一个计数。步骤:JavaSparkContextsc=newJavaSparkContext(conf);Listdata=Arr

hadoop - 如何确定并行映射器/缩减器的数量以及堆内存?

假设我有一个在11节点集群上运行的EMR作业:m1.small主节点和10个m1.xlarge从节点。现在一个m1.xlarge节点有15GB的RAM。然后如何确定可以设置的并行映射器和缩减器的数量?我的工作是内存密集型的,我希望有越来越多的堆分配给JVM。另一个相关问题:如果我们设置以下参数:mapred.child.java.opts-Xmx4096mmapred.job.reuse.jvm.num.tasks1mapred.tasktracker.map.tasks.maximum2mapred.tasktracker.reduce.tasks.maximum2那么这4GB是由4

java - Hadoop MapReduce - 如何提高并行度

我遇到了一个问题。我有一个包含机场和航类信息的数据集(CSV文件),例如机场代码、航类代码、航类到达日期和时间、航类应该到达的日期和时间等。现在,我有数据集只有两年-2006年和2007年。我正在使用javamapreduceAPI作为解决方案。我必须找出两年内每个机场的平均航类延迟,并将输出存储在两个单独的文件中-一个用于2006年,另一个用于2007年。输出还应按airportCode排序。我的方法是这样的:FullDataset->map()->->customPartitionertopartitiononlybyyear->reduce((year,airportCode),

java - Hadoop:当我们使用 NLineInputFormat 时,Mappers 是否并行运行?

如果是,HDFS如何将输入文件拆分为N行以供每个映射器读取?我相信这是不可能的!当拆分器需要偏移量或字节进行拆分时,可以在不处理整个输入文件的情况下进行拆分。但是当'\n'或换行符的数量很重要时,在拆分之前有必要处理总输入文件(以计算换行符)。 最佳答案 要使NLineInputFormat正常工作,每个拆分都需要知道第xN行的起始位置。正如您在对Tariq的回答的评论中指出的那样,映射器不能只知道第3行(香蕉从哪里开始),它会从map的InputSplit获取此信息。这实际上是在输入格式的getSplitsForFile方法中处理

python - 这是可并行化的吗?

我有一个巨大的制表符分隔文件。(10,000个受试者作为行,>100万个测定作为列)。我有一个映射文件,其中包含与100万列中的每一列相关的信息。我需要针对每个受试者、每个检测(每个细胞)查看映射文件并为其获取一些值并替换现有值。在Python或Perl中,我必须通读每一行,将其拆分并在映射文件中查找每个单元格。在R中,我可以一次读取每一列,并从映射文件中获取所有行的信息。无论哪种方式,遍历每一行或每一列的整个过程都会占用大量时间,因为每个单元格查找都需要完成。有什么方法可以并行化吗?如果我想将其并行化并使其运行得更快,我应该如何思考?此外,我有兴趣了解如何以map/reduce方式处