2020 6.624 的 MapReduce


前言

做2020的6.824,刚刚开始了第一个实验,是MapReduce,这个实验难度(过测试)还行,前提是需要把要求理清楚。过程也是参考了网上好几个博客的,下面是我的solution


一、MapReduce

主要就是实现paper中提到的MapReduce
paper 地址

流程大概是这样的
流程


二、Master

1. 数据结构

Master只有有两个个数据结构, Master, Task
Task包含了Map的task跟Reduce的task,对于Map task,会有FileIndex,对于Reduce task,会有ReduceIndex

type Task struct {
	StartTime   time.Time
	TaskType    TaskType
	FileName    string
	FileIndex 	int
	ReduceIndex int
	State       TaskState
	ReduceNum   int
}

type FileMap map[string]int

type Master struct {
	// Your definitions here.
	files              FileMap
	UnstartedMapTask   ConcurrentList
	MapRunningTasks    ConcurrentList
	ReduceTasks        ConcurrentList
	ReduceRunningTasks ConcurrentList
	nReduce            int
	state              MasterState
}

const (
	MapTask    MasterState = 0
	ReduceTask MasterState = 1
	Finish     MasterState = 2
)

const (
	Assigned     TaskState = 1
	WorkerFinish TaskState = 2
)

const (
	Map    TaskType = 1
	Reduce TaskType = 2
	Close  TaskType = 3
)

我用的是List结构保存需要分配map task以及reduce task, List 可以选择泛型 interface{},但是考虑到只给这个实验使用,就限定了类型MapReduceItem,里面组合了name, Task, Master

type MapReduceItem struct {
	name   string
	task   *Task
	master *Master
}

type ConcurrentList struct {
	mu    sync.Mutex
	items []MapReduceItem
}

func (s *ConcurrentList) Add(item MapReduceItem) {
	s.mu.Lock()
	defer s.mu.Unlock()
	s.items = append(s.items, item)
}

func (s *ConcurrentList) GetLast() MapReduceItem {
	s.mu.Lock()
	defer s.mu.Unlock()
	item := s.items[len(s.items)-1]
	s.items = s.items[:len(s.items)-1]
	return item
}

func (s *ConcurrentList) Remove(name string) {
	s.mu.Lock()
	defer s.mu.Unlock()
	for i := 0; i < len(s.items); i++ {
		if s.items[i].name == name {
			s.items = append(s.items[:i], s.items[i+1:]...)
		}
	}
}

2.部分核心函数

Master 的调度函数,就是先分配MapTask,然后分配ReduceTask

//Return a task for the worker
func (m *Master) GetTask(args *NilArgs, reply *Task) error {

	//if master have map task to assign, return map task
	//if master have all map task assigned but NOT ALL map tasks are done, TODO
	//if all map tasks are done, assign reduce task

	if m.state == MapTask {
		reply = m.handleMapTask(reply)
	}

	if m.state == ReduceTask {
		m.handleReduceTask(reply)
	}

	//fmt.Println("GetTask return nil")
	return nil
}

handleMapTask

func (m *Master) handleMapTask(reply *Task) *Task {
	if m.UnstartedMapTask.Size() > 0 {
		popMapItem := m.UnstartedMapTask.Pop()
		*reply = Task{StartTime: time.Now(), TaskType: Map, FileName: popMapItem.name, State: Assigned, ReduceNum: m.nReduce, FileIndex: m.GetFileIndex(popMapItem.name)}
		m.MapRunningTasks.Add(MapReduceItem{name: reply.FileName, task: reply})
	} else if m.isMapTasksAssignedNotDone() == true {
		m.checkDeadTask(Map)
	} else if m.isMapTasksDone() == true {
		m.state = ReduceTask
	}
	return reply
}

handleReduceTask 类似

