org.apache.hadoop.yarn.server.resourcemanager.recovery
Class ZKRMStateStore

java.lang.Object
  extended by org.apache.hadoop.service.AbstractService
      extended by org.apache.hadoop.yarn.server.resourcemanager.recovery.RMStateStore
          extended by org.apache.hadoop.yarn.server.resourcemanager.recovery.ZKRMStateStore
All Implemented Interfaces:
Closeable, org.apache.hadoop.service.Service

@InterfaceAudience.Private
@InterfaceStability.Unstable
public class ZKRMStateStore
extends RMStateStore

Changes from 1.1 to 1.2, AMRMTokenSecretManager state has been saved separately. The currentMasterkey and nextMasterkey have been stored. Also, AMRMToken has been removed from ApplicationAttemptState.


Nested Class Summary
 
Nested classes/interfaces inherited from class org.apache.hadoop.yarn.server.resourcemanager.recovery.RMStateStore
RMStateStore.ApplicationAttemptState, RMStateStore.ApplicationState, RMStateStore.RMDTSecretManagerState, RMStateStore.RMState
 
Nested classes/interfaces inherited from interface org.apache.hadoop.service.Service
org.apache.hadoop.service.Service.STATE
 
Field Summary
static int CREATE_DELETE_PERMS
           
protected static org.apache.hadoop.yarn.server.records.Version CURRENT_VERSION_INFO
           
static org.apache.commons.logging.Log LOG
           
protected static String ROOT_ZNODE_NAME
           
protected  org.apache.zookeeper.ZooKeeper zkClient
           
protected  String znodeWorkingPath
           
 
Fields inherited from class org.apache.hadoop.yarn.server.resourcemanager.recovery.RMStateStore
AM_CLIENT_TOKEN_MASTER_KEY_NAME, AM_RM_TOKEN_SERVICE, AMRMTOKEN_SECRET_MANAGER_ROOT, DELEGATION_KEY_PREFIX, DELEGATION_TOKEN_PREFIX, DELEGATION_TOKEN_SEQUENCE_NUMBER_PREFIX, EPOCH_NODE, RM_APP_ROOT, RM_DT_SECRET_MANAGER_ROOT, VERSION_NODE
 
Constructor Summary
ZKRMStateStore()
           
 
Method Summary
protected  void closeInternal()
          Derived classes close themselves using this method.
protected  List<org.apache.zookeeper.data.ACL> constructZkRootNodeACL(org.apache.hadoop.conf.Configuration conf, List<org.apache.zookeeper.data.ACL> sourceACLs)
          Given the Configuration and ACLs used (zkAcl) for ZooKeeper access, construct the ACLs for the store's root node.
 void createWithRetries(String path, byte[] data, List<org.apache.zookeeper.data.ACL> acl, org.apache.zookeeper.CreateMode mode)
           
 void deleteStore()
          Derived classes must implement this method to delete the state store
 long getAndIncrementEpoch()
          Get the current epoch of RM and increment the value.
protected  org.apache.hadoop.yarn.server.records.Version getCurrentVersion()
          Get the current version of the underlying state store.
 byte[] getDataWithRetries(String path, boolean watch)
           
protected  org.apache.zookeeper.ZooKeeper getNewZooKeeper()
           
 void initInternal(org.apache.hadoop.conf.Configuration conf)
          Derived classes initialize themselves using this method.
 RMStateStore.RMState loadState()
          Blocking API The derived class must recover state from the store and return a new RMState object populated with that state This must not be called on the dispatcher thread
protected  org.apache.hadoop.yarn.server.records.Version loadVersion()
          Derived class use this method to load the version information from state store.
 void processWatchEvent(org.apache.zookeeper.WatchedEvent event)
           
 void removeApplicationStateInternal(RMStateStore.ApplicationState appState)
          Blocking API Derived classes must implement this method to remove the state of an application and its attempts
protected  void removeRMDelegationTokenState(org.apache.hadoop.yarn.security.client.RMDelegationTokenIdentifier rmDTIdentifier)
          Blocking API Derived classes must implement this method to remove the state of RMDelegationToken
