1.首先调用HTable的getScanner,根据scan的参数small和reverse决定走哪个分支
2.比如走ClientScanner,最后会调用到ScannerCallable的call方法
3.在ScannerCallable的prepare阶段setStub设置了连接的ip和端口,调用call后访问到RSRpcServices
4.ScannerCallable的request中设置numberofRows
5.RSRpcServices的scan方法中在调用scanner.nextRaw的参数scannerContext设置了3个变量,setSizeLimit、setBatchLimit、setTimeLimit,主要while循环除了判定是否到达cache值外,循环内判定了是否根据maxresultsize来判定是否break
6.hbase shell通过table.rb的iterator来调用ClientScanner的next方法,如果在ClientScanner的cache对象中,则直接获取,否则调用loadCache方法
7.接着5后调用到HRegion的nextRaw方法,
2.比如走ClientScanner,最后会调用到ScannerCallable的call方法
3.在ScannerCallable的prepare阶段setStub设置了连接的ip和端口,调用call后访问到RSRpcServices
4.ScannerCallable的request中设置numberofRows
5.RSRpcServices的scan方法中在调用scanner.nextRaw的参数scannerContext设置了3个变量,setSizeLimit、setBatchLimit、setTimeLimit,主要while循环除了判定是否到达cache值外,循环内判定了是否根据maxresultsize来判定是否break
6.hbase shell通过table.rb的iterator来调用ClientScanner的next方法,如果在ClientScanner的cache对象中,则直接获取,否则调用loadCache方法
7.接着5后调用到HRegion的nextRaw方法,