Giraph源码分析(七)—— 添加消息统计功能
发表于:2025-01-23 作者:千家信息网编辑
千家信息网最后更新 2025年01月23日,作者|白松1、 添加类,把每个超步发送的消息量大小写入Hadoop的Counter中。在org.apache.giraph.counters包下新建GiraphMessages类,来统计消息量。源代码
千家信息网最后更新 2025年01月23日Giraph源码分析(七)—— 添加消息统计功能
作者|白松
1、 添加类,把每个超步发送的消息量大小写入Hadoop的Counter中。在org.apache.giraph.counters包下新建GiraphMessages类,来统计消息量。
源代码如下:
package org.apache.giraph.counters;import java.util.Iterator;import java.util.Map;import org.apache.hadoop.mapreduce.Mapper.Context;import com.google.common.collect.Maps;/** * Hadoop Counters in group "Giraph Messages" for counting every superstep * message count. */public class GiraphMessages extends HadoopCountersBase { /** Counter group name for the giraph Messages */ public static final String GROUP_NAME = "Giraph Messages"; /** Singleton instance for everyone to use */ private static GiraphMessages INSTANCE; /** superstep time in msec */ private final Map superstepMessages; private GiraphMessages(Context context) { super(context, GROUP_NAME); superstepMessages = Maps.newHashMap(); } /** * Instantiate with Hadoop Context. * * @param context * Hadoop Context to use. */ public static void init(Context context) { INSTANCE = new GiraphMessages(context); } /** * Get singleton instance. * * @return singleton GiraphTimers instance. */ public static GiraphMessages getInstance() { return INSTANCE; } /** * Get counter for superstep messages * * @param superstep * @return */ public GiraphHadoopCounter getSuperstepMessages(long superstep) { GiraphHadoopCounter counter = superstepMessages.get(superstep); if (counter == null) { String counterPrefix = "Superstep- " + superstep+" "; counter = getCounter(counterPrefix); superstepMessages.put(superstep, counter); } return counter; } @Override public Iterator iterator() { return superstepMessages.values().iterator(); }}
2、在BspServiceMaster类中添加统计功能。Master在每次同步时候,会聚集每个Worker发送的消息量大小(求和),存储于GlobalStats中。因此只需要在每次同步后,从GlobalStats对象中取出总的通信量大小,然后写入GiraphMessages中。格式为
GiraphMessages.init(context);
在BspServiceMaster类的SuperstepState coordinateSuperstep()方法中,添加记录功能。片段代码如下:
……// If the master is halted or all the vertices voted to halt and there// are no more messages in the system, stop the computationGlobalStats globalStats = aggregateWorkerStats(getSuperstep()); LOG.info("D-globalStats: "+globalStats+"\n\n");//添加下面语句。从第0个超步起开始记录。if(getSuperstep() != INPUT_SUPERSTEP) { GiraphMessages.getInstance().getSuperstepMessages(getSuperstep()).increment(globalStats.getMessageCount());}……
3、实验结果如下:
完!
消息
大小
功能
统计
代码
对象
方法
同步
存储
一行
作者
实际
时候
格式
源代码
片段
结果
语句
白松
上步
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
文件传输到服务器失败
阿里云上的服务器
网络安全宣传周启动时间
江门企业冷库软件开发
网络安全培训前景如何
数据库技术与应用教程李芳玲
联想服务器bmc管理
99互联网科技
软件开发项目质量管理
如何测试java是否连接数据库
网络安全知识宣传教育目的
网络安全和信息化委员会讲话
一个项目数据库有多少张表
黎明觉醒如何创造服务器
小程序能否直接与数据库连接
pareto原理在软件开发应用
社区重管理轻服务器
升级鸿蒙系统显示连接服务器失败
三级网络技术答案
计算机的安全网络安全是指
长春工程学院网络技术专业怎么样
文件传输到服务器失败
新型智慧城市网络安全调研提纲
网络安全知识 初中
南阳app软件开发公司
网络安全班会黑板设计
疫情网络安全个人启示
宾馆数据库管理系统
银行网络安全的理解和看法
软件开发过程相关书籍