protected  void removeRMDTMasterKeyState(org.apache.hadoop.security.token.delegation.DelegationKey delegationKey)
          Blocking API Derived classes must implement this method to remove the state of DelegationToken Master Key
 void setDataWithRetries(String path, byte[] data, int version)
           
 void startInternal()
          Derived classes start themselves using this method.
 void storeApplicationAttemptStateInternal(org.apache.hadoop.yarn.api.records.ApplicationAttemptId appAttemptId, ApplicationAttemptStateData attemptStateDataPB)
          Blocking API Derived classes must implement this method to store the state of an application attempt
 void storeApplicationStateInternal(org.apache.hadoop.yarn.api.records.ApplicationId appId, ApplicationStateData appStateDataPB)
          Blocking API Derived classes must implement this method to store the state of an application.
 void storeOrUpdateAMRMTokenSecretManagerState(AMRMTokenSecretManagerState amrmTokenSecretManagerState, boolean isUpdate)
          Blocking API Derived classes must implement this method to store or update the state of AMRMToken Master Key
protected  void storeRMDelegationTokenAndSequenceNumberState(org.apache.hadoop.yarn.security.client.RMDelegationTokenIdentifier rmDTIdentifier, Long renewDate, int latestSequenceNumber)
          Blocking API Derived classes must implement this method to store the state of RMDelegationToken and sequence number
protected  void storeRMDTMasterKeyState(org.apache.hadoop.security.token.delegation.DelegationKey delegationKey)
          Blocking API Derived classes must implement this method to store the state of DelegationToken Master Key
protected  void storeVersion()
          Derived class use this method to store the version information.
 void updateApplicationAttemptStateInternal(org.apache.hadoop.yarn.api.records.ApplicationAttemptId appAttemptId, ApplicationAttemptStateData attemptStateDataPB)
           
 void updateApplicationStateInternal(org.apache.hadoop.yarn.api.records.ApplicationId appId, ApplicationStateData appStateDataPB)
           
protected  void updateRMDelegationTokenAndSequenceNumberInternal(org.apache.hadoop.yarn.security.client.RMDelegationTokenIdentifier rmDTIdentifier, Long renewDate, int latestSequenceNumber)
          Blocking API Derived classes must implement this method to update the state of RMDelegationToken and sequence number
 
Methods inherited from class org.apache.hadoop.yarn.server.resourcemanager.recovery.RMStateStore
checkVersion, getCredentialsFromAppAttempt, handleStoreEvent, notifyStoreOperationFailed, removeApplication, removeRMDelegationToken, removeRMDTMasterKey, serviceInit, serviceStart, serviceStop, setResourceManager, setRMDispatcher, storeNewApplication, storeNewApplicationAttempt, storeRMDelegationTokenAndSequenceNumber, storeRMDTMasterKey, updateApplicationAttemptState, updateApplicationState, updateRMDelegationTokenAndSequenceNumber
 
Methods inherited from class org.apache.hadoop.service.AbstractService
close, getBlockers, getConfig, getFailureCause, getFailureState, getLifecycleHistory, getName, getServiceState, getStartTime, init, isInState, noteFailure, putBlocker, registerGlobalListener, registerServiceListener, removeBlocker, setConfig, start, stop, toString, unregisterGlobalListener, unregisterServiceListener, waitForServiceToStop
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

LOG

public static final org.apache.commons.logging.Log LOG

ROOT_ZNODE_NAME

protected static final String ROOT_ZNODE_NAME
See Also:
Constant Field Values

CURRENT_VERSION_INFO

protected static final org.apache.hadoop.yarn.server.records.Version CURRENT_VERSION_INFO

znodeWorkingPath

protected String znodeWorkingPath

zkClient

protected org.apache.zookeeper.ZooKeeper zkClient

CREATE_DELETE_PERMS

public static final int CREATE_DELETE_PERMS
See Also:
Constant Field Values
Constructor Detail

ZKRMStateStore

public ZKRMStateStore()
Method Detail

constructZkRootNodeACL

@InterfaceAudience.Private
@InterfaceStability.Unstable
protected List<org.apache.zookeeper.data.ACL> constructZkRootNodeACL(org.apache.hadoop.conf.Configuration conf,
                                                                                                                           List<org.apache.zookeeper.data.ACL> sourceACLs)
                                                              throws NoSuchAlgorithmException
