<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??一站式輕松地調用各大LLM模型接口,支持GPT4、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                [TOC] # 系統架構圖 ![](https://box.kancloud.cn/84c62dc678386cf4b385d83a7ab41e8b_891x314.png) ![](https://box.kancloud.cn/86dc9d5623d58635ff5b5aac6b3bd142_656x376.png) ![](https://box.kancloud.cn/149a3ed5992bd43135a0282e2032b35b_1053x584.png) ## 存儲 * store **一個region按照列族劃分的**,多個列族會有多個store * storeFile 每個store里面又有很多個storeFile,他是**store里面按照rowkey來劃分的**,storeFile是以一種特殊的文件格式Hfile來存儲在hdfs上的,所以經常把datanode和RegionServer放一起,提高查詢. sotre中有很多storefile,那么如何知道數據在哪個文件? **每個soreFile都有一個布隆過濾器**,先把所有元素放在集合中,然后用來判斷一個元素在不在集合里面 * 布隆過濾器 是一種空間效率很高的隨機數據結構 查詢一個rowkey,會把rowkey會轉換64bit 布隆過濾器會存這個storeFile所有的rowkey,然后要查詢的rowkey和布隆過濾器比較 * memstore 每個store有一個memstore,當他達到一定閾值后會寫入磁盤上 內存中的,數據寫入的時候會寫入memstore 他存儲近期訪問的數據和提交的數據,還有經常訪問的數據,查詢的時候可以不走底層的hdfs文件,可以從memstore先進行檢索 ## Client 1. 包含訪問hbase的接口,client維護著一些cache來加快對hbase的訪問(經常訪問的數據放到塊緩存),比如regione的位置信息。 ## Zookeeper 1. 保證任何時候,集群中只有一個master 2. **存貯所有Region的尋址入口**----root表**在哪**臺服務器上。 3. 實時監控Region Server的狀態,將Region server的上線和下線信息實時通知給Master 4. 存儲**Hbase的schema,包括有哪些table**,每個table有哪些column family ## Master職責 1. 為Region server分配region 2. 負責region server的負載均衡 3. 發現失效的region server并重新分配其上的region 4. HDFS上的垃圾文件回收 5. 處理schema更新請求 6. hbase的主節點,負責整個集群的狀態感知,負載分配、負責用戶表的元數據管理 7. DDL(create,update,delete表)操作 8. 不直接存儲數據,負責統籌分配和DDL操作 ## RegionServer職責 1. Region server維護Master分配給它的region,處理對這些region的IO請求 2. Region server負責切分在運行過程中變得過大的region 可以看到,client訪問hbase上數據的過程并不需要master參與(尋址訪問zookeeper和region server,數據讀寫訪問regione server),master僅僅維護者table和region的元數據信息,負載很低。 3. 真正負責管理region的服務器,也就是**負責為客戶端進行表數據讀寫的服務器** ## regions 1. hbase中對表進行切割的單元,**按rowkey分割的** 2. hbase以Rowkey的起止區間為范圍被水平切分成了多個Region.每個Region中包含了RowKey從開始到結束區間的所有行.這些Region被分配到的集群節點稱為RegionServers # Region管理 ## BLOOMFILTER 布隆過濾器 當一個regionserver數據很大的時候,會有很多文件. 雖然能定位在那個regionserver上,但是下面有很多文件 如何定位這個數據在那個文件中? 布隆過濾器會不斷的查詢這個數據在不在這個文件中,一直檢測,做反向判斷 ## region分配 任何時刻,一個region只能分配給一個region server。master記錄了當前有哪些可用的region server。以及當前哪些region分配給了哪些region server,哪些region還沒有分配。當需要分配的新的region,并且有一個region server上有可用空間時,master就給這個region server發送一個裝載請求,把region分配給這個region server。region server得到請求后,就開始對此region提供服務。 ## region server上線 master使用zookeeper來跟蹤region server狀態。當某個region server啟動時,會首先在zookeeper上的server目錄下建立代表自己的znode。由于master訂閱了server目錄上的變更消息,當server目錄下的文件出現新增或刪除操作時,master可以得到來自zookeeper的實時通知。因此一旦region server上線,master能馬上得到消息。 ## region server下線 當region server下線時,它和zookeeper的會話斷開,zookeeper而自動釋放代表這臺server的文件上的獨占鎖。master就可以確定: 1. region server和zookeeper之間的網絡斷開了。 2. region server掛了。 無論哪種情況,region server都無法繼續為它的region提供服務了,此時master會刪除server目錄下代表這臺region server的znode數據,并將這臺region server的region分配給其它還活著的同志 # master工作機制 ## master上線 master啟動進行以下步驟: 1. 從zookeeper上獲取唯一一個代表active master的鎖,用來阻止其它master成為master。 2. 掃描zookeeper上的server父節點,獲得當前可用的region server列表。 3. 和每個region server通信,獲得當前已分配的region和region server的對應關系。 4. 掃描.META.region的集合,計算得到當前還未分配的region,將他們放入待分配region列表。 ## master下線 由于master只維護表和region的元數據,而不參與表數據IO的過程,master下線僅導致所有元數據的修改被凍結(無法創建刪除表,無法修改表的schema,無法進行region的負載均衡,無法處理region 上下線,無法進行region的合并,唯一例外的是region的split可以正常進行,因為只有region server參與),表的數據讀寫還可以正常進行。因此master下線短時間內對整個hbase集群沒有影響。 從上線過程可以看到,master保存的信息全是可以冗余信息(都可以從系統其它地方收集到或者計算出來) 因此,一般hbase集群中總是有一個master在提供服務,還有一個以上的‘master’在等待時機搶占它的位置 # 數據更新 點擊web管理頁面中的表 ![](https://box.kancloud.cn/aa7d582bd00d28d321b7ba08a3ffe9d7_941x448.png) 上面是合并,下面是切分 ![](https://box.kancloud.cn/764656aecdf917df26cc1e65aaf63df7_927x304.png) **數據修改刪除并不會從hdfs上真正的去掉,舊數據還是會冗余的** hdfs不支持數據更新,他只是在hdfs上對數據標記,get,scan的時候不顯示數據 合并數據他還會定期清除數據,因為一些數據更新后,老的數據還是在的,他會定期清除的 合并還有大合并(major compaction)和小合并(minor compaction) 大合并,對于整個Region下面的store的所有storefile是把所有的文件整理成一個,涉及很多磁盤IO 小合并,將超過設置版本數量的數據和生命周期的數據,進行清除,但是**他不會做任何刪除數據的操作,刪除數據的工作是在大合并中做的**
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看