giraph实现hadoop-4-profiles大图演算

6tr1vspr  于 2021-06-01  发布在  Hadoop
关注(0)|答案(0)|浏览(156)

在我的计算机科学硕士论文中,我成功地实现了四阶微积分(https://arxiv.org/abs/1510.02215)使用giraph-1.3.0-snapshot(使用-phadoop\u yarn profile编译)和hadoop-2.8.4。
我在amazonec2上使用t2.2xlarge(32gb,8cpu)示例配置了一个由1个namenode和5个datanode组成的集群,并使用中/小维的输入图获得了这里描述的结果。
如果我试图给我的giraph程序输入更大的输入图(例如http://snap.stanford.edu/data/web-notredame.html)在某些情况下,我获得了许多与netty相关的错误,Yarn应用程序失败,在其他情况下,yarn应用程序保持在未定义的运行状态(然后我终止了它,而不是等待默认超时),而没有明显的错误。我也尝试过使用m5.4xlagle(64gb,16cpu),但也遇到了同样的问题。我在这里报告了第一个病例的日志错误:
粘贴在此处的datanodes上的giraph worker错误日志:https://pastebin.com/cghud0za (所有数据节点中的错误相同)
giraph master的错误日志粘贴在此处:https://pastebin.com/jxyn6y4l
我很确定错误与ec2示例内存不足无关,因为在日志中我总是看到这样的消息“(free/total/max)=23038.28m/27232.00m/27232.00m”。请帮助我,因为我的硕士论文被这个问题挡住了:-(
这是我用来运行giraph的命令的一个例子,您能检查一下我使用的参数是否正确吗?任何其他调整将不胜感激!

giraph 4Profiles-0.0.1-SNAPSHOT.jar it.uniroma1.di.fourprofiles.worker.superstep0.gas1.Worker_Superstep0_GAS1 
-ca giraph.numComputeThreads=8 // Since t2.2xlarge has 8 CORES, is it correct to set these parameters to 8? 
-ca giraph.numInputThreads=8 
-ca giraph.numOutputThreads=8 

-w 8 // I set 8 workers since:
     // - 5 datanodes on EC2"
     // - every datanode configured for max 2 containers in order to reduce messages between datanodes
     // - 2 containers are reserved for application master and giraph master
     // - (5 datanodes * 2 max containers) - 2 reserved = 8 workers
     // Is it correct as reasoning?

-yh 15360 // I set 15360 since it corresponds to 
          // - yarn.scheduler.minimum-allocation-mb property in yarn-site.xml
          // - mapreduce.map.memory.mb property in mapred-site.xml
          // Is it correct as reasoning?

-ca giraph.pure.yarn.job=true 
-mc it.uniroma1.di.fourprofiles.master.Master_FourProfiles 
-ca io.edge.reverse.duplicator=true 
-eif it.uniroma1.di.fourprofiles.io.format.IntEdgeData_TextEdgeInputFormat_ReverseEdgeDuplicator 
-eip INPUT_GRAPHS/HU_edges.txt-processed 
-vof org.apache.giraph.io.formats.IdWithValueTextOutputFormat 
-op output 
-ca giraph.SplitMasterWorker=true 
-ca giraph.messageCombinerClass=it.uniroma1.di.fourprofiles.worker.msgcombiner.Worker_MsgCombiner 
-ca giraph.master.observers=it.uniroma1.di.fourprofiles.master.observer.Observer_FourProfiles 
-ca giraph.metrics.enable=true 
-ca giraph.useInputSplitLocality=false 
-ca giraph.useBigDataIOForMessages=true 
-ca giraph.useMessageSizeEncoding=true 
-ca giraph.oneToAllMsgSending=true 
-ca giraph.isStaticGraph=true

此外,我试图使用以下netty参数,但我没有解决问题。如果我遗漏了一些重要的参数或者我用错了,你能帮我吗?我尝试用一个简单的公式nettyfactor*defaultvalue来概括传递给netty参数的值,其中nettyfactor可以是1,2,3(通过shell参数传递)

-ca giraph.nettyAutoRead=true 
-ca giraph.channelsPerServer=$((nettyFactor*1)) 
-ca giraph.nettyClientThreads=$((nettyFactor*4)) 
-ca giraph.nettyClientExecutionThreads=$((nettyFactor*8)) 
-ca giraph.nettyServerThreads=$((nettyFactor*16)) 
-ca giraph.nettyServerExecutionThreads=$((nettyFactor*8)) 
-ca giraph.clientSendBufferSize=$((nettyFactor*524288)) 
-ca giraph.clientReceiveBufferSize=$((nettyFactor*32768)) 
-ca giraph.serverSendBufferSize=$((nettyFactor*32768)) 
-ca giraph.serverReceiveBufferSize=$((nettyFactor*524288)) 
-ca giraph.vertexRequestSize=$((nettyFactor*524288)) 
-ca giraph.edgeRequestSize=$((nettyFactor*524288)) 
-ca giraph.msgRequestSize=$((nettyFactor*524288)) 
-ca giraph.nettyRequestEncoderBufferSize=$((nettyFactor*32768))

... 我还有其他问题:1)这是我的hadoop配置。请检查一下,但我确信那是正确的。我只有一个问题:既然giraph不使用“reduce”,那么在mapred-site.xml中将0 mb分配给mapreduce.reduce.memory.mb是否正确?
2) 为了避免classnotfoundexception错误,我将giraph应用程序的jar和所有giraph jar从$giraph\u home和$giraph\u home/lib复制到$hadoop\u home/share/hadoop/yarn/lib。有更好的解决办法吗?
3) 最后但并非最不重要的一点:在这里您可以找到我的giraph程序的完整hadoop/yarn日志,如下图http://snap.stanford.edu/data/web-notredame.html 作为输入。在这种情况下,Yarn应用程序将在未定义的运行状态下运行。

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题