聊一聊分布式对象存储解决方案
OSS(Object Storage Service)俗稱對象存儲,主要提供圖片、文檔、音頻、視頻等二進制文件的海量存儲功能。目前除了公有云提供對象存儲服務外,一般私有云比較關心一些開源的分布式對象存儲解決方案,本文列舉了一些常見的技術方案供參考。
概念普識
塊存儲
通常SAN(Storage Area Network)結(jié)構(gòu)的產(chǎn)品屬于塊存儲,比如我們常見的硬盤、磁盤陣列等物理盤。
文件存儲
一般NAS(Network Attached Storage)產(chǎn)品都是文件級存儲,如Ceph的CephFS,另外GFS、HDFS等也屬于文件存儲。
對象存儲
同時兼顧著SAN高速直接訪問磁盤特點及NAS的分布式共享特點的一類存儲,一般是通過RESTful接口訪問。
開源解決方案介紹
Swift
Swift 是 OpenStack 社區(qū)核心子項目,是一個彈性可伸縮、高可用的分布式對象存儲系統(tǒng),使用Python語言實現(xiàn),采用 Apache 2.0 許可協(xié)議。
Swift 提供一個基于RESTful HTTP接口的 Object Storage API,用于創(chuàng)建,修改和獲取對象和元數(shù)據(jù)。用戶可以使用 Swift 高效、安全且廉價地存儲大量數(shù)據(jù)。Swift 整體架構(gòu):
總的來說,企業(yè)如果想要建立可擴展的分布式對象存儲集群,可以考慮 Swift。
Ceph
Ceph是一種高性能、高可用、可擴展的分布式存儲系統(tǒng),統(tǒng)一的對外提供對象存儲、塊存儲以及文件存儲功能,底層使用C/C++語言。
其中對象存儲功能支持 2 種接口:
1、兼容S3:提供了對象存儲接口,兼容 S3 RESTful 接口的一個大子集。
2、兼容Swift:提供了對象存儲接口,兼容 Openstack Swift 接口的一個大子集。
Ceph是一個企業(yè)級分布式存儲系統(tǒng),功能強大,不僅可以為企業(yè)建立對象存儲服務,還可以幫助企業(yè)建立自己的云平臺,具有廣泛的應用場景特別是在云環(huán)境下使用廣泛。
Minio
Minio是一個企業(yè)級、兼容S3接口的對象存儲系統(tǒng)。Minio基于 Apache 2.0 許可協(xié)議,采用Go語言實現(xiàn),客戶端支持Java、Python、Go等多種語言,是一種輕量級、高并發(fā)的開源解決方案,可以作為云存儲方案用來保存海量的圖片,視頻,文檔等。
大數(shù)據(jù)集成方面,Minio支持各種常見的查詢計算引擎,比如Spark、Presto、Hive以及Flink等,可以使用這些處理框架查詢分析對象數(shù)據(jù),此外,Minio支持Parquet,Json、Csv格式等多種文件存儲格式,包括壓縮與編碼。更多特性可以參考官網(wǎng) 地址https://min.io。Minio架構(gòu):
Minio主要為人工智能、機器學習而設計,并適用于其他大數(shù)據(jù)負載。從架構(gòu)與功能方面考慮,Minio是一個比較好的開源對象存儲解決方案。
HBase MOB
這是利用HBase的MOB特性支持對象存儲功能。Apache HBase2.0 版本開始支持中等對象存儲(Medium Object Storage,簡稱 MOB),這個特性使得HBase能夠非常良好的存儲大小在100KB-10M的圖片、文檔、音頻、短視頻等二進制數(shù)據(jù)。
架構(gòu)如上,HBase MOB的設計類似于HBase + HDFS的方式,中等對象在寫入HDFS之前同樣是先寫入MemStore,但是刷寫與其他寫入數(shù)據(jù)不同,MOB數(shù)據(jù)被刷寫到MOB File中,MOB File被存放在特殊的Region中。
MOB特性在Apache HBase 2.0、CDH 5.4.x 或 HDP 2.5.x 及以上版本支持,用戶可以基于HBase MOB特性設計自己的對象存儲服務。
Hadoop Ozone
Ozone是 Apache Hadoop 的子項目,為了提供分布式、可擴展的對象存儲功能,主要是為了彌補HDFS在小文件存儲方面的不足之處。Ozone建立在一個高可用、支持塊復制的Hadoop分布式數(shù)據(jù)存儲層之上,稱為Hadoop Distributed Data Store(HDDS),上層可對接 Spark、Hive 以及 Yarn 等計算調(diào)度引擎。但是目前還處于alpha內(nèi)部測試版本,暫時不建議生產(chǎn)環(huán)境中使用。
小結(jié)
對象存儲主要是解決海量圖片、文檔、音視頻的存儲,其中主流的重量級解決方案是Swift與Ceph,它們各有特點,可以參考搜索引擎上的對比,Hadoop生態(tài)體系中備受關注的是HBase MOB,另外輕量級的Minio也是一種比較好的選擇。MongoDB也提供了大文件存儲模塊GridFS。建議根據(jù)實際情況做技術選型。
往期推薦
1、HBase最佳實踐 | 聊聊HBase核心配置參數(shù)
2、Apache Hudi:劍指數(shù)據(jù)湖的增量處理框架
3、Hadoop社區(qū)比 Ozone 更重要的事情
4、MapReduce Shuffle 和 Spark Shuffle 結(jié)業(yè)篇
總結(jié)
以上是生活随笔為你收集整理的聊一聊分布式对象存储解决方案的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Cookie全解
- 下一篇: OOP编程思想(面对对象编程)