C# Hadoop学习笔记(九)—C#的分布式计算简单类图
来源:互联网 发布:人员档案管理系统源码 编辑:程序博客网 时间:2024/05/17 21:58
一、创建Master节点
1)负责集群整体连接认证(Connect方法)
2)负责集群整体节点状态算法
代码如下:
[ServiceContract(ProtectionLevel = System.Net.Security.ProtectionLevel.None)] public interface IMasterTracker { /// <summary> /// Master节点注册。 /// </summary> /// <param name="NodeInfo"></param> /// <returns></returns> [OperationContract] string RegisterJobNode(NodeInfo NodeInfo); /// <summary> /// 集群连接。 /// </summary> /// <param name="NodeInfo"></param> /// <returns></returns> [OperationContract] FCloudConnectResult Connect(MasterConfigration masterConfig); /// <summary> /// 数据节点注册。 /// </summary> /// <param name="NodeInfo"></param> /// <returns></returns> [OperationContract] string RegisterDataNode(NodeInfo NodeInfo); /// <summary> /// 计算节点信息清单. /// </summary> /// <returns></returns> [OperationContract] List<NodeInfo> GetDataNodeInfo(); /// <summary> /// 活跃的计算节点信息清单. /// </summary> /// <returns></returns> [OperationContract] List<NodeInfo> GetValidDataNodes();
二、创建Job调度节点
1)负责工作的调度
2)分发任务给各个节点
3)合并计算Combin
4)接收节点计算结果反馈
5)动态调整均衡
代码如下:
public interface IJobTracker { /// <summary> /// 操作契约(泛型),执行工作 /// </summary> /// <typeparam name="TMapper"></typeparam> /// <typeparam name="TReducer"></typeparam> /// <typeparam name="TCombiner"></typeparam> /// <param name="config"></param> /// <returns></returns> [OperationContract] List<MapReduceResult> ExecuteGeneric<TMapper, TReducer, TCombiner>(JobConfiguration config) where TMapper : MapperBase, new() where TReducer : ReducerBase, new() where TCombiner : CombinerBase, new(); /// <summary> /// 获取任务信息 /// </summary> /// <returns></returns> [OperationContract] List<JobInfo> GetJobInfo(); /// <summary> /// 更新任务状态 /// </summary> /// <returns></returns> [OperationContract] void RefrashTaskGeneric<TCombiner>(TaskInfo task) where TCombiner : CombinerBase, new(); /// <summary> /// 更新任务状态 /// </summary> /// <returns></returns> [OperationContract] void RefrashTask(CombinerBase mCombinerBase,TaskInfo task); /// <summary> /// 操作契约,执行工作 /// </summary> /// <param name="mMapperBase"></param> /// <param name="mReducerBase"></param> /// <param name="mCombinerBase"></param> /// <param name="config"></param> /// <returns></returns> [OperationContract] MapReduceResult Execute(MapperBase mMapperBase, ReducerBase mReducerBase, CombinerBase mCombinerBase, JobConfiguration config); }
三、创建任务节点
1)负责心跳通知主节点
2)负责执行工作节点分派的任务
3)拆分Map,执行Reduce
4)结果通知给Job节点
代码如下:
public interface ITaskTracker { /// <summary> /// 操作契约(泛型),执行单节点计算任务 /// </summary> /// <typeparam name="TMapper"></typeparam> /// <typeparam name="TReducer"></typeparam> /// <typeparam name="TCombiner"></typeparam> /// <param name="config"></param> /// <returns></returns> [OperationContract] List<MapReduceResult> ExecuteGeneric<TMapper, TReducer, TCombiner>(TaskConfigration config) where TMapper : MapperBase, new() where TReducer : ReducerBase, new() where TCombiner : CombinerBase, new(); /// <summary> /// 获取任务信息 /// </summary> /// <returns></returns> [OperationContract] List<TaskInfo> GetTaskInfo(); /// <summary> /// 操作契约,执行单节点计算任务 /// </summary> /// <param name="mapperBase"></param> /// <param name="reducerBase"></param> /// <param name="combinerBase"></param> /// <param name="config"></param> /// <returns></returns> [OperationContract] List<MapReduceResult> Execute(MapperBase mapperBase, ReducerBase reducerBase, CombinerBase combinerBase, TaskConfigration config); }
四、集群API设计
1)负责存储的扩展,DEMO中仅支持文件存储,未使用HDFS
2)负责串接所有通信API,包括连接集群、配置调度器、配置存储器、启动Job、开始一个工作
3)返回结果提供给客户端
基本类图:
五、客户端调用
(一)调用分布式计算接口:
//初始化云计算环境 Uri myUri = new Uri("net.tcp://127.0.0.1:55010/MasterTracker"); //连接云环境(账号验证等方面没做处理) IFCloud myCluster = FCloud.Connect(myUri,string.Empty,string.Empty); //初始化任务信息,一般来说输入和输出是必须的 JobConfiguration config = new JobConfiguration(); //执行一条任务 MapReduceResult jobResult = myCluster.MapReduceJob.Execute<MyMaper, MyReducer, MyCombiner>(config); //完成返回 int exitCode = jobResult.Info.ExitCode; if (exitCode == 0) { //剩余的客户端处理。。。。。 }
(二)调用分布式存储接口:
StorageConfiguration storageConfig = new StorageConfiguration();
//执行一条存储
StorageResult createResult = myCluster.StorageSystem.Write<MyInputer>(storageConfig);
(三)调用监控接口:
MonitorConfiguration config = new MonitorConfiguration();
//集群运行时信息监控
myCluster.Monitor.OnRuntimeMonitor += new MonitorEquipmentHandler(test.DisplayRuntimeInfo);
//各节点运行信息,任务计算信息监控
myCluster.Monitor.OnDetailMonitor += new MonitorEquipmentHandler(test.DisplayDetailInfo);
//集群CPU等基本信息监控
myCluster.Monitor.OnBasicMonitor += new MonitorEquipmentHandler(test.DisplayBasicInfo);
//执行监控
result = myCluster.Monitor.ExecuteMonitor<MonitorDetailCallback>(config);
- C# Hadoop学习笔记(九)—C#的分布式计算简单类图
- C# Hadoop学习笔记(八)—C#的分布式计算机制
- C# Hadoop学习笔记(十)—C#的分布式计算运行结果
- C# Hadoop学习笔记(五)—设计粗浅的C#的云计算框架
- C# Hadoop学习笔记(六)—C#的云计算框架借鉴(上)
- C# Hadoop学习笔记(七)—C#的云计算框架借鉴(下)
- C# Hadoop学习笔记(四)—设计自己的云计算框架
- C#学习笔记(九)
- hadoop学习笔记之分布式计算框架
- c# 学习笔记之九 事件(event)的使用,一个简单例子揭示机理
- C# Hadoop学习笔记(一)—环境安装
- C# Hadoop学习笔记(二)—架构原理
- C# Hadoop学习笔记(三)—集群部署结构
- 【C#学习笔记】反射的简单用法
- C#学习笔记——简单的声音播放
- C#学习笔记4——简单的面向对象
- c#学习笔记之九 事件(event)的使用,一个简单的例子揭示其设计理念
- C#学习笔记(九):运算符重载
- WPF 控件的隐藏及ToggleButton对控件高度的控制
- git clone http方式
- cocos2d-X 节点(CCSprite.h)API
- 为 pandaboard 搭建 gtk+ 环境
- 使用Qt编写模块化插件式应用程序
- C# Hadoop学习笔记(九)—C#的分布式计算简单类图
- select into from 和 insert into select 的区别和使用
- 大学计划
- 关于工作的意义的思考
- poj2182Lost Cows(线段树,单点更新,输入的是每个点的逆序数,求出原序列)
- 【数据结构】第1周 线性表 2:字符串插入
- PL/SQL的高级查询
- linux下core文件调试方法
- pthread_key_create