Given the Configuration and ACLs used (zkAcl) for ZooKeeper access, construct the ACLs for the store's root node. In the constructed ACL, all the users allowed by zkAcl are given rwa access, while the current RM has exclude create-delete access. To be called only when HA is enabled and the configuration doesn't set ACL for the root node.

Throws:
NoSuchAlgorithmException

initInternal

public void initInternal(org.apache.hadoop.conf.Configuration conf)
                  throws Exception
Description copied from class: RMStateStore
Derived classes initialize themselves using this method.

Specified by:
initInternal in class RMStateStore
Throws:
Exception

startInternal

public void startInternal()
                   throws Exception
Description copied from class: RMStateStore
Derived classes start themselves using this method. The base class is started and the event dispatcher is ready to use at this point

Specified by:
startInternal in class RMStateStore
Throws:
Exception

closeInternal

protected void closeInternal()
                      throws Exception
Description copied from class: RMStateStore
Derived classes close themselves using this method. The base class will be closed and the event dispatcher will be shutdown after this

Specified by:
closeInternal in class RMStateStore
Throws:
Exception

getCurrentVersion

protected org.apache.hadoop.yarn.server.records.Version getCurrentVersion()
Description copied from class: RMStateStore
Get the current version of the underlying state store.

Specified by:
getCurrentVersion in class RMStateStore

storeVersion

protected void storeVersion()
                     throws Exception
Description copied from class: RMStateStore
Derived class use this method to store the version information.

Specified by:
storeVersion in class RMStateStore
Throws:
Exception

loadVersion

protected org.apache.hadoop.yarn.server.records.Version loadVersion()
                                                             throws Exception
Description copied from class: RMStateStore
Derived class use this method to load the version information from state store.

Specified by:
loadVersion in class RMStateStore
Throws:
Exception

getAndIncrementEpoch

public long getAndIncrementEpoch()
                          throws Exception
Description copied from class: RMStateStore
Get the current epoch of RM and increment the value.

Specified by:
getAndIncrementEpoch in class RMStateStore
Throws:
Exception

loadState

public RMStateStore.RMState loadState()
                               throws Exception
Description copied from class: RMStateStore
Blocking API The derived class must recover state from the store and return a new RMState object populated with that state This must not be called on the dispatcher thread

Specified by:
loadState in class RMStateStore
Throws:
Exception

storeApplicationStateInternal

public void storeApplicationStateInternal(org.apache.hadoop.yarn.api.records.ApplicationId appId,
                                          ApplicationStateData appStateDataPB)
                                   throws Exception
Description copied from class: RMStateStore
Blocking API Derived classes must implement this method to store the state of an application.

Specified by:
storeApplicationStateInternal in class RMStateStore
Throws:
Exception

updateApplicationStateInternal

public void updateApplicationStateInternal(org.apache.hadoop.yarn.api.records.ApplicationId appId,
                                           ApplicationStateData appStateDataPB)
                                    throws Exception
Specified by:
updateApplicationStateInternal in class RMStateStore
Throws:
Exception

storeApplicationAttemptStateInternal

public void storeApplicationAttemptStateInternal(org.apache.hadoop.yarn.api.records.ApplicationAttemptId appAttemptId,
                                                 ApplicationAttemptStateData attemptStateDataPB)
                                          throws Exception
Description copied from class: RMStateStore
Blocking API Derived classes must implement this method to store the state of an application attempt

Specified by:
storeApplicationAttemptStateInternal in class RMStateStore
Throws:
Exception

updateApplicationAttemptStateInternal

public void updateApplicationAttemptStateInternal(org.apache.hadoop.yarn.api.records.ApplicationAttemptId appAttemptId,
                                                  ApplicationAttemptStateData attemptStateDataPB)
                                           throws Exception
Specified by:
updateApplicationAttemptStateInternal in class RMStateStore
Throws:
Exception

removeApplicationStateInternal

public void removeApplicationStateInternal(RMStateStore.ApplicationState appState)
                                    throws Exception
Description copied from class: RMStateStore
Blocking API Derived classes must implement this method to remove the state of an application and its attempts

Specified by:
removeApplicationStateInternal in class RMStateStore
Throws:
Exception

storeRMDelegationTokenAndSequenceNumberState

