阿裡雲檔案存儲HDFS服務是阿裡雲專門針對先進的存儲計算分離架構下的大資料分析場景定制推出的檔案存儲服務。檔案存儲HDFS采用全自研的底層架構,有效規避了開源HDFS系統的諸多短闆,并提供标準的HDFS通路協定,使用者無需對現有大資料分析應用做任何修改,即可使用具備無限容量及性能擴充、單一命名空間、高可靠和高可用等特性的托管型分布式檔案系統。CDH是Cloudera公司出品的Hadoop開源版本,廣泛應用于大資料分析場景中。利用阿裡雲檔案存儲HDFS,使用者可以友善的在雲上實作存儲計算分離架構,降低系統的整體擁有成本的同時,享受先進架構帶來的各種優勢。
背景介紹
在大資料分析場景中的部署形态大體上可以分為兩類:融合部署和分離部署。
- 融合部署指的是計算和存儲部署在一個叢集中。
- 分離部署指的是計算和存儲分别部署在不同的叢集中。
作為大資料分析架構的先驅,Hadoop早期設計時将HDFS和上層計算引擎部署在一起。設計假設是在早期低速網絡環境下可以利用資料本地化特性來提升作業性能。
随着10年來軟體和硬體的不斷演進,“資料本地化(data locality)”的收益在不斷的減少。
- 在許多大資料分析場景中,即使計算和資料存儲部署在一個叢集,分析引擎也無法受益于資料本地化。
- 雲服務商的内部網絡速度從1G網絡已經演進到25G甚至100G網絡,帶寬提升了100倍,使用者态TCP和RDMA技術也開始在雲網絡中大規模應用,但是大資料分析基于的HDD磁盤速度并沒有太大變化。在雲環境下,内網的網絡帶寬已經不是性能的瓶頸。
将計算和存儲分開可以簡化操作,使用者可以分别擴充和管理計算和存儲系統。
- 從叢集擴充角度來說,随着業務的發展,叢集的規模常常不能滿足業務的需求。也許是資料規模超過了叢集存儲能力,也許是業務上對資料産出的周期提出新的要求導緻計算能力跟不上。這就要求我們能随時應對叢集存儲空間不足或者計算能力不足的挑戰。将計算和存儲分離,可以更好地應對單方面的不足。如果将計算和存儲混合部署,常常會因為為了擴存儲而帶來額外的計算擴容,這其實就是一種浪費;同理,隻為了提升計算能力,也會帶來一段時期的存儲浪費。
- 公共雲計算服務的一個很大的特性是按需建立叢集,也就是需要處理資料時才去建立叢集,用完即可銷毀,最大程度降低使用成本。這種模式很适合那些隻需要每天定時進行資料處理的場景,例如産出每天報表等等。但是,融合部署模式無法支援這種使用模式,融合部署模式的叢集釋放後資料也就丢失。計算和存儲分離可以很好地解決這個問題,計算叢集可以随時使用随時建立,增加使用的靈活性。
- 獨立的HDFS存儲系統可以實作多計算叢集對同一資料湖的通路,以及不同業務計算資源的實體隔離,最大程度的保障業務穩定。如離線業務與實時業務的隔離場景,使用者可以借助存儲計算分離架構,為離線計算與實時計算建立兩個獨立實體叢集,然後通路同一個的檔案存儲HDFS檔案系統執行個體。獨立的HDFS存儲系統還可以讓多個不同版本Hadoop叢集分析底層同一份HDFS存儲叢集中的資料,滿足了由于曆史原因導緻的業務系統依賴多版本Hadoop計算架構造成的多叢集共存資料孤島問題。
- 存儲計算分離以後,托管化的存儲系統提供高可靠和彈性擴充,可以讓使用者更專注與計算本身,不再分散精力到HDFS系統的運維上。
如何建構系統
線上下實作存儲計算分離是有一定門檻的,涉及已有硬體架構的大量更新。得益于雲上資源的虛拟化和服務化以及高速内部網絡,您可以在阿裡雲上輕松的建構存儲計算分離。請參考已下專題文檔,一步步建構:
1.CDH6資料遷移:
https://help.aliyun.com/document_detail/127300.html2.配置CDH6使用檔案存儲HDFS:
https://help.aliyun.com/document_detail/127312.html3.解除安裝并釋放CDH6 HDFS服務使用的雲盤:
https://help.aliyun.com/document_detail/127418.html性能測試
叢集配置:
架構 | 計算資源 | 記憶體 | Shuffle | HDFS |
---|---|---|---|---|
存儲計算分離叢集配置 | 5 x 8 core | 5 x 32 GB | 250GB x 4 TB 雲盤 | 阿裡雲HDFS 30TB |
存儲計算融合叢集配置 | 5.5TB本地盤 | 自建30TB |
存儲計算分離叢集配置:1 master 8cpu 32GB、4 Slave 8cpu 32GB、每個節點4塊250GB高效雲盤、10TB 檔案存儲HDFS檔案系統執行個體
存儲計算融合叢集配置:1 master 8cpu 32GB、4 Slave 8cpu 32GB、每個slave節點5.5T*4本地盤
軟體版本:CDH6.0.1、Java 1.8
測試場景:
資料規模:100GB1000T
Driver主程序部署模式:cluster
spark并發度:2000
io.file.buffer.size: 64m
測試結果:
分析:
在資料量相同,使用檔案存儲hdfs比使用本地磁盤搭建hdfs進行測試運作時間更快,而且各個測試階段都有明顯提升。特别是當資料量為1000g的時候,gendata階段提升最明顯。此時使用hadoop hdfs測試gendata項平均運作時間為1808.514s,而使用檔案存儲hdfs平均運作時間約為835s。通過監控可知,使用本地磁盤搭建的hdfs的讀取吞吐最大值為1.9GB/s,而檔案存儲HDFS的讀取吞吐最大值為2.69GB/s。這完全改變了存儲計算分離架構的I/O性能一定低于存儲計算混部架構的習慣性印象。同時在整個階段中,使用檔案存儲hdfs的叢集worker節點無需處理磁盤I/O,系統可以将跟多的CPU用在真是的計算負載上。
結語
我們可以看出,在雲上CDH叢集中,檔案存儲HDFS結合ECS可以在讓存儲計算靈活部署的前提下,讓Spark性能得到了顯著的提升。檔案存儲HDFS這個新的針對大資料分析的雲存儲産品可以極大地提升原有的大資料分析系統的使用感受。當然,除了Spark以外我們會持續推出其他大資料引擎與檔案存儲HDFS結合的最佳實踐,歡迎大家試用
檔案存儲HDFS。