hadoop 2.6.3 CachedDNSToSwitchMapping源代码分析
来源:互联网 发布:巨人网络招聘2017 编辑:程序博客网 时间:2024/05/01 21:43
CachedDNSToSwitchMapping的作用是对已经解析了的ip地址和rack的地址的映射进行缓冲。
/** * A cached implementation of DNSToSwitchMapping that takes an * raw DNSToSwitchMapping and stores the resolved network location in * a cache. The following calls to a resolved network location * will get its location from the cache. * */里面有两个变量,cache用来存储ip地址和network location的地址的映射,第二个用来对未缓冲的ip 地址进行解析。
private Map<String, String> cache = new ConcurrentHashMap<String, String>(); /** * The uncached mapping */ protected final DNSToSwitchMapping rawMapping;
在resolve,没有缓冲的ip,调用rawMapping.resolve方法来解析它的networklocation.
@Override public List<String> resolve(List<String> names) { // normalize all input names to be in the form of IP addresses names = NetUtils.normalizeHostNames(names); List <String> result = new ArrayList<String>(names.size()); if (names.isEmpty()) { return result; } List<String> uncachedHosts = getUncachedHosts(names); // Resolve the uncached hosts List<String> resolvedHosts = rawMapping.resolve(uncachedHosts); //cache them cacheResolvedHosts(uncachedHosts, resolvedHosts); //now look up the entire list in the cache return getCachedHosts(names); }getUncachedHosts,判断ip是否在缓冲里。
/** * @param names a list of hostnames to probe for being cached * @return the hosts from 'names' that have not been cached previously */ private List<String> getUncachedHosts(List<String> names) { // find out all names without cached resolved location List<String> unCachedHosts = new ArrayList<String>(names.size()); for (String name : names) { if (cache.get(name) == null) { unCachedHosts.add(name); } } return unCachedHosts; }cacheResolvedHosts对新解析的ip和networklocation进行缓冲,两个list的大小必须相等。
/** * Caches the resolved host:rack mappings. The two list * parameters must be of equal size. * * @param uncachedHosts a list of hosts that were uncached * @param resolvedHosts a list of resolved host entries where the element * at index(i) is the resolved value for the entry in uncachedHosts[i] */ private void cacheResolvedHosts(List<String> uncachedHosts, List<String> resolvedHosts) { // Cache the result if (resolvedHosts != null) { for (int i=0; i<uncachedHosts.size(); i++) { cache.put(uncachedHosts.get(i), resolvedHosts.get(i)); } } }其它的方法非常简单,如下:
/** * Get the (host x switch) map. * @return a copy of the cached map of hosts to rack */ @Override public Map<String, String> getSwitchMap() { Map<String, String > switchMap = new HashMap<String, String>(cache); return switchMap; } @Override public String toString() { return "cached switch mapping relaying to " + rawMapping; } /** * Delegate the switch topology query to the raw mapping, via * {@link AbstractDNSToSwitchMapping#isMappingSingleSwitch(DNSToSwitchMapping)} * @return true iff the raw mapper is considered single-switch. */ @Override public boolean isSingleSwitch() { return isMappingSingleSwitch(rawMapping); } @Override public void reloadCachedMappings() { cache.clear(); } @Override public void reloadCachedMappings(List<String> names) { for (String name : names) { cache.remove(name); } }
0 0
- hadoop 2.6.3 CachedDNSToSwitchMapping源代码分析
- hadoop 2.6.3 BlockPlacementPolicyDefault源代码分析
- hadoop 2.6 IntrusiveCollection 源代码分析
- hadoop 2.6 PendingBlockInfo源代码分析
- hadoop 2.6 NetworkTopology源代码分析
- hadoop 2.6 HdfsServerConstants源代码分析
- ScriptBasedMapping,CachedDNSToSwitchMapping,AbstractDNSToSwitchMapping,DNSToSwitchMapping类层次分析
- hadoop 2.6.0 LightWeightGSet源代码分析
- Hadoop 2.6.0 FSDirectory源代码分析
- hadoop 2.6.0 JvmPauseMonitor源代码分析
- hadoop 2.6 Trash清除机制源代码分析
- hadoop 2.6.0 hdfs ReplicationMonitor 源代码分析
- hadoop 2.6.0 CorruptReplicasMap源代码分析
- hadoop 2.6 Yarn Service源代码分析
- 某企业级hadoop源代码分析-3
- Hadoop源代码分析【RPC】
- Hadoop源代码分析
- hadoop wordcount源代码分析
- ARM汇编结构
- jQuery 试题20道
- 并发队列ConcurrentLinkedQueue和阻塞队列LinkedBlockingQueue用法
- 1. 使用 MegaRAID Storage Manager 监控
- ToolBar
- hadoop 2.6.3 CachedDNSToSwitchMapping源代码分析
- 有关tableView和viewControllers的相关
- Android 6.0: 动态权限管理的解决方案
- Android native反调试方式及使用IDA绕过反调试
- Codeforces Round #340 (Div. 2) C. Watering Flowers
- linux 性能测试
- spinner中的onNothingSelected方法到底什么时候调用?
- 小小白初入编程江湖之初入职场迷茫篇
- kmp算法