########################################## The implemention of the MRUtil module.## @author Kai Yao(yaokai)######################################### implement MRUtil; include "mrutil.m";include "ioutil.m";include "tables.m";include "sys.m"; sys : Sys; init(){ sys = load Sys Sys->PATH;} MapperTask.toString(mp : self ref MapperTask) : string{ ret := sys->sprint("id: %d, jobId: %d, status: %d, reducerAmount: %d, attempt: %d\n", mp.id, mp.jobId, mp.status, mp.reducerAmount, mp.attemptCount); return ret;} MapperTask.eq(a, b : ref MapperTask) : int{ return a.id == b.id;} ReducerTask.toString(rd : self ref ReducerTask) : string{ ret := sys->sprint("id: %d, jobId: %d, status: %d, mapperAmount: %d, attempt: %d\n", rd.id, rd.jobId, rd.status, rd.mapperAmount, rd.attemptCount); return ret;} ReducerTask.eq(a, b : ref ReducerTask) : int{ return a.id == b.id;} TaskTrackerInfo.toString(tt : self ref TaskTrackerInfo) : string{ ret := sys->sprint("addr: %s, port: %d, mapperTaskNum: %d, reducerTaskNum: %d, isWorking: %d", tt.addr, tt.port, tt.mapperTaskNum, tt.reducerTaskNum, tt.isWorking); return ret;} mapper2msg(mapper : ref MapperTask) : string{ msg := "mapper@" + string mapper.id + "@" + string mapper.jobId + "@" + string mapper.status + "@" + string mapper.attemptCount + "@" + mapper.taskTrackerAddr + "@" + string mapper.taskTrackerPort + "@" + mapper.mrClassName + "@" + string mapper.reducerAmount + "@" + string mapper.combinable + "@" + mapper.inputFileBlock.fileName + "@" + string mapper.inputFileBlock.offset + "@" + string mapper.inputFileBlock.size; return msg;} reducer2msg(reducer : ref ReducerTask) : string{ msg := "reducer@" + string reducer.id + "@" + string reducer.jobId + "@" + string reducer.status + "@" + string reducer.attemptCount + "@" + reducer.taskTrackerAddr + "@" + string reducer.taskTrackerPort + "@" + reducer.mrClassName + "@" + string reducer.mapperAmount + "@" + string reducer.partitionIndex + "@" + reducer.outputFile + "@" + string reducer.outputRep + "@" + string reducer.outputSize; return msg;} tracker2msg(tracker : ref TaskTrackerInfo) : string{ msg := "tracker@" + tracker.addr + "@" + string tracker.port + "@" + string tracker.mapperTaskNum + "@" + string tracker.reducerTaskNum + "@" + string tracker.isWorking + "@" + string tracker.timeStamp; return msg;} msg2mapper(msg : list of string) : ref MapperTask{ msg = tl msg; id := int (hd msg); msg = tl msg; jobId := int (hd msg); msg = tl msg; status := int (hd msg); msg = tl msg; attemptCount := int (hd msg); msg = tl msg; taskTrackerAddr := (hd msg); msg = tl msg; taskTrackerPort := int (hd msg); msg = tl msg; mrClassName := (hd msg); msg = tl msg; reducerAmount := int (hd msg); msg = tl msg; combinable := int (hd msg); msg = tl msg; fileName := (hd msg); msg = tl msg; offset := big (hd msg); msg = tl msg; size := int (hd msg); msg = tl msg; fileBlock := ref IOUtil->FileBlock(fileName, offset, size); return ref MapperTask(id, jobId, status, attemptCount, taskTrackerAddr, taskTrackerPort, mrClassName, reducerAmount, combinable, fileBlock);} msg2reducer(msg : list of string) : ref ReducerTask{ msg = tl msg; id := int (hd msg); msg = tl msg; jobId := int (hd msg); msg = tl msg; status := int (hd msg); msg = tl msg; attemptCount := int (hd msg); msg = tl msg; taskTrackerAddr := (hd msg); msg = tl msg; taskTrackerPort := int (hd msg); msg = tl msg; mrClassName := (hd msg); msg = tl msg; mapperAmount := int (hd msg); msg = tl msg; partitionIndex := int (hd msg); msg = tl msg; outputFile := (hd msg); msg = tl msg; outputRep := int (hd msg); msg = tl msg; outputSize := int (hd msg); msg = tl msg; return ref ReducerTask(id, jobId, status, attemptCount, taskTrackerAddr, taskTrackerPort, mrClassName, mapperAmount, partitionIndex, outputFile, outputRep, outputSize); } msg2tracker(msg : list of string) : ref TaskTrackerInfo{ msg = tl msg; addr := hd msg; msg = tl msg; port := int (hd msg); msg = tl msg; mapperTaskNum := int (hd msg); msg = tl msg; reducerTaskNum := int (hd msg); msg = tl msg; isWorking := int (hd msg); msg = tl msg; timeStamp := int (hd msg); return ref TaskTrackerInfo(addr, port, mapperTaskNum, reducerTaskNum, isWorking, timeStamp);}
########################################
#
# The implemention of the MRUtil module.
#
# @author Kai Yao(yaokai)
#
########################################
implement MRUtil;
include "mrutil.m";
include "ioutil.m";
include "tables.m";
include "sys.m";
sys : Sys;
init()
{
sys = load Sys Sys->PATH;
}
MapperTask.toString(mp : self ref MapperTask) : string
{
ret := sys->sprint("id: %d, jobId: %d, status: %d, reducerAmount: %d, attempt: %d\n", mp.id, mp.jobId, mp.status, mp.reducerAmount, mp.attemptCount);
return ret;
}
MapperTask.eq(a, b : ref MapperTask) : int
{
return a.id == b.id;
}
ReducerTask.toString(rd : self ref ReducerTask) : string
{
ret := sys->sprint("id: %d, jobId: %d, status: %d, mapperAmount: %d, attempt: %d\n", rd.id, rd.jobId, rd.status, rd.mapperAmount, rd.attemptCount);
return ret;
}
ReducerTask.eq(a, b : ref ReducerTask) : int
{
return a.id == b.id;
}
TaskTrackerInfo.toString(tt : self ref TaskTrackerInfo) : string
{
ret := sys->sprint("addr: %s, port: %d, mapperTaskNum: %d, reducerTaskNum: %d, isWorking: %d", tt.addr, tt.port, tt.mapperTaskNum, tt.reducerTaskNum, tt.isWorking);
return ret;
}
mapper2msg(mapper : ref MapperTask) : string
{
msg := "mapper@" + string mapper.id + "@" + string mapper.jobId +
"@" + string mapper.status + "@" + string mapper.attemptCount +
"@" + mapper.taskTrackerAddr + "@" + string mapper.taskTrackerPort +
"@" + mapper.mrClassName + "@" + string mapper.reducerAmount +
"@" + string mapper.combinable +
"@" + mapper.inputFileBlock.fileName + "@" + string mapper.inputFileBlock.offset + "@" + string mapper.inputFileBlock.size;
return msg;
}
reducer2msg(reducer : ref ReducerTask) : string
{
msg := "reducer@" + string reducer.id + "@" + string reducer.jobId +
"@" + string reducer.status + "@" + string reducer.attemptCount +
"@" + reducer.taskTrackerAddr + "@" + string reducer.taskTrackerPort +
"@" + reducer.mrClassName + "@" + string reducer.mapperAmount + "@" + string reducer.partitionIndex +
"@" + reducer.outputFile + "@" + string reducer.outputRep + "@" + string reducer.outputSize;
return msg;
}
tracker2msg(tracker : ref TaskTrackerInfo) : string
{
msg := "tracker@" + tracker.addr + "@" + string tracker.port +
"@" + string tracker.mapperTaskNum + "@" + string tracker.reducerTaskNum +
"@" + string tracker.isWorking + "@" + string tracker.timeStamp;
return msg;
}
msg2mapper(msg : list of string) : ref MapperTask
{
msg = tl msg;
id := int (hd msg); msg = tl msg;
jobId := int (hd msg); msg = tl msg;
status := int (hd msg); msg = tl msg;
attemptCount := int (hd msg); msg = tl msg;
taskTrackerAddr := (hd msg); msg = tl msg;
taskTrackerPort := int (hd msg); msg = tl msg;
mrClassName := (hd msg); msg = tl msg;
reducerAmount := int (hd msg); msg = tl msg;
combinable := int (hd msg); msg = tl msg;
fileName := (hd msg); msg = tl msg;
offset := big (hd msg); msg = tl msg;
size := int (hd msg); msg = tl msg;
fileBlock := ref IOUtil->FileBlock(fileName, offset, size);
return ref MapperTask(id, jobId, status, attemptCount, taskTrackerAddr, taskTrackerPort, mrClassName, reducerAmount, combinable, fileBlock);
}
msg2reducer(msg : list of string) : ref ReducerTask
{
msg = tl msg;
id := int (hd msg); msg = tl msg;
jobId := int (hd msg); msg = tl msg;
status := int (hd msg); msg = tl msg;
attemptCount := int (hd msg); msg = tl msg;
taskTrackerAddr := (hd msg); msg = tl msg;
taskTrackerPort := int (hd msg); msg = tl msg;
mrClassName := (hd msg); msg = tl msg;
mapperAmount := int (hd msg); msg = tl msg;
partitionIndex := int (hd msg); msg = tl msg;
outputFile := (hd msg); msg = tl msg;
outputRep := int (hd msg); msg = tl msg;
outputSize := int (hd msg); msg = tl msg;
return ref ReducerTask(id, jobId, status, attemptCount, taskTrackerAddr, taskTrackerPort, mrClassName, mapperAmount, partitionIndex, outputFile, outputRep, outputSize);
}
msg2tracker(msg : list of string) : ref TaskTrackerInfo
{
msg = tl msg;
addr := hd msg; msg = tl msg;
port := int (hd msg); msg = tl msg;
mapperTaskNum := int (hd msg); msg = tl msg;
reducerTaskNum := int (hd msg); msg = tl msg;
isWorking := int (hd msg); msg = tl msg;
timeStamp := int (hd msg);
return ref TaskTrackerInfo(addr, port, mapperTaskNum, reducerTaskNum, isWorking, timeStamp);
}