func (m *Master) handleReduceTask(reply *Task) {
	if m.ReduceTasks.Size() > 0 {
		popReduceItem := m.ReduceTasks.Pop()
		*reply = Task{StartTime: time.Now(), TaskType: Reduce, State: Assigned, ReduceNum: m.nReduce, FileIndex: m.GetReduceIndex(popReduceItem.name)}
		m.ReduceRunningTasks.Add(MapReduceItem{name: strconv.Itoa(reply.FileIndex), task: reply})
	} else if m.isReduceTasksAssignedNotDone() == true {
		m.checkDeadTask(Reduce)
	} else if m.isReduceTasksDone() == true {
		*reply = Task{TaskType: Close}
		m.state = Finish
	}
}

处理deadTask

func (m *Master) checkDeadTask(taskType TaskType) {
	switch taskType {
	case Map:
		m.checkMapTask()
		break
	case Reduce:
		m.checkReduceTask()
		break
	default:
		break
	}
}

处理Worker发过来的UpdateTask

func (m *Master) UpdateTask(task *Task, reply *NilReply) error {
	// update task: map
	// update task: reduce
	//fmt.Println("update task is called for task in master ", task.FileName)
	if task.TaskType == Map {
		if task.State == WorkerFinish {
			//fmt.Println("remove file ", task.FileName)
			m.MapRunningTasks.Remove(task.FileName)
		}
	}
	if task.TaskType == Reduce {
		if task.State == WorkerFinish {
			//fmt.Println("it is a reduce task for file name ", task.FileIndex)
			m.ReduceRunningTasks.Remove(strconv.Itoa(task.FileIndex))
		}
	}
	return nil
}

三、Worker

部分核心函数

向Mater发送task请求

func Worker(mapf func(string, string) []KeyValue, reducef func(string, []string) string) {
	for {
		task := CallGetTask()
		switch task.TaskType {
		case Map:
			doMap(mapf, task)
			break
		case Reduce:
			doReduce(reducef, task)
			break
		case Close:
			return
		}
	}
}

doMap, 其中文件读写比较复杂一些,我也是参考(复制粘贴)了网上的做法,当然Lab的文件也有相关提示,好好阅读Lab的要求以及提示

/*
* read input file from task.
* FileName pass it to Map accumulate the intermediate Map output.
 */
