Giraph源码分析(七)—— 添加消息统计功能
发表于:2024-11-11 作者:千家信息网编辑
千家信息网最后更新 2024年11月11日,作者|白松1、 添加类,把每个超步发送的消息量大小写入Hadoop的Counter中。在org.apache.giraph.counters包下新建GiraphMessages类,来统计消息量。源代码
千家信息网最后更新 2024年11月11日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安全错误
数据库的锁怎样保障安全
明日之后重新开服务器
共享网络安全绘图
网上买电脑怎么选择服务器
珠海线上培训软件开发
什么是服务器的管理接口
怎么做db数据库
数据库课程表备份
郑州 无人机软件开发公司
网络安全测评资质怎么办
wordress服务器要求
麒麟v10能装在服务器上吗
数据库视图存储在哪里找
数据库调优是dba
全县网络安全培训会议
软件开发转测试可行性大吗
网络安全美国的棱镜计划
gnps分子网络技术
db2数据库安装教程
软件开发核心指标
数据库 iops 怎么算
网上买电脑怎么选择服务器
联新网络安全海报
我们国家网络安全吗
浦东新区市场软件开发价格表格
南通服务器管理软件
软件开发技术中心部门职责
揭阳网络安全监察部门举报电话
查询共有多少个班级用数据库
网络安全股估值
成都易想网络技术有限公司