com.nhncorp.neptune.tabletserver
Class TabletServer

java.lang.Object
  extended by com.nhncorp.neptune.tabletserver.TabletServer
All Implemented Interfaces:
ProxyObject, Constants, NVersionedProtocol, DataServiceProtocol, TabletManagerProtocol, TabletServerIF, java.lang.Runnable

public class TabletServer
extends java.lang.Object
implements TabletServerIF

Tablet을 관리하는 메인 서버
Neptune을 구성하는 세가지 데몬(NeptuneMaster, TabletServer, ChangeLogServer) 서버 중 하나이다.

다음과 같은 기능을 수행한다.

  • 1. Tablet의 데이터 서비스(get, put)
  • Author:
    nhn

    Field Summary
    static org.apache.commons.logging.Log LOG
               
     
    Fields inherited from interface com.nhncorp.neptune.tabletserver.TabletManagerProtocol
    versionID
     
    Fields inherited from interface com.nhncorp.neptune.tabletserver.DataServiceProtocol
    versionID
     
    Fields inherited from interface com.nhncorp.neptune.common.Constants
    BATCH_RECEIVER_SUCCESS, BATCH_UPLOAD, CHANGELOG_SERVER, COMPACTION, DELETEED, END_RECEIVE_ROW, GROUPS, INDEX_INTERVAL_LENGH, INSERTED, LOG_OP_ADD_COLUMN_VALUE, LOG_OP_CREATE_ROW, LOG_OP_DELETE_COLUMN_VALUE, LOG_OP_MODIFY_META, MAP_RECORD_COLUMN, MAP_RECORD_ROW, MASTER, MASTER_SERVER, MAX_KEY_LENGTH, MAX_VALUE, META_COLUMN_NAME_TABLETINFO, MIN_VALUE, NEPTUNE, OPEN_SCANNER, PATH_SCHEMA, PIPE_CL_FILE_NAME, PROCESS, ROOT_TABLET, SCANNER_END, SCANNER_OPEN_FAIL, SCANNER_OPEN_SUCCESS, SCHEMA_DESCRIPTION_FILE_NAME, SCHEMA_INFO_FILENAME, SERVER, SPLIT, SPLIT_INFO, SPLIT_STORE, SUPERGROUP, TABLE_DROP, TABLE_LOCK, TABLE_NAME_META, TABLE_NAME_ROOT, TABLET_ALIVE, TABLET_ASSIGN, TABLET_AVAIL, TABLET_CREATED, TABLET_DROP, TABLET_FAIL, TABLET_STOP_MARK, TABLETSERVER_SPLIT, TEST_MODE, UPLOAD_END, UPLOAD_FAIL, UPLOAD_START_ROW, UPLOADER, USERS
     
    Constructor Summary
    TabletServer()
               
     
    Method Summary
     void addColumn(java.lang.String tableName, java.lang.String tabletName, java.lang.String addedColumnName)
               
     boolean apply(java.lang.String tabletName, Row.Key rowKey, TxId txId, ChangeLog[] changeLogList, boolean saveLog)
               
     void assignTablet(TabletInfo tabletInfo)
               
     boolean canUpload()
               
     boolean checkServer()
               
     void commit(TxId txId)
               
     void commit(TxId txId, boolean saveLog)
               
     void commit(TxId txId, ChangeLog[] changeLogList, boolean saveLog)
               
     void deleteColumnValue(TxId txId, java.lang.String columnName, Cell.Key columnKey)
               
     void doActionForTest(java.lang.String tabletName, java.lang.String action)
               
     boolean dropTable(java.lang.String taskId, java.lang.String tableName)
               
     java.lang.String endBatchUploader(java.lang.String actionId, java.lang.String tabletName, java.lang.String[] columnNames, java.lang.String[] mapFileIds, java.lang.String[] mapFilePaths)
               
     void endTabletAssignmentForHandler(TabletInfo tabletInfo, boolean create)
              테스트 코드를 위해 NeptuneMaster로 전송하는 부분을 인터페이스로 빼서 처리.
     boolean existsTxId(TxId txId)
               
     ColumnValue[][] get(java.lang.String tabletName, Row.Key rowKey)
               
     ColumnValue[][] get(java.lang.String tabletName, Row.Key rowKey, java.lang.String[] columnNames)
               
     ColumnValue get(java.lang.String tabletName, Row.Key rowKey, java.lang.String columnName, Cell.Key columnKey)
               
     RowColumnValues[] get(java.lang.String tabletName, RowFilter scanFilter)
               
     java.lang.String[] getAllActions(java.lang.String tabletName)
               
     ColumnValue[] getAllMemoryValues(java.lang.String tabletName, java.lang.String columnName)
              ROOT, META 테이블 검증용으로 사용된다.
     AsyncTaskStatus getAsyncTaskStatus(java.lang.String taskId)
               
     ColumnValue getCloestMetaData(java.lang.String tabletName, Row.Key rowKey)
              해당 rowkey보다 작은 레코드 중 가장 큰 레코드를 조회한다.
     NConfiguration getConf()
               
     java.lang.String getHostName()
               
     java.lang.String getProperty(java.lang.String key, java.lang.String defaultValue)
               
     long getProtocolVersion(java.lang.String protocol, long clientVersion)
              Return protocol version corresponding to protocol interface.
     TabletServerStatus getServerStatus()
               
     Row.Key[] getSplitedRowKeyRanges(java.lang.String tabletName, int splitPerTablet)
              TabletInputFormat에서 사용하는 메소드로 Tablet의 rowkey 목록에서 splitPerTablet 갯수만큼 범위를 나누어 각 범위의 마지막 rowkey 값을 반환한다. map 갯수 만큼 input 영역을 나누기 위해서 사용한다.
     Tablet getTablet(java.lang.String tabletName)
               
     TabletReport getTabletDetailInfo(java.lang.String tabletName)
               
     TabletInfo getTabletInfo(java.lang.String tabletName)
               
     java.lang.String getTabletServerConf(java.lang.String key)
               
     java.lang.String getTabletServerLockPath()
               
     java.lang.String getTestHandlerKey()
               
     boolean hasValue(java.lang.String tabletName, java.lang.String columnName, Row.Key rowKey)
              Tablet에 rowKey 값이 존재하는 지 반환한다.
     void init(TabletServerIF proxyObject, NConfiguration conf)
               
     void insertColumnValue(TxId txId, java.lang.String[] columnNames, ColumnValue[][] columnValues)
               
     void insertColumnValue(TxId txId, java.lang.String columnName, ColumnValue[] columnValues)
              생성된 Row에 컬럼값을 추가한다.
     void insertRow(java.lang.String tabletName, Row.Key rowKey, java.lang.String[] columnNames, ColumnValue[][] columnValues)
              하나의 row 전체 데이터를 입력한다.
     boolean isServicedTablet(java.lang.String tabletName)
              TabletServer가 특정 tablet에 대해 DataServer를 하고 있는지 여부를 반환한다.
     boolean isShutdowned()
               
    static void main(java.lang.String[] args)
               
     void modifyMetaDataForSplit(Tablet targetTablet, Tablet[] splitedTablets)
               
     ColumnValue[] next(java.lang.String scannerId)
               
     void printMeta(java.lang.String tabletName)
               
     void printTabletInfo(java.lang.String tabletName)
               
     void removeRow(TxId txId, long timestamp)
               
     TabletInfo[] reportTablets()
               
     void reportTabletSplited(Tablet targetTablet, Tablet[] splitedTablets)
               
     Row.Key rollback(TxId txId)
               
     void run()
               
     void saveTabletSplitedInfo(java.lang.String tabletName, TabletInfo targetTablet, TabletInfo[] splitedTablets)
               
     void setProperty(java.lang.String key, java.lang.String value)
               
     void shutdown()
               
     void splitForTest(TabletInfo tabletInfo)
               
     java.lang.String startBatchUploader(java.lang.String tabletName)
               
     TxId startTx(java.lang.String tabletName, Row.Key rowKey)
              Row에 트렌젝션을 시작한다.
     TxId startTx(java.lang.String tabletName, Row.Key rowKey, boolean systemTimestamp)
              Row에 트렌젝션을 시작한다.
     void stopAction(java.lang.String tableName, java.lang.String tabletActionClassName)
               
     void stopAllTablets()
               
     void tabletSplited(Tablet targetTablet, Tablet[] splitedTablets)
               
     java.lang.String test(long sleepTime, java.lang.String echo)
               
     ColumnValue[][] testRPC()
               
     void touch(java.lang.String leaseId)
              Client API에서 강제적으로 TabletServer에 있는 lease 항목을 touch 한다.
     void truncateColumn(java.lang.String tabletName, java.lang.String columnName)
               
     void updateColumnValue(TxId txId, java.lang.String columnName, ColumnValue[] records)
               
     void updateOrInsertColumnValue(TxId txId, java.lang.String columnName, ColumnValue[] records)
               
     
    Methods inherited from class java.lang.Object
    equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
     

    Field Detail

    LOG

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

    TabletServer

    public TabletServer()
    Method Detail

    init

    public void init(TabletServerIF proxyObject,
                     NConfiguration conf)
              throws java.io.IOException
    Specified by:
    init in interface TabletServerIF
    Throws:
    java.io.IOException

    getTabletServerConf

    public java.lang.String getTabletServerConf(java.lang.String key)
                                         throws java.io.IOException
    Specified by:
    getTabletServerConf in interface DataServiceProtocol
    Throws:
    java.io.IOException

    getHostName

    public java.lang.String getHostName()
    Specified by:
    getHostName in interface TabletServerIF

    printTabletInfo

    public void printTabletInfo(java.lang.String tabletName)
                         throws java.io.IOException
    Specified by:
    printTabletInfo in interface TabletManagerProtocol
    Throws:
    java.io.IOException

    getAllActions

    public java.lang.String[] getAllActions(java.lang.String tabletName)
                                     throws java.io.IOException
    Specified by:
    getAllActions in interface DataServiceProtocol
    Returns:
    Throws:
    java.io.IOException

    assignTablet

    public void assignTablet(TabletInfo tabletInfo)
    Specified by:
    assignTablet in interface TabletManagerProtocol

    reportTablets

    public TabletInfo[] reportTablets()
    Specified by:
    reportTablets in interface TabletManagerProtocol
    Returns:

    insertRow

    public void insertRow(java.lang.String tabletName,
                          Row.Key rowKey,
                          java.lang.String[] columnNames,
                          ColumnValue[][] columnValues)
                   throws java.io.IOException
    Description copied from interface: DataServiceProtocol
    하나의 row 전체 데이터를 입력한다. startTx, insertColumnValue, commit 처리를 한번에 수행, 많은 양의 데이터를 입력할 때 사용

    Specified by:
    insertRow in interface DataServiceProtocol
    Throws:
    java.io.IOException

    insertColumnValue

    public void insertColumnValue(TxId txId,
                                  java.lang.String columnName,
                                  ColumnValue[] columnValues)
                           throws java.io.IOException
    Description copied from interface: DataServiceProtocol
    생성된 Row에 컬럼값을 추가한다.

    Specified by:
    insertColumnValue in interface DataServiceProtocol
    Throws:
    java.io.IOException

    insertColumnValue

    public void insertColumnValue(TxId txId,
                                  java.lang.String[] columnNames,
                                  ColumnValue[][] columnValues)
                           throws java.io.IOException
    Specified by:
    insertColumnValue in interface DataServiceProtocol
    Throws:
    java.io.IOException

    commit

    public void commit(TxId txId)
                throws java.io.IOException
    Specified by:
    commit in interface DataServiceProtocol
    Throws:
    java.io.IOException

    commit

    public void commit(TxId txId,
                       boolean saveLog)
                throws java.io.IOException
    Specified by:
    commit in interface DataServiceProtocol
    Throws:
    java.io.IOException

    commit

    public void commit(TxId txId,
                       ChangeLog[] changeLogList,
                       boolean saveLog)
                throws java.io.IOException
    Specified by:
    commit in interface DataServiceProtocol
    Throws:
    java.io.IOException

    apply

    public boolean apply(java.lang.String tabletName,
                         Row.Key rowKey,
                         TxId txId,
                         ChangeLog[] changeLogList,
                         boolean saveLog)
                  throws java.io.IOException
    Specified by:
    apply in interface DataServiceProtocol
    Throws:
    java.io.IOException

    startTx

    public TxId startTx(java.lang.String tabletName,
                        Row.Key rowKey)
                 throws java.io.IOException
    Description copied from interface: DataServiceProtocol
    Row에 트렌젝션을 시작한다. 반환된 TxId는 생성된 row에 column 값을 추가하거나 commit시 사용된다. row의 데이터를 저장하기 위해서는 반드시 commit이 호출되어야 한다. commit 호출이 되기전에는 다른 session에서는 생성된 row에 대한 데이터가 조회되지 않는다.

    Specified by:
    startTx in interface DataServiceProtocol
    Parameters:
    tabletName - 추가할 row를 서비스하고 있는 tablet명
    rowKey - 생성하는 row의 key
    Returns:
    Throws:
    java.io.IOException

    startTx

    public TxId startTx(java.lang.String tabletName,
                        Row.Key rowKey,
                        boolean systemTimestamp)
                 throws java.io.IOException
    Description copied from interface: DataServiceProtocol
    Row에 트렌젝션을 시작한다. 반환된 TxId는 생성된 row에 column 값을 추가하거나 commit시 사용된다. row의 데이터를 저장하기 위해서는 반드시 commit이 호출되어야 한다. commit 호출이 되기전에는 다른 session에서는 생성된 row에 대한 데이터가 조회되지 않는다.

    Specified by:
    startTx in interface DataServiceProtocol
    Returns:
    Throws:
    java.io.IOException

    rollback

    public Row.Key rollback(TxId txId)
                     throws java.io.IOException
    Specified by:
    rollback in interface DataServiceProtocol
    Throws:
    java.io.IOException

    get

    public ColumnValue get(java.lang.String tabletName,
                           Row.Key rowKey,
                           java.lang.String columnName,
                           Cell.Key columnKey)
                    throws java.io.IOException
    Specified by:
    get in interface DataServiceProtocol
    Returns:
    Throws:
    java.io.IOException

    get

    public RowColumnValues[] get(java.lang.String tabletName,
                                 RowFilter scanFilter)
                          throws java.io.IOException
    Specified by:
    get in interface DataServiceProtocol
    Throws:
    java.io.IOException

    get

    public ColumnValue[][] get(java.lang.String tabletName,
                               Row.Key rowKey)
                        throws java.io.IOException
    Specified by:
    get in interface DataServiceProtocol
    Returns:
    Throws:
    java.io.IOException

    get

    public ColumnValue[][] get(java.lang.String tabletName,
                               Row.Key rowKey,
                               java.lang.String[] columnNames)
                        throws java.io.IOException
    Specified by:
    get in interface DataServiceProtocol
    Returns:
    Throws:
    java.io.IOException

    getTablet

    public Tablet getTablet(java.lang.String tabletName)
    Specified by:
    getTablet in interface TabletServerIF

    next

    public ColumnValue[] next(java.lang.String scannerId)
                       throws java.io.IOException
    Throws:
    java.io.IOException

    touch

    public void touch(java.lang.String leaseId)
               throws java.io.IOException
    Description copied from interface: DataServiceProtocol
    Client API에서 강제적으로 TabletServer에 있는 lease 항목을 touch 한다. 주로 Scanner에서 scanner가 close 되기 전까지 open 되도록 하는데 사용

    Specified by:
    touch in interface DataServiceProtocol
    Throws:
    java.io.IOException

    removeRow

    public void removeRow(TxId txId,
                          long timestamp)
                   throws java.io.IOException
    Specified by:
    removeRow in interface DataServiceProtocol
    Throws:
    java.io.IOException

    run

    public void run()
    Specified by:
    run in interface java.lang.Runnable

    deleteColumnValue

    public void deleteColumnValue(TxId txId,
                                  java.lang.String columnName,
                                  Cell.Key columnKey)
                           throws java.io.IOException
    Specified by:
    deleteColumnValue in interface DataServiceProtocol
    Throws:
    java.io.IOException

    existsTxId

    public boolean existsTxId(TxId txId)
                       throws java.io.IOException
    Specified by:
    existsTxId in interface DataServiceProtocol
    Throws:
    java.io.IOException

    updateColumnValue

    public void updateColumnValue(TxId txId,
                                  java.lang.String columnName,
                                  ColumnValue[] records)
                           throws java.io.IOException
    Specified by:
    updateColumnValue in interface DataServiceProtocol
    Throws:
    java.io.IOException

    updateOrInsertColumnValue

    public void updateOrInsertColumnValue(TxId txId,
                                          java.lang.String columnName,
                                          ColumnValue[] records)
                                   throws java.io.IOException
    Specified by:
    updateOrInsertColumnValue in interface DataServiceProtocol
    Throws:
    java.io.IOException

    dropTable

    public boolean dropTable(java.lang.String taskId,
                             java.lang.String tableName)
                      throws java.io.IOException
    Specified by:
    dropTable in interface TabletManagerProtocol
    Throws:
    java.io.IOException

    tabletSplited

    public void tabletSplited(Tablet targetTablet,
                              Tablet[] splitedTablets)
                       throws java.io.IOException
    Specified by:
    tabletSplited in interface TabletServerIF
    Parameters:
    targetTablet -
    splitedTablets -
    Throws:
    java.io.IOException

    reportTabletSplited

    public void reportTabletSplited(Tablet targetTablet,
                                    Tablet[] splitedTablets)
                             throws java.io.IOException
    Specified by:
    reportTabletSplited in interface TabletServerIF
    Throws:
    java.io.IOException

    modifyMetaDataForSplit

    public void modifyMetaDataForSplit(Tablet targetTablet,
                                       Tablet[] splitedTablets)
                                throws java.io.IOException
    Specified by:
    modifyMetaDataForSplit in interface TabletServerIF
    Throws:
    java.io.IOException

    saveTabletSplitedInfo

    public void saveTabletSplitedInfo(java.lang.String tabletName,
                                      TabletInfo targetTablet,
                                      TabletInfo[] splitedTablets)
                               throws java.io.IOException
    Specified by:
    saveTabletSplitedInfo in interface DataServiceProtocol
    Throws:
    java.io.IOException

    stopAllTablets

    public void stopAllTablets()
                        throws java.io.IOException
    Specified by:
    stopAllTablets in interface TabletManagerProtocol
    Throws:
    java.io.IOException

    main

    public static void main(java.lang.String[] args)
                     throws java.io.IOException
    Throws:
    java.io.IOException

    getTabletInfo

    public TabletInfo getTabletInfo(java.lang.String tabletName)
    Specified by:
    getTabletInfo in interface DataServiceProtocol
    Specified by:
    getTabletInfo in interface TabletManagerProtocol
    Returns:

    isServicedTablet

    public boolean isServicedTablet(java.lang.String tabletName)
    Description copied from interface: DataServiceProtocol
    TabletServer가 특정 tablet에 대해 DataServer를 하고 있는지 여부를 반환한다.

    Specified by:
    isServicedTablet in interface DataServiceProtocol
    Returns:

    getCloestMetaData

    public ColumnValue getCloestMetaData(java.lang.String tabletName,
                                         Row.Key rowKey)
                                  throws java.io.IOException
    Description copied from interface: DataServiceProtocol
    해당 rowkey보다 작은 레코드 중 가장 큰 레코드를 조회한다. 주로 meta tablet에서 특정 rowkey를 서비스하고 있는 사용자 tablet에 대한 정보를 조회할 때 사용한다.

    Specified by:
    getCloestMetaData in interface DataServiceProtocol
    Returns:
    Throws:
    java.io.IOException

    getProtocolVersion

    public long getProtocolVersion(java.lang.String protocol,
                                   long clientVersion)
                            throws java.io.IOException
    Description copied from interface: NVersionedProtocol
    Return protocol version corresponding to protocol interface.

    Specified by:
    getProtocolVersion in interface NVersionedProtocol
    Parameters:
    protocol - The classname of the protocol interface
    clientVersion - The version of the protocol that the client speaks
    Returns:
    the version that the server will speak
    Throws:
    java.io.IOException

    checkServer

    public boolean checkServer()
    Specified by:
    checkServer in interface TabletManagerProtocol

    splitForTest

    public void splitForTest(TabletInfo tabletInfo)
                      throws java.io.IOException
    Specified by:
    splitForTest in interface TabletManagerProtocol
    Throws:
    java.io.IOException

    endTabletAssignmentForHandler

    public void endTabletAssignmentForHandler(TabletInfo tabletInfo,
                                              boolean create)
                                       throws java.io.IOException
    테스트 코드를 위해 NeptuneMaster로 전송하는 부분을 인터페이스로 빼서 처리.

    Specified by:
    endTabletAssignmentForHandler in interface TabletServerIF
    Throws:
    java.io.IOException

    stopAction

    public void stopAction(java.lang.String tableName,
                           java.lang.String tabletActionClassName)
                    throws java.io.IOException
    Specified by:
    stopAction in interface DataServiceProtocol
    Throws:
    java.io.IOException

    shutdown

    public void shutdown()
    Specified by:
    shutdown in interface TabletManagerProtocol

    startBatchUploader

    public java.lang.String startBatchUploader(java.lang.String tabletName)
                                        throws java.io.IOException
    Specified by:
    startBatchUploader in interface DataServiceProtocol
    Throws:
    java.io.IOException

    endBatchUploader

    public java.lang.String endBatchUploader(java.lang.String actionId,
                                             java.lang.String tabletName,
                                             java.lang.String[] columnNames,
                                             java.lang.String[] mapFileIds,
                                             java.lang.String[] mapFilePaths)
                                      throws java.io.IOException
    Specified by:
    endBatchUploader in interface DataServiceProtocol
    Throws:
    java.io.IOException

    getAsyncTaskStatus

    public AsyncTaskStatus getAsyncTaskStatus(java.lang.String taskId)
                                       throws java.io.IOException
    Specified by:
    getAsyncTaskStatus in interface DataServiceProtocol
    Throws:
    java.io.IOException

    truncateColumn

    public void truncateColumn(java.lang.String tabletName,
                               java.lang.String columnName)
                        throws java.io.IOException
    Specified by:
    truncateColumn in interface TabletManagerProtocol
    Throws:
    java.io.IOException

    addColumn

    public void addColumn(java.lang.String tableName,
                          java.lang.String tabletName,
                          java.lang.String addedColumnName)
                   throws java.io.IOException
    Specified by:
    addColumn in interface TabletManagerProtocol
    Throws:
    java.io.IOException

    isShutdowned

    public boolean isShutdowned()
    Specified by:
    isShutdowned in interface TabletServerIF

    test

    public java.lang.String test(long sleepTime,
                                 java.lang.String echo)
                          throws java.io.IOException
    Specified by:
    test in interface DataServiceProtocol
    Throws:
    java.io.IOException

    printMeta

    public void printMeta(java.lang.String tabletName)
                   throws java.io.IOException
    Specified by:
    printMeta in interface DataServiceProtocol
    Throws:
    java.io.IOException

    getTabletDetailInfo

    public TabletReport getTabletDetailInfo(java.lang.String tabletName)
                                     throws java.io.IOException
    Specified by:
    getTabletDetailInfo in interface DataServiceProtocol
    Specified by:
    getTabletDetailInfo in interface TabletManagerProtocol
    Throws:
    java.io.IOException

    canUpload

    public boolean canUpload()
                      throws java.io.IOException
    Specified by:
    canUpload in interface DataServiceProtocol
    Throws:
    java.io.IOException

    doActionForTest

    public void doActionForTest(java.lang.String tabletName,
                                java.lang.String action)
                         throws java.io.IOException
    Specified by:
    doActionForTest in interface TabletManagerProtocol
    Throws:
    java.io.IOException

    getTestHandlerKey

    public java.lang.String getTestHandlerKey()
    Specified by:
    getTestHandlerKey in interface ProxyObject

    testRPC

    public ColumnValue[][] testRPC()
    Specified by:
    testRPC in interface DataServiceProtocol

    setProperty

    public void setProperty(java.lang.String key,
                            java.lang.String value)
                     throws java.io.IOException
    Specified by:
    setProperty in interface TabletManagerProtocol
    Throws:
    java.io.IOException

    getProperty

    public java.lang.String getProperty(java.lang.String key,
                                        java.lang.String defaultValue)
                                 throws java.io.IOException
    Specified by:
    getProperty in interface TabletManagerProtocol
    Throws:
    java.io.IOException

    getAllMemoryValues

    public ColumnValue[] getAllMemoryValues(java.lang.String tabletName,
                                            java.lang.String columnName)
                                     throws java.io.IOException
    Description copied from interface: DataServiceProtocol
    ROOT, META 테이블 검증용으로 사용된다. 해당 메소드가 호출되는 경우에는 Split 등의 작업이 lock이 걸리기 때문에 메모리의 값에 대한 변경이 거의 없다.

    Specified by:
    getAllMemoryValues in interface DataServiceProtocol
    Returns:
    Throws:
    java.io.IOException

    getConf

    public NConfiguration getConf()

    getTabletServerLockPath

    public java.lang.String getTabletServerLockPath()

    getServerStatus

    public TabletServerStatus getServerStatus()
                                       throws java.io.IOException
    Specified by:
    getServerStatus in interface TabletManagerProtocol
    Throws:
    java.io.IOException

    hasValue

    public boolean hasValue(java.lang.String tabletName,
                            java.lang.String columnName,
                            Row.Key rowKey)
                     throws java.io.IOException
    Description copied from interface: DataServiceProtocol
    Tablet에 rowKey 값이 존재하는 지 반환한다.

    Specified by:
    hasValue in interface DataServiceProtocol
    Returns:
    Throws:
    java.io.IOException

    getSplitedRowKeyRanges

    public Row.Key[] getSplitedRowKeyRanges(java.lang.String tabletName,
                                            int splitPerTablet)
                                     throws java.io.IOException
    Description copied from interface: DataServiceProtocol
    TabletInputFormat에서 사용하는 메소드로 Tablet의 rowkey 목록에서 splitPerTablet 갯수만큼 범위를 나누어 각 범위의 마지막 rowkey 값을 반환한다. map 갯수 만큼 input 영역을 나누기 위해서 사용한다.

    Specified by:
    getSplitedRowKeyRanges in interface DataServiceProtocol
    Returns:
    Throws:
    java.io.IOException