亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

HMaster啟動流程簡析

發布時間:2020-06-17 03:46:46 來源:網絡 閱讀:2125 作者:MIKE老畢 欄目:關系型數據庫

很多細節不便在本篇寫的過于詳細,等后續細節分析

0. HBaseCommandLine首先對HMaster進行初始化

0.1 檢查是否進行了IP綁定(https://issues.apache.org/jira/browse/HBASE-8148),獲取地址

0.2 通過HbaseRPC創建一個RPCServer

0.2.1 首先獲取RPCEngineWritableRPCEngine),并通過其對RPCServer進初始化(ServerHBaseServerRPCServer

0.2.1.1 初始化CallQueueipc.server.max.queue.size:向后兼容,ipc.server.max.callqueue.length,默認值為handler* DEFAULT_MAX_CALLQUEUE_LENGTH_PER_HANDLER)和ReplicationQueue(ipc.server.max.callqueue.size,默認值為1024×1024×1024),以及SizeBasedThrottlerthreshold=ipc.server.max.callqueue.size,ListenerResponder

0.2.1.1.1初始化Responder,創建一個selector,其中頻率為purgeTimeout(默認值2×DEFAULT_HBASE_RPC_TIMEOUT)

0.2.1.1.2初始化Listener,獲取監聽地址并綁定到ServerSocket,其中backlog length= ipc.server.listen.queue.size,并初始化一個大小為ipc.server.read.threadpool.sizethreadpool并對ipc.server.read.threadpool.sizeReader進行初始化并啟動,最后注冊連接事件;

0.3 對已經初始化完畢的RPCServer啟動

0.3.1 啟動Responder,從responseQueue取出response寫回,這里Responder有一處類似HADOOP RPC的優化就是當responseQueue只有一個值時立刻響應.

0.3.2 啟動Listener:每10秒并且連接數超過ipc.client.idlethreshold則對ConnectionList進行一次檢查,若超時2×ipc.client.connection.maxidletime,則進行清理,最多清理ipc.client.kill.max(默認10個)

0.3.3 啟動Handler,從CallQueue取出Callrpcserver調用,并將返回值發送到responder進行處理

HMaster啟動流程簡析

0.4HMaster傳入ZookeeperWatcher初始化

0.4.1 初始化ZookeeperWatcher:通過Zkutil或者一個Zookeeper Client對象,其中sessionTimeout=zookeeper.session.timeout(默認180s),maxretry=zookeeper.recovery.retry以及retryIntervalMillis=zookeeper.recovery.retry.intervalmill

0.4.1.1 進入到Zookeeper環節(下回分解)

0.5 初始化Health Check Thread,檢查頻率為hbase.node.health.script.frequency默認10


1.HMaster執行startup進行啟動流程

1.1 調用becomeActiveMaster,進入阻塞狀態直到Active

1.1.1 初始化ActiveMasterManagerZookeeperListener

1.1.2 zookeeperWatcher注冊到ActiveMasterManager來進行監聽

1.1.3 stallIfBackupMastes略過不表

1.1.4 初始化ClusterStatusTrackerZookeeperNodeTracker,并啟動,注冊HMasterClusterStatusTracker

1.1.5 blockUntilBecomingActiveMasterAdd a ZNode for ourselves in the backup master directory since we are notthe active master.If we become the active master later, ActiveMasterManagerwill delete this node explicitly. If wecrash before then, ZooKeeper will delete this node for us since it isephemeral.

1.2 調用finishInitialization進入初始化完成階段

1.2.1 初始化filesystemManager:MasterFileSystem

1.2.1.1 如果開啟hbase.master.distributed.log.splitting,則初始化SplitLogManagerZookeeperListener

1.2.1.1.1

1.2.1.2 創建初始化目錄:檢查rootdir是否存在,檢查tempdir是否存在并清理,創建oldlogdir

1.2.2 初始化FSTableDescriptors->tableDescriptor

1.2.3 初始化ExecutorService

1.2.4 初始化ServerManager:其中是通過HConnectionManager獲取一個HConnection,其中連接池的大小為hbase.zookeeper.properties.maxClientCnXns(默認300)+1

1.2.5 初始化所有基于ZKtracker:

1.2.5.1初始化CatalogTracker

1.2.5.1.1 獲取一個HConnection

