Hadoop 如何控制哪些任务在哪些主机上运行?

Hadoop 如何控制哪些任务在哪些主机上运行?,hadoop,mapreduce,apache-zookeeper,giraph,Hadoop,Mapreduce,Apache Zookeeper,Giraph,我正在运行,它在由五台主机组成的小型Hadoop集群上执行(四个计算节点和一个头部节点,称它们为0-3和“w”)——请参见下面的版本。所有五台主机都在运行mapreduce tasktracker服务,“w”也在运行jobtracker。我的特定Giraph应用程序(一种路径查找)的资源非常紧张,我发现一些自动调度任务主机的配置比其他配置工作得更好 更具体地说,我的Giraph命令(见下文)指定了四个Giraph worker,在执行时,Hadoop(实际上是IIUC)创建了我可以在jobtra

我正在运行,它在由五台主机组成的小型Hadoop集群上执行(四个计算节点和一个头部节点,称它们为0-3和“w”)——请参见下面的版本。所有五台主机都在运行mapreduce tasktracker服务,“w”也在运行jobtracker。我的特定Giraph应用程序(一种路径查找)的资源非常紧张,我发现一些自动调度任务主机的配置比其他配置工作得更好

更具体地说,我的Giraph命令(见下文)指定了四个Giraph worker,在执行时,Hadoop(实际上是IIUC)创建了我可以在jobtracker web UI中看到的五个任务:一个主任务和四个从任务。当它将三个或三个以上的映射任务置于“w”(例如01WW或1wwww)上时,该主机会使ram、cpu和交换达到最大值,作业将挂起。但是,当系统更均匀地分配工作,使“w”只有两个或更少的任务(例如123ww或0321w)时,作业将正常完成

我的问题是,1)是什么程序决定了要主持的任务分配,2)我如何控制它

非常感谢

版本
  • CDH:4.7.3
  • Giraph:编译为“Giraph-1.0.0-for-hadoop-2.0.0-alpha”(变更日志从1.0.0-2013-04-15版开始)
  • Zookeeper客户端环境:Zookeeper.version=3.4.5-cdh4.4.0--1,构建于2013年4月9日01:46 GMT
吉拉夫司令部
嗨-那么“W”是头节点,而不是计算节点,对吗?你能告诉我你为什么要在那里运行任务跟踪器吗?@SSaikia_JtheRocker是的,“w”是头。在Cloudera中,我们设置它运行25个角色,包括JobTracker和TaskTracker,其中0-3只运行TaskTracker。有没有更好的方法来设置这个?当我们购买集群时,我们选择了一个“大”头节点来运行postgres,我认为这与其他集群不同,其他集群的头比计算节点薄。任何建议都很好。我可以理解“w”是一种功能强大的节点(用于postgres和您提到的所有节点),但我认为,如果您不打算将其用作datanode,并且仍然在那里运行tasktracker,那么从性能角度来看,它将不会有帮助。如果从那里删除tasktracker服务,请检查集群的性能是否更好(可能存在tasktracker(w)到datanode(0/1/2/3)的通信问题?但不确定)。无论如何,这只是我的想法,为什么你的'1wwww'挂起而'0321w'成功。我会尝试删除'w'的tasktracker-谢谢你的想法。
hadoop jar $GIRAPH_HOME/giraph-ex.jar org.apache.giraph.GiraphRunner \
-Dgiraph.zkList=wright.cs.umass.edu:2181 \
-libjars ${LIBJARS} \
relpath.RelPathVertex \
-wc relpath.RelPathWorkerContext \
-mc relpath.RelPathMasterCompute \
-vif relpath.JsonAdjacencyListVertexInputFormat \
-vip $REL_PATH_INPUT \
-of relpath.JsonAdjacencyListTextOutputFormat \
-op $REL_PATH_OUTPUT \
-ca RelPathVertex.path=$REL_PATH_PATH \
-w 4