protected void storeRMDelegationTokenAndSequenceNumberState(org.apache.hadoop.yarn.security.client.RMDelegationTokenIdentifier rmDTIdentifier,
                                                            Long renewDate,
                                                            int latestSequenceNumber)
                                                     throws Exception
Description copied from class: RMStateStore
Blocking API Derived classes must implement this method to store the state of RMDelegationToken and sequence number

Specified by:
storeRMDelegationTokenAndSequenceNumberState in class RMStateStore
Throws:
Exception

removeRMDelegationTokenState

protected void removeRMDelegationTokenState(org.apache.hadoop.yarn.security.client.RMDelegationTokenIdentifier rmDTIdentifier)
                                     throws Exception
Description copied from class: RMStateStore
Blocking API Derived classes must implement this method to remove the state of RMDelegationToken

Specified by:
removeRMDelegationTokenState in class RMStateStore
Throws:
Exception

updateRMDelegationTokenAndSequenceNumberInternal

protected void updateRMDelegationTokenAndSequenceNumberInternal(org.apache.hadoop.yarn.security.client.RMDelegationTokenIdentifier rmDTIdentifier,
                                                                Long renewDate,
                                                                int latestSequenceNumber)
                                                         throws Exception
Description copied from class: RMStateStore
Blocking API Derived classes must implement this method to update the state of RMDelegationToken and sequence number

Specified by:
updateRMDelegationTokenAndSequenceNumberInternal in class RMStateStore
Throws:
Exception

storeRMDTMasterKeyState

protected void storeRMDTMasterKeyState(org.apache.hadoop.security.token.delegation.DelegationKey delegationKey)
                                throws Exception
Description copied from class: RMStateStore
Blocking API Derived classes must implement this method to store the state of DelegationToken Master Key

Specified by:
storeRMDTMasterKeyState in class RMStateStore
Throws:
Exception

removeRMDTMasterKeyState

protected void removeRMDTMasterKeyState(org.apache.hadoop.security.token.delegation.DelegationKey delegationKey)
                                 throws Exception
Description copied from class: RMStateStore
Blocking API Derived classes must implement this method to remove the state of DelegationToken Master Key

Specified by:
removeRMDTMasterKeyState in class RMStateStore
Throws:
Exception

deleteStore

public void deleteStore()
                 throws Exception
Description copied from class: RMStateStore
Derived classes must implement this method to delete the state store

Specified by:
deleteStore in class RMStateStore
Throws:
Exception

processWatchEvent

@InterfaceAudience.Private
@InterfaceStability.Unstable
public void processWatchEvent(org.apache.zookeeper.WatchedEvent event)
                       throws Exception
Throws:
Exception

createWithRetries

@InterfaceAudience.Private
@InterfaceStability.Unstable
public void createWithRetries(String path,
                                                                                    byte[] data,
                                                                                    List<org.apache.zookeeper.data.ACL> acl,
                                                                                    org.apache.zookeeper.CreateMode mode)
                       throws Exception
Throws:
Exception

setDataWithRetries

@InterfaceAudience.Private
@InterfaceStability.Unstable
public void setDataWithRetries(String path,
                                                                                     byte[] data,
                                                                                     int version)
                        throws Exception
Throws:
Exception

getDataWithRetries

@InterfaceAudience.Private
@InterfaceStability.Unstable
public byte[] getDataWithRetries(String path,
                                                                                       boolean watch)
                          throws Exception
Throws:
Exception

getNewZooKeeper

@InterfaceAudience.Private
@InterfaceStability.Unstable
protected org.apache.zookeeper.ZooKeeper getNewZooKeeper()
                                                  throws IOException,
                                                         InterruptedException
Throws:
IOException
InterruptedException

storeOrUpdateAMRMTokenSecretManagerState

public void storeOrUpdateAMRMTokenSecretManagerState(AMRMTokenSecretManagerState amrmTokenSecretManagerState,
                                                     boolean isUpdate)
Description copied from class: RMStateStore
Blocking API Derived classes must implement this method to store or update the state of AMRMToken Master Key

Specified by:
storeOrUpdateAMRMTokenSecretManagerState in class RMStateStore


Copyright © 2014 Apache Software Foundation. All Rights Reserved.