mycat學習筆記1 HDFS

2022-03-08 02:28:19 字數 2410 閱讀 5692

1.mycat是乙個徹底開源的,面向企業應用開發的大資料庫集群,

2.支援事務、acid、可以替代mysql的加強版資料庫,目前支援關係型資料庫以及非關係型資料庫

3.可以用來代替昂貴的oracle資料庫

4.mycat是乙個大資料(hdfs)的sql引擎

通過上面的介紹,我們知道,mycat其實就是乙個資料庫

mycat再初期的時候,是為了用來代替昂貴的oracle存在的,因此它支援的是免費的mysql資料庫,也只支援mysql資料庫,現在mycat已經可以支援多種資料庫了,換句話說,mycat就是mysql的增強版。

再之前介紹架構,我們知道當資料庫壓力大的時候,使用獨寫分離和分庫分表,但是mysql是不支援的,使用mycat來實現mysql獨寫分離和分庫分表。

hdfs:大資料的分布式檔案儲存系統

h:hadoop(大資料),d:distributed(分布式的),f:file(檔案),s:system(系統)。

在大資料中,資料量是非常大的,如果有1pb的資料(1pb=1024tb),沒有這麼大的硬碟,那麼資料應該如何儲存呢?

將資料拆分為塊,分別儲存進不同的磁碟中,假設將這1p的資料,分為10份/20份,分別儲存在10/20個磁碟上,當需要讀取資料時,就從各個小的磁碟上來獲取資料。

同樣的,如果想要在1pb中查詢一條資料,效率是非常低的,但是如果拆分為小塊,查詢資料時,直接到相應的塊中查詢,效率就會變高。

比如說:

1:在100條資料中查詢第58條資料

2:將100條數拆分為10份,每份存十條,查詢第58條資料,就到相應的塊中查詢資料,這就相當於在10條資料中查詢一條資料

對比上面兩種方式,可以看出第2種方式效率會比較高,當然這裡假設的資料量比較少如果多的話呢?

hdfs就是通過第二種方式實現的,將大資料切分為塊,分別儲存到不同的伺服器上,這個伺服器稱為資料節點datanode(以下簡稱dn)。

那麼現在的問題就是:如何確定要查詢的資料存放在哪兒個資料節點上呢?

在之前寫架構時,提到了,使用乙個節點,這個節點就存放每個資料節點上存放的資料:

比如說,將1份很大的資料拆分為10份,然後將這十份資料標上號:1,2,3,...10。然後使用乙個伺服器節點,節點內容就是一號伺服器放第乙份和第三份資料,2號伺服器放第2份和第四份資料.....這個節點就稱為命名節點namenode(以下簡稱nn)。

注意:在將資料拆分儲存時,要保證每份資料在伺服器集群中至少存在兩個節點上。

namenode是在記憶體中做計算的。(why?在記憶體中計算速度非常快,但是比較消耗記憶體資源)

下面使用一張圖來幫助理解:

從這裡可以看出,nn是非常重要的,獲取資料都是通過nn來找資料的位置的,那麼如果nn宕機,就獲取不到一條資料了。

這裡有乙個問題,nn是在記憶體中做計算的,如果nn宕機,那麼占用的記憶體資源就會被釋放,nn中的資料就沒有了,即使重啟,也獲取不到資料,如何解決?

nn每隔乙個小時,就會將資料持久化到硬碟中,當nn重啟後會從硬碟中載入資料,這個過程大概20秒。

問題2:nn宕機重啟後,可以從磁碟中獲取資料,但是nn宕機時並不工作,如何獲取資料,以及儲存新的資料節點,重啟後如何保證儲存的資料正確?

其實除了nn之外,還有乙個備用命名節點secondarynamenode(以下簡稱sn),dn中的資料會定期的向nn和sn中分別儲存,sn負責監視nn,但是sn不是nn的從節點。

sn會不定時的檢測nn的持久化硬碟中的資料,一旦發現自己有的資料,硬碟中沒有,就會向硬碟中存入資料,也就是說,sn和nn組合在一起成為乙個新的硬碟,替換掉原來的nn的硬碟,當nn重啟後,會從新的硬碟中載入資料到記憶體。

關於大資料時,總會問到的乙個問題:如何在10g的資料中查詢兩條重複的資料?

看到這個問題,正常想到的可能會是for迴圈,但是當資料量非常大的時候,不能這樣用,如果使用for迴圈,可能要查乙個月,如何查詢呢?

在hdfs中,查詢兩條相同資料,因為是分塊查詢,因此會每一塊每一塊的查詢,並標記當前塊中,每條資料出現的次數,如:

mycat就是使用的hdfs的方式實現的,不過這裡將f該成了d,mycat是hdds(high distributed data system),

Hadoop學習筆記 1HDFS

1 hdfs 同樣有block 的概念,不過要大得多,預設 64m。同樣,hdfs 上的檔案也被劃分為塊大小的多個分塊 chunk 作為獨立的儲存單元。2 hdfs 中小於乙個塊大小的檔案不會佔據乙個塊的儲存空間。那麼為什麼 hdfs 中的塊定義那麼大呢,主要是為了最小化定址開銷。如果塊設定的足夠大...

1 hdfs特性及適用場景

hdfs是乙個分布式檔案系統,用於儲存檔案,通過統一的命名空間 目錄樹來定位檔案,並且是分布式的,由很多伺服器聯合起來實現其功能,集群中的伺服器各自負責角色 重要特徵 1.hdfs中的檔案在物理上是分塊儲存 block 塊的大小可以通過配置引數 dfs.blocksize 來規定,預設大小在hado...

hadoop第二天 1 HDFS入門

hdfs hadoop distribute file system hadoop分布式檔案系統 1.底層設計思想 2.hdfs設計目標 3.hdfs重要特性 首先,它是乙個檔案系統,用於儲存檔案,通過統一的命名空間目錄樹來定位檔案。其次,它是分布式的,由很多伺服器聯合起來實現其功能,集群中的伺服器...