1.2.5.1.2 初始化RootRegionTrackerZookeeperNodeTrackerrootServerZnode

1.2.5.1.3 初始化MetaRegionTrackerZookeeperNodeTracker(assignmentnode/first_meta_region)

1.2.5.2 啟動CalalogTracker

1.2.5.2.1 啟動RootRegionTracker:開始track RR

1.2.5.2.2 啟動MetaRegionTracker: 開始trackMR

1.2.5.3 通過LoadBalancerFactory獲取balancer實例

1.2.5.4 初始化AssginmentManager,管理region的分配:包括初始化timeoutMonitorhbase.master.assignment.timeoutmonitor.period默認10shbase.master.assignment.timeoutmonitor.timeout默認30min),timerUpdaterhbase.master.assignment.timerupdater.period默認10s

1.2.5.5 zookeeperWatcher注冊到assginmentManager,并加到ListenerList的第一位

1.2.5.6 初始化RegionServerTracker...

1.2.5.7 啟動RegionServerTracker...

1.2.5.8初始化DrainingServerTracker...

1.2.5.9 啟動DrainingServerTracker...

1.2.5.10初始化SnapshotManager...

1.2.7 初始化MasterCoprocessorHost

1.2.8 啟動服務線程:包括MASTER_OPEN_REGIONhbase.master.executor.openregion.threads5),MASTER_CLOSE_REGIONhbase.master.executor.closeregion.threads5),MASTER_SERVER_OPERATIONShbase.master.executor.serverops.threads3),MASTER_META_SERVER_OPERATIONShbase.master.executor.serverops.threads5),MASTER_TABLE_OPERATIONS;以及初始化并運行LogCleanerHFileCleaner,最后啟動HealCheckChore,并且RPCServer開始接受請求

1.2.9 等待RS狀態匯報:等到以下三個條件滿足:

a.themaster is stopped

b.the'hbase.master.wait.on.regionservers.maxtostart' number of region servers is reached

c.the 'hbase.master.wait.on.regionservers.mintostart' is reached AND

there have been no new region serverin for 'hbase.master.wait.on.regionservers.interval默認1.5s' time AND

the'hbase.master.wait.on.regionservers.timeout默認4.5s'is reached

1.2.10 檢查哪些RS沒有注冊到ZK:將啟動的RS進行注冊并記錄到serverManager

1.2.11 啟動AssignManager:啟動TimeoutMonitor

1.2.12 進行一次splitlog操作:MasterFileSystem進行,掃描hlogdir查看其所屬regionserver是否online,如果不在線則加入到splitlogManagerdeadWorkers列表并在Zk對所有的hlogsplitlog路徑下創建一個znode,等待其他RegionServerSplitlogWorker獲取任務后進行處理(細節見下篇RegionServer啟動流程),若關閉hbase.master.distributed.log.splitting,則由HMaster處理,此處不表

1.2.13 分配ROOTMATA region:檢查—ROOT—和.META.是否已經分配,若沒有則由AssignmentManager進行分配:

1.2.13.1

1.2.14 開啟shutdownHandler:由ServerManagerdeadNotExpiredServers進行過期檢查,對expiredServer進行處理并提交關閉流程到ExecutorService

1.2.15 AssginmentManager 進行JoinCluster:將InDisablingStateEnabingState的表進行恢復

1.2.16 fix region

1.2.17 啟動Balancer并交由Chore300s運行一次,并且是單線程運行:當Region正處于轉換或者RS正在下線則不進行balance

1.2.18 startCatalogJanitorChore啟動

1.2.16 執行postCP post Master startup

1.3 啟動Stop Check Thread,每秒檢查一次

完畢

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

宁乡县| 兴安盟| 龙南县| 久治县| 中阳县| 佛教| 共和县| 雅安市| 双峰县| 江北区| 衡水市| 噶尔县| 徐汇区| 丁青县| 元江| 通河县| 汕头市| 云南省| 灵武市| 漾濞| 海原县| 镇雄县| 平安县| 卢龙县| 晋州市| 抚顺市| 怀安县| 深泽县| 潮州市| 上虞市| 瑞丽市| 太湖县| 迭部县| 南阳市| 翼城县| 北碚区| 板桥市| 岳西县| 湛江市| 府谷县| 共和县|