// NewChecksumReader creates a new ChecksumReader for the given block. func NewChecksumReader(block *hdfs.LocatedBlockProto) *ChecksumReader { locs := block.GetLocs() datanodes := make([]string, len(locs)) for i, loc := range locs { dn := loc.GetId() datanodes[i] = fmt.Sprintf("%s:%d", dn.GetIpAddr(), dn.GetXferPort()) } return &ChecksumReader{ block: block, datanodes: newDatanodeFailover(datanodes), } }
// NewBlockReader returns a new BlockReader, given the block information and // security token from the namenode. It will connect (lazily) to one of the // provided datanode locations based on which datanodes have seen failures. func NewBlockReader(block *hdfs.LocatedBlockProto, offset int64, clientName string) *BlockReader { locs := block.GetLocs() datanodes := make([]string, len(locs)) for i, loc := range locs { datanodes[i] = getDatanodeAddress(loc) } return &BlockReader{ clientName: clientName, block: block, datanodes: newDatanodeFailover(datanodes), offset: offset, } }