博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Hadoop源码分析之读文件时NameNode和DataNode的处理过程
阅读量:6210 次
发布时间:2019-06-21

本文共 1485 字,大约阅读时间需要 4 分钟。

转自: 

从NameNode节点获取数据块所在节点等信息

客户端在和数据节点建立流式接口的TCP连接,读取文件数据前需要定位数据的位置,所以首先客户端在 DFSClient.callGetBlockLocations() 方法中调用了远程方法 ClientProtocol.getBlockLocations() ,调用该方法返回一个LocatedBlocks对象,包含了一系列的LocatedBlock实例,通过这些信息客户端就知道需要到哪些数据节点上去获取数据。这个方法会在NameNode.getBlockLocations()中调用,进而调用FSNamesystem.同名的来进行实际的调用过程,FSNamesystem有三个重载方法,代码如下:

LocatedBlocks getBlockLocations(String clientMachine, String src, long offset, long length) throws IOException { LocatedBlocks blocks = getBlockLocations(src, offset, length, true, true, true); if (blocks != null) { //如果blocks不为空,那么就对数据块所在的数据节点进行排序 //sort the blocks // In some deployment cases, cluster is with separation of task tracker // and datanode which means client machines will not always be recognized // as known data nodes, so here we should try to get node (but not // datanode only) for locality based sort. Node client = host2DataNodeMap.getDatanodeByHost( clientMachine); if (client == null) { List
hosts = new ArrayList
(1); hosts.add(clientMachine); String rName = dnsToSwitchMapping.resolve(hosts).get(0); if (rName != null) client = new NodeBase(clientMachine, rName); } DFSUtil.StaleComparator comparator = null; if (avoidStaleDataNodesForRead) { comparator = new DFSUtil.StaleComparator(staleInterval); } // Note: the last block is also included and sorted for (LocatedBlock b : blocks.getLocatedBlocks()) { clusterMap.pseudoSortByDistance(client, b.getLocations()); if (avoidStaleDataNodesForRead) { Arrays.sort(

转载地址:http://sobja.baihongyu.com/

你可能感兴趣的文章
leetcode之Remove Duplicates from Sorted List II
查看>>
JSP去空白行
查看>>
【216】◀▶ IDL 字符串操作说明 (黑底)
查看>>
【326】PIL 截图及图片识别
查看>>
jquery中odd和even选择器的用法说明
查看>>
axios 拦截 , 页面跳转, token 验证
查看>>
Windows XP硬盘安装Ubuntu 12.04双系统图文详解
查看>>
Last Position of Target
查看>>
和我一起来学iOS(一)ObjectC的语法
查看>>
php_bu
查看>>
一轮项目冲刺3
查看>>
DDL语句--改动表
查看>>
javaEE之------ApectJ的切面技术===标签
查看>>
js 获取昨天,今天和明天的年月日格式
查看>>
中枢理论3
查看>>
BootStrap使用
查看>>
关于svn上传.classpath等问题
查看>>
妹子图-mysql
查看>>
谈谈地理坐标和投影坐标
查看>>
关于bat文件语法
查看>>