亚洲成a人片在线观看69,中文字幕免费无线观看,日韩精品无码一区二区三区四区,92精品国产自产在线观看直播,亚洲精品无码不卡在线观看屁,亚洲成av人片在www色猫咪

Journal 源碼詳解

簡(jiǎn)介

Active Namenode與StandBy Namenode之間的綠色區域就是JournalNode,當然數量不一定只有1個(gè),作用相當于NFS共享文件系統.Active Namenode往里寫(xiě)editlog數據,StandBy再從里面讀取數據進(jìn)行同步.

JournalNodede 在hdfs架構中的角色:

pic

源碼解析

解讀JournalNodede的原理。JN的核心功能主要包含下面幾個(gè):

  • JN啟動(dòng)
  • 讀寫(xiě)editLog。
  • JN之間editLog數據同步

JN 啟動(dòng)

JN的啟動(dòng)入口類(lèi)是JournalNode.java, 啟動(dòng)函數是main。在啟動(dòng)階段主要啟動(dòng)了兩個(gè)核心部件:

  • JournalNodeHttpServer,主要是jn的http服務(wù)端。讀取editlog使用。
  • JournalNodeRpcServer, 主要是jn的rpc服務(wù)端。主要是寫(xiě)入editlog使用當前協(xié)議。

JournalNodeHttpServer

當前類(lèi)主要是jn的http服務(wù)端,在啟動(dòng)階段最關(guān)鍵的功能是初始化http的Servlet:GetJournalEditServlet。

httpServer.addInternalServlet("getJournal", "/getJournal", GetJournalEditServlet.class, true);
httpServer.start();

核心是讀取editLog,沒(méi)有其他特別的功能。

JournalNodeRpcServer

當前類(lèi)主要是jn的rpc服務(wù)端,核心在于啟動(dòng)關(guān)鍵的rpc服務(wù),通過(guò)下面函數初始化rpc服務(wù)端。

 this.server = new RPC.Builder(confCopy)
    .setProtocol(QJournalProtocolPB.class)
    .setInstance(service)
    .setBindAddress(bindHost)
    .setPort(addr.getPort())
    .setNumHandlers(this.handlerCount)
    .setVerbose(false)
    .build();

啟動(dòng)服務(wù)端定義的rpc協(xié)議主要包含QJournalProtocol.java,核心函數例如:

public interface QJournalProtocol {
  public static final long versionID = 1L;

  boolean isFormatted(String journalId,
                      String nameServiceId) throws IOException;

  GetJournalStateResponseProto getJournalState(String journalId,
                                               String nameServiceId)
      throws IOException;
  
  void format(String journalId, String nameServiceId,
      NamespaceInfo nsInfo, boolean force) throws IOException;

  NewEpochResponseProto newEpoch(String journalId,
                                        String nameServiceId,
                                        NamespaceInfo nsInfo,
                                        long epoch) throws IOException;
  
  public void journal(RequestInfo reqInfo,
                      long segmentTxId,
                      long firstTxnId,
                      int numTxns,
                      byte[] records) throws IOException;

  
  public void heartbeat(RequestInfo reqInfo) throws IOException;
  
  public void startLogSegment(RequestInfo reqInfo,
      long txid, int layoutVersion) throws IOException;

  public void finalizeLogSegment(RequestInfo reqInfo,
      long startTxId, long endTxId) throws IOException;

  public void purgeLogsOlderThan(RequestInfo requestInfo, long minTxIdToKeep)
      throws IOException;
  
  GetEditLogManifestResponseProto getEditLogManifest(String jid,
                                                     String nameServiceId,
                                                     long sinceTxId,
                                                     boolean inProgressOk)
      throws IOException;


  GetJournaledEditsResponseProto getJournaledEdits(String jid,
      String nameServiceId, long sinceTxId, int maxTxns) throws IOException;


  public PrepareRecoveryResponseProto prepareRecovery(RequestInfo reqInfo,
      long segmentTxId) throws IOException;

  public void acceptRecovery(RequestInfo reqInfo,
      SegmentStateProto stateToAccept, URL fromUrl) throws IOException;

  void doPreUpgrade(String journalId) throws IOException;

  public void doUpgrade(String journalId, StorageInfo sInfo) throws IOException;

  void doFinalize(String journalId,
                         String nameServiceid) throws IOException;

  Boolean canRollBack(String journalId, String nameServiceid,
                      StorageInfo storage, StorageInfo prevStorage,
                      int targetLayoutVersion) throws IOException;

  void doRollback(String journalId,
                         String nameServiceid) throws IOException;


  @Idempotent
  void discardSegments(String journalId,
                       String nameServiceId,
                       long startTxId)
      throws IOException;

  Long getJournalCTime(String journalId,
                       String nameServiceId) throws IOException;
}

讀寫(xiě)editLog

JN之間editLog數據同步



標 題:《Journal 源碼詳解
作 者:zeekling
提 示:轉載請注明文章轉載自個(gè)人博客:浪浪山旁那個(gè)村

評論

取消
亚洲成a人片在线观看69,中文字幕免费无线观看,日韩精品无码一区二区三区四区,92精品国产自产在线观看直播,亚洲精品无码不卡在线观看屁,亚洲成av人片在www色猫咪 亚州中文字幕无码在线观看| 亚洲综合成人在线| 亚洲日韩国产天堂网| 成人综合久久精品亚洲| 中文自拍无码高清| 在线播放中文字幕无码免费| 国产欧美一区二区樱花在线观看| 三级片小视频在线观看| 亚洲国产日韩欧美综合久久| 国产草草影院CCYYCOM| 国产欧美日韩vā另类影音先锋| 性色AV一二三天美传媒| 中文字幕久荜一区日本精品| 亚洲成av人无码亚洲成av人| 国产v亚洲v天堂无码精品| 亚洲精品无码专区在线在线播放| 人人欧美一区二区精品无码毛片| 亚洲欧美日韩中文字幕无线| 中文字幕乱码亚洲∧ⅴ日本| 国产av剧情md精品| 成人中文字幕久久久无码| 又粗又爽高潮午夜免费视频| 亚洲熟妇色自偷自拍另类| 最新国产极品高清在线看| 亚洲av乱码专区国产乱码| 最新中文字幕av专区| 亚洲水蜜桃久久综合网站| 菠萝视频高清免费观看电视剧| 天天躁夜夜躁狂狂躁综合| 国产乱码精品一区二区三区播放| 亚洲欧美不卡视频在线播放| 亚洲网址在线观看| 亚洲色无码专区一区| 亚洲欧美日韩综合一区在线观看| 亚洲国产成人综合精品| 一级毛片西西人体44rt高清| 国产精品人成视频免费国产| 性A性欧美A色多人搞| 中文字幕无码人妻综合二区三区| 99久久免费视频6| 亚洲乱亚洲乱少妇无码| http://zwsh88.com http://hnztxddb.com http://jp-dipingqi.com http://hnlyyy.com http://sctyd.com http://b13b.com