hbase中的表在行的方向上分隔為多個hregion,分散在不同的regionserver中
這樣做的目的是在查詢時可以將工作量分布到多個regionserver中以提高速度
region由[startkey,endkey)表示
hregion是hbase分布式儲存和負載均衡的最小單元
要注意hregion不在hdfs中,而是在regionserver的記憶體中,在記憶體(其實也有資料在本地檔案系統中,因為記憶體空間畢竟是有限的)中儲存資料以提高查詢效能,對於修改會將資料最終同步到hdfs中,以持久化資料。
hbase中的資料按照rowkey的字典順序(字典順序!!!先比較第一位 如果相同再比較第二位。。。)按序儲存,所以當以rowkey查詢資料時,可以提高速度。
hregion的**,當hregion變的很大時會**成兩個,存放到不同的regionserver中,防止乙個region過大,導致查詢其中資料時速度很慢
hbase的系統結構:主要有client hmaster regionserver zookeeper
從邏輯結構上來說:
表按照行鍵進行了排序,所以查詢時可以很快定位
資料按照行鍵切分為多個hregion,分布在多個regionserver中,查詢大量資料時,多個regionserver可以一起工作,從而提高速度
從物理結構上來說:
hregion是存活在regionserver的記憶體中的,讀寫會非常的高效
還有hfile的支援保證大量的資料可以持久化的儲存
資料最終落地到hdfs中,分布式的儲存,保證資料段可靠性和可擴充套件性
基於hdfs,所以支援可擴充套件性,可以通過增加大量的廉價的硬體提高儲存容量
按列儲存,空的資料不占用空間,當儲存稀疏資料時,不會浪費空間
按例儲存,同一列的資料存放在一起,而同一列的資料一般都是同樣的型別的內容相似的資料,可以實現非常高效的壓縮,節省空間
基於hdfs,由hdfs的可靠性保證了hbase的可靠性--即資料可以有多個備份
利用zookeeper實現了ha(高可靠),即使某一台機器掛掉另外的機器也可以很快的替換它
比起傳統的關係型資料庫,可以儲存半結構化非結構化的資料,可以儲存和處理更大級別的資料,提供高效的查詢,對於稀疏資料的處理更好,具有更好的橫向擴充套件性,免費開源價效比很高。但是不能支援非常好的事務特性,只支援行級的事務。只能通過行鍵來查詢,表設計時難度更高。而mysql用來儲存結構化的資料提供更好的事務控制。
乾貨 幾個有用的問答平台
凡事多動腦筋,多問幾個為什麼,遇事多想一想該怎麼辦才好,而不應該稀里糊塗,做一天和尚撞一天鐘。科學家說,提出問題是解決問題的一半。問題都提不出來,解決什麼呢?所以孔子感嘆說 不說 怎麼辦,怎麼辦 的人,我真不知拿他怎麼辦了啊!這就是要求我們主動提出問題,動腦筋想辦法。用他在 為政 篇裡的說法,就是 ...
關於測試的經典問答
關於測試的經典問答 問 現有一台冰箱,你認為測試人員應該從哪些方面著手測試工作?請設計測試方案,包括 測試物件 目的 方法等。答 介面測試 外觀是否美觀 如果有操作的按鈕,各個按鈕的功能是否有效 如果有顯示的元件,顯示的內容是否正確 運到家後,開啟包裝檢查整個表面是否有劃傷 撞傷等損傷,etc.介面...
關於Oracle的技術問答
關於oracle的技術問答 今天和oracle的乙個資深前輩聊了下,聊了不少技術的問題,他也來了興致,隨機提了幾個問題來問我,發現看似簡單的問題還是有不少的乾貨,很多東西似懂非懂其實還是沒有深入理解,限於篇幅,整理了一部分的問題,有些問題回答的對,但是感覺理解還是不夠清晰深入。log buffer ...