Hadoop之HDFS01【介紹】
707
2025-04-01
在學習的時候,我一直保持著記筆記或者做簡單總結的習慣,內容比較隨性,但這些內容有助于自己的快速回顧。在技術領域,最好的總結是一個直觀的流程圖,所謂"一圖勝千言",然后配以簡單的文字說明。但可惜,那時沒有想過寫作公開的技術博客,周邊也缺乏這樣的氛圍。
幾個月前,正式決定開始寫博客和公眾號。初衷還是希望能督促自己在業余時間的學習,當正式開始以后,如下幾點內容感受非常深刻:
1. "以輸出倒逼輸入",這就要求每天必須堅持學習。如果寫作只是將自己知道的內容寫出來,對于我,那將變成一件枯燥而無趣的事情。
2. 公開的內容對質量會有更高的要求,進一步提高了對學習的要求。
3. 如果寫作的內容得到其他人的認可,可以帶給自己更多堅持下去的信心。
但頻繁更新卻是一件極其艱難的事情。技術總結內容,通常需要細致的閱讀源碼細節,如果追求高質量輸出,難以在短時間內快速完成。另外因日常工作方面的原因,自由可支配的時間時常不受控制。
上面這些內容,更多的是自己的幾點感受。希望閱讀了此文的同學們也能開始自己的技術寫作,對于已經開始的,也應該長期堅持下去。
接下來是關于NoSQL技術的一些漫談內容。最初,對于這個公眾號名稱,我曾糾結過一段時間。NoSQL一詞,儼然已過了風頭正盛的時期,甚至聽起來像一個"過時"的概念。關于這個公眾號,主要想探討如下領域的內容:
- 分布式KeyValue系統
- 稀疏矩陣形態的寬列存儲技術
- 搜索技術
- 圖數據庫技術
- 文檔數據庫技術
- 時序/時空數據庫技術
- 多模數據庫技術
- 分布式索引技術
- NewSQL技術
- 分布式計算技術
認真思考一下,也只有NoSQL一詞可將其盡可能的囊括起來。每一種技術,都有自己獨特的精彩實現內容,但更多的是一些通用的技術,如RPC通信技術,索引技術,分布式共識算法,MVCC, SQL能力等等。
對比于NoSQL,NewSQL聽起來像是一個更新潮的概念。Google對于NoSQL與NewSQL技術架構的影響可謂深遠,我們先來看看Google從Bigtable到Spanner/F1的演進過程,下面列舉了每一種技術的設計關鍵點:
Bigtable:
LSM-Tree架構
Auto-Scaling
基于分布式文件系統GFS/Colossus
稀疏矩陣
Schema less設計
行級事務
異步容災(Paper中提及但最終未實現)
Megastore:
基于Bigtable構建
在NoSQL與RDBMS之間做了妥協,支持半關系型模型
支持SQL接口
支持多種二級索引類型
基于Paxos協議實現了跨DataCenters間的同步容災
支持Entity Group級別的跨行事務
Spanner:
參考了Bigtable的設計后全新實現
Auto-Scaling
半關系型模型
支持SQL接口
支持同步容災
支持廣泛的分布式事務能力
F1:
基于Spanner構建
分布式SQL查詢能力
支持事務一致性的二級索引
支持異步的Schema變更
支持樂觀事務
數據變更歷史記錄跟蹤
關于NoSQL與NewSQL,這篇文章《NewSQL是否是NoSQL的取代者?》做了更詳細的探討。這里僅簡單的羅列一下觀點:
-?NoSQL通常指一種非關系型存儲技術,涉及的范圍廣泛,本身與是否具有SQL接口能力無關。
-?NewSQL更多是指一種分布式的關系型數據庫技術,典型意義上的NewSQL包括Spanner, CockroachDB, NuoDB以及國內的TiDB,它通常會更加強調分布式事務能力。
NewSQL更多是RDBMS與NoSQL技術結合的一種產物,對于傳統的應用,會更加友好,也具有廣泛的普適性。在可預見的未來,它也一直會有可觀的市場空間。而每一種NoSQL技術更像是一種專業化能力的存在:
- HBase:稀疏矩陣,基于KeyValue提供了簡單的讀寫接口
- Elasticsearch:提供分布式搜索能力
- Druid:基于事件數據的OLAP能力
- Neo4j:提供圖數據庫能力
- OpenTSDB/InfluxDB:提供時序數據庫能力
在"nosql-database.org"這個網站中,收錄了大量的NoSQL技術,大家可以參考一下。
如果每一種技術只提供一種專業的能力,那就帶來了通用性方面的問題,同一份數據時常需要在不同的系統中各復制一份是一個無法忍受的問題。從應用的角度來看,大家更期望一種"One Size Fit More/All"的技術,但這在技術實現上幾乎不可能。多模數據庫似乎是一個不錯的答案,它的設計理念為:
"基于一套存儲引擎,提供多種模型,多種訪問接口"
以當前火熱的AZure Cosmos DB為例,支持如下三種模型:
-?Document
- Graph
- KeyValue
AZure Cosmos DB基于上面三種模型,提供了多語言(Java/Python/Node.js/.NET)訪問接口,并且提供了MongoDB Document API以及基于SQL的訪問接口。
再以ArrangoDB為例,它同樣支持如下三種模型:
-?Document
- Graph
- KeyValue
ArrangoDB主要提供了AQL(SQL-Like)接口以及HTTP接口。
多模數據庫像是NoSQL技術的大雜燴,但的確不失為NoSQL技術一個不錯的演進方向。隨著公有云,人工智能,物聯網等行業的快速發展,以及即將到來的5G技術,需要存儲和查詢的數據量也會變得越來越大,相信NoSQL技術會生生不息,一定會取得更廣泛的應用場景。 這也是本公眾號將內容聚焦在"NoSQL"領域的一個關鍵原因。
本文轉載自微信公眾號【Nosql漫談】。
分布式 NoSQL 數據庫
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。