public class RackawareEnsemblePlacementPolicy extends RackawareEnsemblePlacementPolicyImpl implements ITopologyAwareEnsemblePlacementPolicy<org.apache.bookkeeper.net.BookieNode>
EnsemblePlacementPolicyTopologyAwareEnsemblePlacementPolicy.DefaultResolver, TopologyAwareEnsemblePlacementPolicy.DNSResolverDecorator, TopologyAwareEnsemblePlacementPolicy.EnsembleForReplacementWithNoConstraints, TopologyAwareEnsemblePlacementPolicy.RRTopologyAwareCoverageEnsemble, TopologyAwareEnsemblePlacementPolicy.TruePredicateITopologyAwareEnsemblePlacementPolicy.Ensemble<T extends org.apache.bookkeeper.net.Node>, ITopologyAwareEnsemblePlacementPolicy.Predicate<T extends org.apache.bookkeeper.net.Node>EnsemblePlacementPolicy.PlacementPolicyAdherence, EnsemblePlacementPolicy.PlacementResult<T>| Modifier and Type | Field and Description |
|---|---|
(package private) RackawareEnsemblePlacementPolicyImpl |
slave |
enforceDurability, enforceMinNumRacksPerWriteQuorum, failedToResolveNetworkLocationCounter, ignoreLocalNodeInPlacementPolicy, LOCAL_FAIL_MASK, LOCAL_MASK, localNode, LOG, MASK_BITS, maxWeightMultiple, minNumRacksPerWriteQuorum, numWritableBookiesInDefaultRack, RACKNAME_DISTANCE_FROM_LEAVES, READ_ONLY_MASK, readReorderedCounter, REMOTE_FAIL_MASK, REMOTE_MASK, reorderReadsRandom, reorderThresholdPendingRequests, REPP_DNS_RESOLVER_CLASS, REPP_RANDOM_READ_REORDERING, SLOW_MASK, slowBookies, stabilizePeriodSeconds, statsLogger, timer, UNAVAIL_MASKbookieAddressResolver, bookieInfoMap, bookiesJoinedCounter, bookiesLeftCounter, dnsResolver, isWeighted, knownBookies, readOnlyBookies, rwLock, topology, weightedSelection| Constructor and Description |
|---|
RackawareEnsemblePlacementPolicy() |
RackawareEnsemblePlacementPolicy(boolean enforceDurability) |
| Modifier and Type | Method and Description |
|---|---|
void |
handleBookiesThatJoined(java.util.Set<org.apache.bookkeeper.net.BookieId> joinedBookies)
Handle bookies that joined.
|
void |
handleBookiesThatLeft(java.util.Set<org.apache.bookkeeper.net.BookieId> leftBookies)
Handle bookies that left.
|
protected RackawareEnsemblePlacementPolicy |
initialize(org.apache.bookkeeper.net.DNSToSwitchMapping dnsResolver,
io.netty.util.HashedWheelTimer timer,
boolean reorderReadsRandom,
int stabilizePeriodSeconds,
int reorderThresholdPendingRequests,
boolean isWeighted,
int maxWeightMultiple,
int minNumRacksPerWriteQuorum,
boolean enforceMinNumRacksPerWriteQuorum,
boolean ignoreLocalNodeInPlacementPolicy,
org.apache.bookkeeper.stats.StatsLogger statsLogger,
org.apache.bookkeeper.proto.BookieAddressResolver bookieAddressResolver)
Initialize the policy.
|
EnsemblePlacementPolicy.PlacementResult<java.util.List<org.apache.bookkeeper.net.BookieId>> |
newEnsemble(int ensembleSize,
int writeQuorumSize,
int ackQuorumSize,
java.util.Map<java.lang.String,byte[]> customMetadata,
java.util.Set<org.apache.bookkeeper.net.BookieId> excludeBookies)
Choose numBookies bookies for ensemble.
|
EnsemblePlacementPolicy.PlacementResult<java.util.List<org.apache.bookkeeper.net.BookieId>> |
newEnsemble(int ensembleSize,
int writeQuorumSize,
int ackQuorumSize,
java.util.Set<org.apache.bookkeeper.net.BookieId> excludeBookies,
ITopologyAwareEnsemblePlacementPolicy.Ensemble<org.apache.bookkeeper.net.BookieNode> parentEnsemble,
ITopologyAwareEnsemblePlacementPolicy.Predicate<org.apache.bookkeeper.net.BookieNode> parentPredicate)
Create an ensemble with parent ensemble.
|
java.util.Set<org.apache.bookkeeper.net.BookieId> |
onClusterChanged(java.util.Set<org.apache.bookkeeper.net.BookieId> writableBookies,
java.util.Set<org.apache.bookkeeper.net.BookieId> readOnlyBookies)
A consistent view of the cluster (what bookies are available as writable, what bookies are available as
readonly) is updated when any changes happen in the cluster.
|
DistributionSchedule.WriteSet |
reorderReadLACSequence(java.util.List<org.apache.bookkeeper.net.BookieId> ensemble,
BookiesHealthInfo bookiesHealthInfo,
DistributionSchedule.WriteSet writeSet)
Reorder the read last add confirmed sequence of a given write quorum writeSet.
|
DistributionSchedule.WriteSet |
reorderReadSequence(java.util.List<org.apache.bookkeeper.net.BookieId> ensemble,
BookiesHealthInfo bookiesHealthInfo,
DistributionSchedule.WriteSet writeSet)
Reorder the read sequence of a given write quorum writeSet.
|
EnsemblePlacementPolicy.PlacementResult<org.apache.bookkeeper.net.BookieId> |
replaceBookie(int ensembleSize,
int writeQuorumSize,
int ackQuorumSize,
java.util.Map<java.lang.String,byte[]> customMetadata,
java.util.List<org.apache.bookkeeper.net.BookieId> currentEnsemble,
org.apache.bookkeeper.net.BookieId bookieToReplace,
java.util.Set<org.apache.bookkeeper.net.BookieId> excludeBookies)
Choose a new bookie to replace bookieToReplace.
|
org.apache.bookkeeper.net.BookieNode |
selectFromNetworkLocation(java.util.Set<java.lang.String> excludeRacks,
java.util.Set<org.apache.bookkeeper.net.Node> excludeBookies,
ITopologyAwareEnsemblePlacementPolicy.Predicate<org.apache.bookkeeper.net.BookieNode> predicate,
ITopologyAwareEnsemblePlacementPolicy.Ensemble<org.apache.bookkeeper.net.BookieNode> ensemble,
boolean fallbackToRandom)
It randomly selects a
BookieNode that is not on the excludeRacks set, excluding the nodes in
excludeBookies set. |
org.apache.bookkeeper.net.BookieNode |
selectFromNetworkLocation(java.lang.String networkLoc,
java.util.Set<org.apache.bookkeeper.net.Node> excludeBookies,
ITopologyAwareEnsemblePlacementPolicy.Predicate<org.apache.bookkeeper.net.BookieNode> predicate,
ITopologyAwareEnsemblePlacementPolicy.Ensemble<org.apache.bookkeeper.net.BookieNode> ensemble,
boolean fallbackToRandom)
Select a node from a given network location.
|
org.apache.bookkeeper.net.BookieNode |
selectFromNetworkLocation(java.lang.String networkLoc,
java.util.Set<java.lang.String> excludeRacks,
java.util.Set<org.apache.bookkeeper.net.Node> excludeBookies,
ITopologyAwareEnsemblePlacementPolicy.Predicate<org.apache.bookkeeper.net.BookieNode> predicate,
ITopologyAwareEnsemblePlacementPolicy.Ensemble<org.apache.bookkeeper.net.BookieNode> ensemble,
boolean fallbackToRandom)
Select a node from networkLoc rack excluding excludeBookies.
|
void |
uninitalize()
Uninitialize the policy.
|
addDefaultRackBookiesIfMinNumRacksIsEnforced, areAckedBookiesAdheringToPlacementPolicy, getDefaultRack, initialize, isEnsembleAdheringToPlacementPolicy, newEnsembleInternal, registerSlowBookie, reorderReadSequenceWithRegion, selectRandom, selectRandomFromRack, selectRandomInternal, withDefaultRackconvertBookiesToNodes, createBookieNode, createDummyLocalBookieNode, getNetworkLocations, onBookieRackChange, resolveNetworkLocation, shuffleWithMask, updateBookieInfoclone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitonBookieRackChangeareAckedBookiesAdheringToPlacementPolicy, getStickyReadBookieIndex, initialize, isEnsembleAdheringToPlacementPolicy, registerSlowBookie, updateBookieInfoRackawareEnsemblePlacementPolicyImpl slave
public RackawareEnsemblePlacementPolicy()
public RackawareEnsemblePlacementPolicy(boolean enforceDurability)
protected RackawareEnsemblePlacementPolicy initialize(org.apache.bookkeeper.net.DNSToSwitchMapping dnsResolver, io.netty.util.HashedWheelTimer timer, boolean reorderReadsRandom, int stabilizePeriodSeconds, int reorderThresholdPendingRequests, boolean isWeighted, int maxWeightMultiple, int minNumRacksPerWriteQuorum, boolean enforceMinNumRacksPerWriteQuorum, boolean ignoreLocalNodeInPlacementPolicy, org.apache.bookkeeper.stats.StatsLogger statsLogger, org.apache.bookkeeper.proto.BookieAddressResolver bookieAddressResolver)
RackawareEnsemblePlacementPolicyImplinitialize in class RackawareEnsemblePlacementPolicyImpldnsResolver - the object used to resolve addresses to their network addresspublic void uninitalize()
EnsemblePlacementPolicyuninitalize in interface EnsemblePlacementPolicyuninitalize in class RackawareEnsemblePlacementPolicyImplpublic java.util.Set<org.apache.bookkeeper.net.BookieId> onClusterChanged(java.util.Set<org.apache.bookkeeper.net.BookieId> writableBookies,
java.util.Set<org.apache.bookkeeper.net.BookieId> readOnlyBookies)
EnsemblePlacementPolicyThe implementation should take actions when the cluster view is changed. So subsequent
EnsemblePlacementPolicy.newEnsemble(int, int, int, Map, Set) and
#replaceBookie(int, int, int, java.util.Map, java.util.Set,
org.apache.bookkeeper.net.BookieSocketAddress, java.util.Set)
can choose proper bookies.
onClusterChanged in interface EnsemblePlacementPolicyonClusterChanged in class TopologyAwareEnsemblePlacementPolicywritableBookies - All the bookies in the cluster available for write/read.readOnlyBookies - All the bookies in the cluster available for readonly.public EnsemblePlacementPolicy.PlacementResult<java.util.List<org.apache.bookkeeper.net.BookieId>> newEnsemble(int ensembleSize, int writeQuorumSize, int ackQuorumSize, java.util.Map<java.lang.String,byte[]> customMetadata, java.util.Set<org.apache.bookkeeper.net.BookieId> excludeBookies) throws BKException.BKNotEnoughBookiesException
EnsemblePlacementPolicyBKException.BKNotEnoughBookiesException is thrown.
The implementation should respect to the replace settings. The size of the returned bookie list
should be equal to the provide ensembleSize.
customMetadata is the same user defined data that user provides
when BookKeeper.createLedger(int, int, int, BookKeeper.DigestType, byte[], Map).
If 'enforceMinNumRacksPerWriteQuorum' config is enabled then the bookies belonging to default faultzone (rack) will be excluded while selecting bookies.
newEnsemble in interface EnsemblePlacementPolicynewEnsemble in class RackawareEnsemblePlacementPolicyImplensembleSize - Ensemble SizewriteQuorumSize - Write Quorum SizeackQuorumSize - the value of ackQuorumSize (added since 4.5)customMetadata - the value of customMetadata. it is the same user defined metadata that user
provides in BookKeeper.createLedger(int, int, int, BookKeeper.DigestType, byte[])excludeBookies - Bookies that should not be considered as targets.BKException.BKNotEnoughBookiesException - if not enough bookies available.public EnsemblePlacementPolicy.PlacementResult<org.apache.bookkeeper.net.BookieId> replaceBookie(int ensembleSize, int writeQuorumSize, int ackQuorumSize, java.util.Map<java.lang.String,byte[]> customMetadata, java.util.List<org.apache.bookkeeper.net.BookieId> currentEnsemble, org.apache.bookkeeper.net.BookieId bookieToReplace, java.util.Set<org.apache.bookkeeper.net.BookieId> excludeBookies) throws BKException.BKNotEnoughBookiesException
EnsemblePlacementPolicyBKException.BKNotEnoughBookiesException is thrown.
If 'enforceMinNumRacksPerWriteQuorum' config is enabled then the bookies belonging to default faultzone (rack) will be excluded while selecting bookies.
replaceBookie in interface EnsemblePlacementPolicyreplaceBookie in class RackawareEnsemblePlacementPolicyImplensembleSize - the value of ensembleSizewriteQuorumSize - the value of writeQuorumSizeackQuorumSize - the value of ackQuorumSize (added since 4.5)customMetadata - the value of customMetadata. it is the same user defined metadata that user
provides in BookKeeper.createLedger(int, int, int, BookKeeper.DigestType, byte[])currentEnsemble - the value of currentEnsemblebookieToReplace - bookie to replaceexcludeBookies - bookies that should not be considered as candidate.BKException.BKNotEnoughBookiesExceptionpublic DistributionSchedule.WriteSet reorderReadSequence(java.util.List<org.apache.bookkeeper.net.BookieId> ensemble, BookiesHealthInfo bookiesHealthInfo, DistributionSchedule.WriteSet writeSet)
EnsemblePlacementPolicyreorderReadSequence in interface EnsemblePlacementPolicyreorderReadSequence in class RackawareEnsemblePlacementPolicyImplensemble - Ensemble to read entries.bookiesHealthInfo - Health info for bookieswriteSet - Write quorum to read entries. This will be modified, rather than
allocating a new WriteSet.public DistributionSchedule.WriteSet reorderReadLACSequence(java.util.List<org.apache.bookkeeper.net.BookieId> ensemble, BookiesHealthInfo bookiesHealthInfo, DistributionSchedule.WriteSet writeSet)
EnsemblePlacementPolicyreorderReadLACSequence in interface EnsemblePlacementPolicyreorderReadLACSequence in class TopologyAwareEnsemblePlacementPolicyensemble - Ensemble to read entries.bookiesHealthInfo - Health info for bookieswriteSet - Write quorum to read entries. This will be modified, rather than
allocating a new WriteSet.public EnsemblePlacementPolicy.PlacementResult<java.util.List<org.apache.bookkeeper.net.BookieId>> newEnsemble(int ensembleSize, int writeQuorumSize, int ackQuorumSize, java.util.Set<org.apache.bookkeeper.net.BookieId> excludeBookies, ITopologyAwareEnsemblePlacementPolicy.Ensemble<org.apache.bookkeeper.net.BookieNode> parentEnsemble, ITopologyAwareEnsemblePlacementPolicy.Predicate<org.apache.bookkeeper.net.BookieNode> parentPredicate) throws BKException.BKNotEnoughBookiesException
ITopologyAwareEnsemblePlacementPolicynewEnsemble in interface ITopologyAwareEnsemblePlacementPolicy<org.apache.bookkeeper.net.BookieNode>newEnsemble in class RackawareEnsemblePlacementPolicyImplensembleSize - ensemble sizewriteQuorumSize - write quorum sizeackQuorumSize - ack quorum sizeexcludeBookies - exclude bookiesparentEnsemble - parent ensembleBKException.BKNotEnoughBookiesExceptionpublic org.apache.bookkeeper.net.BookieNode selectFromNetworkLocation(java.lang.String networkLoc,
java.util.Set<org.apache.bookkeeper.net.Node> excludeBookies,
ITopologyAwareEnsemblePlacementPolicy.Predicate<org.apache.bookkeeper.net.BookieNode> predicate,
ITopologyAwareEnsemblePlacementPolicy.Ensemble<org.apache.bookkeeper.net.BookieNode> ensemble,
boolean fallbackToRandom)
throws BKException.BKNotEnoughBookiesException
ITopologyAwareEnsemblePlacementPolicyselectFromNetworkLocation in interface ITopologyAwareEnsemblePlacementPolicy<org.apache.bookkeeper.net.BookieNode>selectFromNetworkLocation in class RackawareEnsemblePlacementPolicyImplnetworkLoc - network locationexcludeBookies - exclude bookies setpredicate - predicate to applyensemble - ensemblefallbackToRandom - fallbackToRandomBKException.BKNotEnoughBookiesExceptionpublic org.apache.bookkeeper.net.BookieNode selectFromNetworkLocation(java.util.Set<java.lang.String> excludeRacks,
java.util.Set<org.apache.bookkeeper.net.Node> excludeBookies,
ITopologyAwareEnsemblePlacementPolicy.Predicate<org.apache.bookkeeper.net.BookieNode> predicate,
ITopologyAwareEnsemblePlacementPolicy.Ensemble<org.apache.bookkeeper.net.BookieNode> ensemble,
boolean fallbackToRandom)
throws BKException.BKNotEnoughBookiesException
RackawareEnsemblePlacementPolicyImplBookieNode that is not on the excludeRacks set, excluding the nodes in
excludeBookies set. If it fails to find one, it selects a random BookieNode from the whole
cluster.selectFromNetworkLocation in interface ITopologyAwareEnsemblePlacementPolicy<org.apache.bookkeeper.net.BookieNode>selectFromNetworkLocation in class RackawareEnsemblePlacementPolicyImplBKException.BKNotEnoughBookiesExceptionpublic org.apache.bookkeeper.net.BookieNode selectFromNetworkLocation(java.lang.String networkLoc,
java.util.Set<java.lang.String> excludeRacks,
java.util.Set<org.apache.bookkeeper.net.Node> excludeBookies,
ITopologyAwareEnsemblePlacementPolicy.Predicate<org.apache.bookkeeper.net.BookieNode> predicate,
ITopologyAwareEnsemblePlacementPolicy.Ensemble<org.apache.bookkeeper.net.BookieNode> ensemble,
boolean fallbackToRandom)
throws BKException.BKNotEnoughBookiesException
ITopologyAwareEnsemblePlacementPolicyselectFromNetworkLocation in interface ITopologyAwareEnsemblePlacementPolicy<org.apache.bookkeeper.net.BookieNode>selectFromNetworkLocation in class RackawareEnsemblePlacementPolicyImplBKException.BKNotEnoughBookiesExceptionpublic void handleBookiesThatLeft(java.util.Set<org.apache.bookkeeper.net.BookieId> leftBookies)
ITopologyAwareEnsemblePlacementPolicyhandleBookiesThatLeft in interface ITopologyAwareEnsemblePlacementPolicy<org.apache.bookkeeper.net.BookieNode>handleBookiesThatLeft in class TopologyAwareEnsemblePlacementPolicyleftBookies - bookies that leftpublic void handleBookiesThatJoined(java.util.Set<org.apache.bookkeeper.net.BookieId> joinedBookies)
ITopologyAwareEnsemblePlacementPolicyhandleBookiesThatJoined in interface ITopologyAwareEnsemblePlacementPolicy<org.apache.bookkeeper.net.BookieNode>handleBookiesThatJoined in class TopologyAwareEnsemblePlacementPolicyjoinedBookies - bookies that joined.Copyright © 2011–2024 The Apache Software Foundation. All rights reserved.