func doMap(mapf func(string, string) []KeyValue, task *Task) {
	constent := fileHandler(task.FileName)
	kva := mapf(task.FileName, constent)

	//prepare file for reduce task
	mapGroupName := prefix + strconv.Itoa(task.FileIndex)
	outFiles := make([]*os.File, task.ReduceNum)
	EncodeFile := make([]*json.Encoder, task.ReduceNum)

	for i := 0; i < task.ReduceNum; i++ {
		f, err := ioutil.TempFile("mr-tmp", "tmp")
		if err != nil {
			panic("fail to create temp file")
		}
		outFiles[i] = f
		EncodeFile[i] = json.NewEncoder(f)
	}

	//kva: all kv by map function
	for _, kv := range kva {
		index := ihash(kv.Key) % task.ReduceNum
		enc := EncodeFile[index]
		err := enc.Encode(&kv)
		if err != nil {
			fmt.Println("err is ", err)
			fmt.Println("File encode fail", kv)
			panic("fail encode")
		}
	}

	for i, file := range outFiles {
		outName := mapGroupName + hyphen + strconv.Itoa(i)
		oldpath := filepath.Join(file.Name())
		os.Rename(oldpath, outName)
		file.Close()
	}

	task.State = WorkerFinish
	CallUpdateTask(task)

doReduce,这个跟mrsequential 的做法就像了,直接把核心代码搬过来就行,不一样的就是系统的读写,需要把intermediate files读出来然后根据最后的数字决定生成文件的数字编号,比如mr-X-Y 最后生成就是mr-out-Y

func doReduce(reducef func(string, []string) string, task *Task) {
	// get relate intermediate
	// do reduce

	patternPrefix := "mr-tmp/mr-*-"
	pattern := patternPrefix + strconv.Itoa(task.FileIndex)
	fileList, err := filepath.Glob(pattern)
	if err != nil {
		fmt.Println("cannot read the dir")
	}

	intermediate := []KeyValue{}

	for _, fname := range fileList {
		//fmt.Printf("fname is %v\n", fname)
		file, err := os.Open(fname)
		if err != nil {
			fmt.Println("cannot read the dir")
		}
		dec := json.NewDecoder(file)
		for {
			var kv KeyValue
			if err = dec.Decode(&kv); err != nil {
				break
			}
			intermediate = append(intermediate, kv)
		}
	}

	sort.Sort(ByKey(intermediate))
	oname := "mr-out-" + strconv.Itoa(task.FileIndex)
	ofile, _ := os.Create(oname)
	i := 0
	for i < len(intermediate) {
		j := i + 1
		for j < len(intermediate) && intermediate[j].Key == intermediate[i].Key {
			j++
		}
		values := []string{}
		for k := i; k < j; k++ {
			values = append(values, intermediate[k].Value)
		}
		output := reducef(intermediate[i].Key, values)
		fmt.Fprintf(ofile, "%v %v\n", intermediate[i].Key, output)
		i = j
	}

	task.State = WorkerFinish
	CallUpdateTask(task)
}

总结

自己的solution还是有很多可以改善的地方的,代码有点冗余,其中一个像改进的地方就是想通过channel通信换掉自己实现的concurrentList,毕竟channel是Go的特点之一。总的来说MapReduce流程清楚了,代码部分不是太难写,Go还是很灵活的语言,但是没有了传统面向对象的特点,有时候方法实现起来还是有点不适应

┌────────────────────────────────────────────────────────────────────┐ │ • MobaXterm 10.9 • │ │ (SSH client, X-server and networking tools) │ │ │ │ ➤ SSH session to nly202409529125@192.168.232.134 │ │ • SSH compression : ✔ │ │ • SSH-browser : ✔ │ │ • X11-forwarding : ✔ (remote display is forwarded through SSH) │ │ • DISPLAY : ✔ (automatically set on remote server) │ │ │ │ ➤ For more info, ctrl+click on help or visit our website │ └────────────────────────────────────────────────────────────────────┘ Last login: Sat Jun 7 04:58:57 2025 from 192.168.232.1 [nly202409529125@nly01 ~]$ ifconfig ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 192.168.232.134 netmask 255.255.255.0 broadcast 192.168.232.255 inet6 fe80::18f2:1b9e:8144:4c83 prefixlen 64 scopeid 0x20<link> ether 00:0c:29:d7:2a:1d txqueuelen 1000 (Ethernet) RX packets 14503 bytes 1953568 (1.8 MiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 28650 bytes 65859370 (62.8 MiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536 inet 127.0.0.1 netmask 255.0.0.0 inet6 ::1 prefixlen 128 scopeid 0x10<host> loop txqueuelen 1000 (Local Loopback) RX packets 5332 bytes 1041181 (1016.7 KiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 5332 bytes 1041181 (1016.7 KiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 virbr0: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500 inet 192.168.122.1 netmask 255.255.255.0 broadcast 192.168.122.255 ether 52:54:00:fa:52:42 txqueuelen 1000 (Ethernet) RX packets 0 bytes 0 (0.0 B) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 0 bytes 0 (0.0 B) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 [nly202409529125@nly01 ~]$ jps 3472 DataNode 3347 NameNode 3764 ResourceManager 3885 NodeManager 4847 Jps [nly202409529125@nly01 ~]$ hadoop jar clean.jar com.position.clean.CleanMain /JobData/20250606/ /JobData/output Not a valid JAR: /home/nly202409529125/clean.jar [nly202409529125@nly01 ~]$ cd export [nly202409529125@nly01 export]$ cd software [nly202409529125@nly01 software]$ hadoop jar clean.jar com.position.clean.CleanMain /JobData/20250606/ /JobData/output 25/06/07 05:25:18 INFO client.RMProxy: Connecting to ResourceManager at nly01/192.168.232.134:8032 0 [main] INFO org.apache.hadoop.yarn.client.RMProxy - Connecting to ResourceManager at nly01/192.168.232.134:8032 25/06/07 05:25:20 INFO input.FileInputFormat: Total input paths to process : 1 1775 [main] INFO org.apache.hadoop.mapreduce.lib.input.FileInputFormat - Total input paths to process : 1 25/06/07 05:25:20 INFO input.CombineFileInputFormat: DEBUG: Terminated node allocation with : CompletedNodes: 3, size left: 51783 1800 [main] INFO org.apache.hadoop.mapreduce.lib.input.CombineFileInputFormat - DEBUG: Terminated node allocation with : CompletedNodes: 3, size left: 51783 25/06/07 05:25:20 INFO mapreduce.JobSubmitter: number of splits:1 1976 [main] INFO org.apache.hadoop.mapreduce.JobSubmitter - number of splits:1 25/06/07 05:25:20 INFO mapreduce.JobSubmitter: Submitting tokens for job: job_1749297830531_0002 2327 [main] INFO org.apache.hadoop.mapreduce.JobSubmitter - Submitting tokens for job: job_1749297830531_0002 25/06/07 05:25:20 INFO impl.YarnClientImpl: Submitted application application_1749297830531_0002 2673 [main] INFO org.apache.hadoop.yarn.client.api.impl.YarnClientImpl - Submitted application application_1749297830531_0002 25/06/07 05:25:21 INFO mapreduce.Job: The url to track the job: http://nly01:8088/proxy/application_1749297830531_0002/ 2750 [main] INFO org.apache.hadoop.mapreduce.Job - The url to track the job: http://nly01:8088/proxy/application_1749297830531_0002/ 25/06/07 05:25:21 INFO mapreduce.Job: Running job: job_1749297830531_0002 2751 [main] INFO org.apache.hadoop.mapreduce.Job - Running job: job_1749297830531_0002 25/06/07 05:31:29 INFO mapreduce.Job: Job job_1749297830531_0002 running in uber mode : false 371467 [main] INFO org.apache.hadoop.mapreduce.Job - Job job_1749297830531_0002 running in uber mode : false 25/06/07 05:31:29 INFO mapreduce.Job: map 0% reduce 0% 371469 [main] INFO org.apache.hadoop.mapreduce.Job - map 0% reduce 0% 25/06/07 05:31:29 INFO mapreduce.Job: Job job_1749297830531_0002 failed with state FAILED due to: Application application_1749297830531_0002 failed 2 times due to Error launching appattempt_1749297830531_0002_000002. Got exception: java.net.NoRouteToHostException: No Route to Host from nly01/192.168.232.134 to nly02:36430 failed on socket timeout exception: java.net.NoRouteToHostException: No route to host; For more details see: http://wiki.apache.org/hadoop/NoRouteToHost at sun.reflect.GeneratedConstructorAccessor47.newInstance(Unknown Source) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) at java.lang.reflect.Constructor.newInstance(Constructor.java:423) at org.apache.hadoop.net.NetUtils.wrapWithMessage(NetUtils.java:792) at org.apache.hadoop.net.NetUtils.wrapException(NetUtils.java:758) at org.apache.hadoop.ipc.Client.call(Client.java:1480) at org.apache.hadoop.ipc.Client.call(Client.java:1413) at org.apache.hadoop.ipc.ProtobufRpcEngine$Invoker.invoke(ProtobufRpcEngine.java:229) at com.sun.proxy.$Proxy83.startContainers(Unknown Source) at org.apache.hadoop.yarn.api.impl.pb.client.ContainerManagementProtocolPBClientImpl.startContainers(ContainerManagementProtocolPBClientImpl.java:96) at sun.reflect.GeneratedMethodAccessor14.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at org.apache.hadoop.io.retry.RetryInvocationHandler.invokeMethod(RetryInvocationHandler.java:191) at org.apache.hadoop.io.retry.RetryInvocationHandler.invoke(RetryInvocationHandler.java:102) at com.sun.proxy.$Proxy84.startContainers(Unknown Source) at org.apache.hadoop.yarn.server.resourcemanager.amlauncher.AMLauncher.launch(AMLauncher.java:119) at org.apache.hadoop.yarn.server.resourcemanager.amlauncher.AMLauncher.run(AMLauncher.java:250) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at java.lang.Thread.run(Thread.java:748) Caused by: java.net.NoRouteToHostException: No route to host at sun.nio.ch.SocketChannelImpl.checkConnect(Native Method) at sun.nio.ch.SocketChannelImpl.finishConnect(SocketChannelImpl.java:717) at org.apache.hadoop.net.SocketIOWithTimeout.connect(SocketIOWithTimeout.java:206) at org.apache.hadoop.net.NetUtils.connect(NetUtils.java:531) at org.apache.hadoop.net.NetUtils.connect(NetUtils.java:495) at org.apache.hadoop.ipc.Client$Connection.setupConnection(Client.java:615) at org.apache.hadoop.ipc.Client$Connection.setupIOstreams(Client.java:713) at org.apache.hadoop.ipc.Client$Connection.access$2900(Client.java:376) at org.apache.hadoop.ipc.Client.getConnection(Client.java:1529) at org.apache.hadoop.ipc.Client.call(Client.java:1452) ... 15 more . Failing the application. 371492 [main] INFO org.apache.hadoop.mapreduce.Job - Job job_1749297830531_0002 failed with state FAILED due to: Application application_1749297830531_0002 failed 2 times due to Error launching appattempt_1749297830531_0002_000002. Got exception: java.net.NoRouteToHostException: No Route to Host from nly01/192.168.232.134 to nly02:36430 failed on socket timeout exception: java.net.NoRouteToHostException: No route to host; For more details see: http://wiki.apache.org/hadoop/NoRouteToHost at sun.reflect.GeneratedConstructorAccessor47.newInstance(Unknown Source) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) at java.lang.reflect.Constructor.newInstance(Constructor.java:423) at org.apache.hadoop.net.NetUtils.wrapWithMessage(NetUtils.java:792) at org.apache.hadoop.net.NetUtils.wrapException(NetUtils.java:758) at org.apache.hadoop.ipc.Client.call(Client.java:1480) at org.apache.hadoop.ipc.Client.call(Client.java:1413) at org.apache.hadoop.ipc.ProtobufRpcEngine$Invoker.invoke(ProtobufRpcEngine.java:229) at com.sun.proxy.$Proxy83.startContainers(Unknown Source) at org.apache.hadoop.yarn.api.impl.pb.client.ContainerManagementProtocolPBClientImpl.startContainers(ContainerManagementProtocolPBClientImpl.java:96) at sun.reflect.GeneratedMethodAccessor14.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at org.apache.hadoop.io.retry.RetryInvocationHandler.invokeMethod(RetryInvocationHandler.java:191) at org.apache.hadoop.io.retry.RetryInvocationHandler.invoke(RetryInvocationHandler.java:102) at com.sun.proxy.$Proxy84.startContainers(Unknown Source) at org.apache.hadoop.yarn.server.resourcemanager.amlauncher.AMLauncher.launch(AMLauncher.java:119) at org.apache.hadoop.yarn.server.resourcemanager.amlauncher.AMLauncher.run(AMLauncher.java:250) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at java.lang.Thread.run(Thread.java:748) Caused by: java.net.NoRouteToHostException: No route to host at sun.nio.ch.SocketChannelImpl.checkConnect(Native Method) at sun.nio.ch.SocketChannelImpl.finishConnect(SocketChannelImpl.java:717) at org.apache.hadoop.net.SocketIOWithTimeout.connect(SocketIOWithTimeout.java:206) at org.apache.hadoop.net.NetUtils.connect(NetUtils.java:531) at org.apache.hadoop.net.NetUtils.connect(NetUtils.java:495) at org.apache.hadoop.ipc.Client$Connection.setupConnection(Client.java:615) at org.apache.hadoop.ipc.Client$Connection.setupIOstreams(Client.java:713) at org.apache.hadoop.ipc.Client$Connection.access$2900(Client.java:376) at org.apache.hadoop.ipc.Client.getConnection(Client.java:1529) at org.apache.hadoop.ipc.Client.call(Client.java:1452) ... 15 more . Failing the application. 25/06/07 05:31:29 INFO mapreduce.Job: Counters: 0 371522 [main] INFO org.apache.hadoop.mapreduce.Job - Counters: 0 [nly202409529125@nly01 software]$ ping 192.168.232.134 PING 192.168.232.134 (192.168.232.134) 56(84) bytes of data. 64 bytes from 192.168.232.134: icmp_seq=1 ttl=64 time=0.386 ms 64 bytes from 192.168.232.134: icmp_seq=2 ttl=64 time=0.053 ms ^C --- 192.168.232.134 ping statistics --- 2 packets transmitted, 2 received, 0% packet loss, time 999ms rtt min/avg/max/mdev = 0.053/0.219/0.386/0.167 ms [nly202409529125@nly01 software]$ ping 192.168.232.135 PING 192.168.232.135 (192.168.232.135) 56(84) bytes of data. 64 bytes from 192.168.232.135: icmp_seq=1 ttl=64 time=0.309 ms 64 bytes from 192.168.232.135: icmp_seq=2 ttl=64 time=0.545 ms 64 bytes from 192.168.232.135: icmp_seq=3 ttl=64 time=0.468 ms ^C --- 192.168.232.135 ping statistics --- 3 packets transmitted, 3 received, 0% packet loss, time 2001ms rtt min/avg/max/mdev = 0.309/0.440/0.545/0.101 ms [nly202409529125@nly01 software]$ ping 192.168.232.136 PING 192.168.232.136 (192.168.232.136) 56(84) bytes of data. 64 bytes from 192.168.232.136: icmp_seq=1 ttl=64 time=6.17 ms 64 bytes from 192.168.232.136: icmp_seq=2 ttl=64 time=0.499 ms 64 bytes from 192.168.232.136: icmp_seq=3 ttl=64 time=0.723 ms ^C --- 192.168.232.136 ping statistics --- 3 packets transmitted, 3 received, 0% packet loss, time 2001ms rtt min/avg/max/mdev = 0.499/2.465/6.175/2.625 ms [nly202409529125@nly01 software]$ [nly202409529125@nly01 software]$ systemctl status firewalld ● firewalld.service - firewalld - dynamic firewall daemon Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled) Active: inactive (dead) Docs: man:firewalld(1) [nly202409529125@nly01 software]$ nslookup nly02 Server: 8.8.8.8 Address: 8.8.8.8#53 ** server can't find nly02: NXDOMAIN [nly202409529125@nly01 software]$ route -n Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 0.0.0.0 192.168.232.2 0.0.0.0 UG 100 0 0 ens33 192.168.122.0 0.0.0.0 255.255.255.0 U 0 0 0 virbr0 192.168.232.0 0.0.0.0 255.255.255.0 U 100 0 0 ens33 [nly202409529125@nly01 software]$ hadoop jar clean.jar com.position.clean.CleanMain /JobData/20250606/ /JobData/output 25/06/07 05:41:38 INFO client.RMProxy: Connecting to ResourceManager at nly01/192.168.232.134:8032 0 [main] INFO org.apache.hadoop.yarn.client.RMProxy - Connecting to ResourceManager at nly01/192.168.232.134:8032 25/06/07 05:41:40 INFO input.FileInputFormat: Total input paths to process : 1 1401 [main] INFO org.apache.hadoop.mapreduce.lib.input.FileInputFormat - Total input paths to process : 1 25/06/07 05:41:40 INFO input.CombineFileInputFormat: DEBUG: Terminated node allocation with : CompletedNodes: 3, size left: 51783 1426 [main] INFO org.apache.hadoop.mapreduce.lib.input.CombineFileInputFormat - DEBUG: Terminated node allocation with : CompletedNodes: 3, size left: 51783 25/06/07 05:41:40 INFO mapreduce.JobSubmitter: number of splits:1 1572 [main] INFO org.apache.hadoop.mapreduce.JobSubmitter - number of splits:1 25/06/07 05:41:40 INFO mapreduce.JobSubmitter: Submitting tokens for job: job_1749297830531_0003 1833 [main] INFO org.apache.hadoop.mapreduce.JobSubmitter - Submitting tokens for job: job_1749297830531_0003 25/06/07 05:41:40 INFO impl.YarnClientImpl: Submitted application application_1749297830531_0003 2127 [main] INFO org.apache.hadoop.yarn.client.api.impl.YarnClientImpl - Submitted application application_1749297830531_0003 25/06/07 05:41:40 INFO mapreduce.Job: The url to track the job: http://nly01:8088/proxy/application_1749297830531_0003/ 2193 [main] INFO org.apache.hadoop.mapreduce.Job - The url to track the job: http://nly01:8088/proxy/application_1749297830531_0003/ 25/06/07 05:41:40 INFO mapreduce.Job: Running job: job_1749297830531_0003 2194 [main] INFO org.apache.hadoop.mapreduce.Job - Running job: job_1749297830531_0003 25/06/07 05:44:46 INFO mapreduce.Job: Job job_1749297830531_0003 running in uber mode : false 188095 [main] INFO org.apache.hadoop.mapreduce.Job - Job job_1749297830531_0003 running in uber mode : false 25/06/07 05:44:46 INFO mapreduce.Job: map 0% reduce 0% 188097 [main] INFO org.apache.hadoop.mapreduce.Job - map 0% reduce 0% 25/06/07 05:44:46 INFO mapreduce.Job: Job job_1749297830531_0003 failed with state FAILED due to: Application application_1749297830531_0003 failed 2 times due to Error launching appattempt_1749297830531_0003_000002. Got exception: java.net.NoRouteToHostException: No Route to Host from nly01/192.168.232.134 to nly02:36430 failed on socket timeout exception: java.net.NoRouteToHostException: No route to host; For more details see: http://wiki.apache.org/hadoop/NoRouteToHost at sun.reflect.GeneratedConstructorAccessor47.newInstance(Unknown Source) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) at java.lang.reflect.Constructor.newInstance(Constructor.java:423) at org.apache.hadoop.net.NetUtils.wrapWithMessage(NetUtils.java:792) at org.apache.hadoop.net.NetUtils.wrapException(NetUtils.java:758) at org.apache.hadoop.ipc.Client.call(Client.java:1480) at org.apache.hadoop.ipc.Client.call(Client.java:1413) at org.apache.hadoop.ipc.ProtobufRpcEngine$Invoker.invoke(ProtobufRpcEngine.java:229) at com.sun.proxy.$Proxy83.startContainers(Unknown Source) at org.apache.hadoop.yarn.api.impl.pb.client.ContainerManagementProtocolPBClientImpl.startContainers(ContainerManagementProtocolPBClientImpl.java:96) at sun.reflect.GeneratedMethodAccessor14.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at org.apache.hadoop.io.retry.RetryInvocationHandler.invokeMethod(RetryInvocationHandler.java:191) at org.apache.hadoop.io.retry.RetryInvocationHandler.invoke(RetryInvocationHandler.java:102) at com.sun.proxy.$Proxy84.startContainers(Unknown Source) at org.apache.hadoop.yarn.server.resourcemanager.amlauncher.AMLauncher.launch(AMLauncher.java:119) at org.apache.hadoop.yarn.server.resourcemanager.amlauncher.AMLauncher.run(AMLauncher.java:250) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at java.lang.Thread.run(Thread.java:748) Caused by: java.net.NoRouteToHostException: No route to host at sun.nio.ch.SocketChannelImpl.checkConnect(Native Method) at sun.nio.ch.SocketChannelImpl.finishConnect(SocketChannelImpl.java:717) at org.apache.hadoop.net.SocketIOWithTimeout.connect(SocketIOWithTimeout.java:206) at org.apache.hadoop.net.NetUtils.connect(NetUtils.java:531) at org.apache.hadoop.net.NetUtils.connect(NetUtils.java:495) at org.apache.hadoop.ipc.Client$Connection.setupConnection(Client.java:615) at org.apache.hadoop.ipc.Client$Connection.setupIOstreams(Client.java:713) at org.apache.hadoop.ipc.Client$Connection.access$2900(Client.java:376) at org.apache.hadoop.ipc.Client.getConnection(Client.java:1529) at org.apache.hadoop.ipc.Client.call(Client.java:1452) ... 15 more . Failing the application. 188116 [main] INFO org.apache.hadoop.mapreduce.Job - Job job_1749297830531_0003 failed with state FAILED due to: Application application_1749297830531_0003 failed 2 times due to Error launching appattempt_1749297830531_0003_000002. Got exception: java.net.NoRouteToHostException: No Route to Host from nly01/192.168.232.134 to nly02:36430 failed on socket timeout exception: java.net.NoRouteToHostException: No route to host; For more details see: http://wiki.apache.org/hadoop/NoRouteToHost at sun.reflect.GeneratedConstructorAccessor47.newInstance(Unknown Source) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) at java.lang.reflect.Constructor.newInstance(Constructor.java:423) at org.apache.hadoop.net.NetUtils.wrapWithMessage(NetUtils.java:792) at org.apache.hadoop.net.NetUtils.wrapException(NetUtils.java:758) at org.apache.hadoop.ipc.Client.call(Client.java:1480) at org.apache.hadoop.ipc.Client.call(Client.java:1413) at org.apache.hadoop.ipc.ProtobufRpcEngine$Invoker.invoke(ProtobufRpcEngine.java:229) at com.sun.proxy.$Proxy83.startContainers(Unknown Source) at org.apache.hadoop.yarn.api.impl.pb.client.ContainerManagementProtocolPBClientImpl.startContainers(ContainerManagementProtocolPBClientImpl.java:96) at sun.reflect.GeneratedMethodAccessor14.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at org.apache.hadoop.io.retry.RetryInvocationHandler.invokeMethod(RetryInvocationHandler.java:191) at org.apache.hadoop.io.retry.RetryInvocationHandler.invoke(RetryInvocationHandler.java:102) at com.sun.proxy.$Proxy84.startContainers(Unknown Source) at org.apache.hadoop.yarn.server.resourcemanager.amlauncher.AMLauncher.launch(AMLauncher.java:119) at org.apache.hadoop.yarn.server.resourcemanager.amlauncher.AMLauncher.run(AMLauncher.java:250) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at java.lang.Thread.run(Thread.java:748) Caused by: java.net.NoRouteToHostException: No route to host at sun.nio.ch.SocketChannelImpl.checkConnect(Native Method) at sun.nio.ch.SocketChannelImpl.finishConnect(SocketChannelImpl.java:717) at org.apache.hadoop.net.SocketIOWithTimeout.connect(SocketIOWithTimeout.java:206) at org.apache.hadoop.net.NetUtils.connect(NetUtils.java:531) at org.apache.hadoop.net.NetUtils.connect(NetUtils.java:495) at org.apache.hadoop.ipc.Client$Connection.setupConnection(Client.java:615) at org.apache.hadoop.ipc.Client$Connection.setupIOstreams(Client.java:713) at org.apache.hadoop.ipc.Client$Connection.access$2900(Client.java:376) at org.apache.hadoop.ipc.Client.getConnection(Client.java:1529) at org.apache.hadoop.ipc.Client.call(Client.java:1452) ... 15 more . Failing the application. 25/06/07 05:44:46 INFO mapreduce.Job: Counters: 0 188147 [main] INFO org.apache.hadoop.mapreduce.Job - Counters: 0 [nly202409529125@nly01 software]$ 给我一个解决方法
最新发布
06-08
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值