傳統的Apache Hadoop群集系統將計算和存儲資源緊密結合在一起,HDFS簡化了大容量數據存儲,同時面臨著以下幾個茄子挑戰:
存儲空間或計算資源不足時,兩者可以同時擴展。假設用戶對存儲資源的需求遠遠大于對計算資源的需求,同時擴展計算和存儲將浪費新擴展的計算資源,反之,將浪費存儲資源。
這降低了擴展的經濟效率,增加了額外成本。獨立擴展的計算和存儲更靈活,但可顯著降低成本。
目前采用Hadoop牙齒存儲分離式體系結構的趨勢越來越明顯。
Xsky HDFS客戶端是XEOS存儲群集和Hadoop計算群集的連接器。Hadoop應用程序可以通過xsky HDFS客戶端訪問存儲在XEOS中的所有數據。
但是,引入XEOS存儲可能會導致現有HDFS和XEOS共存。如何同時利用兩個存儲群集是一個需要解決的問題。
01在群集之間復制數據
通常,如果計算應用程序需要訪問的數據存儲在另一個群集上,則必須將數據從一個群集復制到另一個群集。通常,使用Hadoop附帶的DistCp工具在群集之間復制數據。
牙齒方法可以在一定程度上解決數據合并問題,但是如果數據楊怡很多,機房帶寬有限,復制數據可能需要很長時間。另一種是,如果原始數據在復制過程中發生更改,則還必須考慮增量同步問題。
02聯邦HDFS和ViewFS
Hadoop 2.x發行版引入了聯邦HDFS功能,該功能預計可以解決NameNode的內存問題。通過聯邦HDFS,系統可以通過添加多個NameNode(每個NameNode管理文件系統命名空間的一部分)進行擴展。
但是,實際應用程序需要系統管理員維護多個NameNodes(所有NameNode都需要高可用性)和負載平衡服務,從而增加了管理成本。因此,HDFS的聯邦方案沒有在生產環境中采用。
與聯邦HDFS解決方案一起,Hadoop 2.x提供了ViewFS以管理多個命名空間視圖。
聯邦HDFS解決方案不能大規模應用,但ViewFS可以用于解決XEOS和HDFS的共存問題。
03視圖fs實施
ViewFS的全名為ViewFileSystem,它不是新的檔案系統,而是實現標準Hadoop FileSystem接口的邏輯視圖檔案系統。但是,實際請求處理位于各自的物理存儲群集上。
ViewFS維護裝載表。主要是viewfs的邏輯目錄和實際主存儲的映射關系。當收到應用程序調用時,ViewFS解析用戶的訪問請求,mount-table查找其主存儲目錄,并將請求轉發到主存儲。
ViewFS透明地將所有應用層的FileSystem調用傳遞到底層物理檔案系統。ViewFs實現了Hadoop文件系統接口,因此使用它透明地運行Hadoop工具。例如,所有shell命令都可以將ViewFS與shell和本地檔案系統一起使用。
在群集的核心網站配置中,fs.defaultFS設置為視圖fs的根目錄,即指定的root-table。
掛載表的掛載點在標準Hadoop配置文件中指定。ViewFS中的所有mount-table配置項都帶有前綴“fs.viewfs.mounttable”,并使用“link”標簽指定連接其他檔案系統的mount點。建議使用與Link文件系統目標位置相同的mount點名稱。安裝表格中未配置的任何命名空間都可以透過linkFallback回復至預設檔案系統。
將ViewFS的mount-table配置添加到群集配置中。例如:
Hadoop系統在Hadoop配置文件中查找名為“ClusterX”的mount-table。如上例所示,在所有網關和服務器配置中包括“ClusterX”。
04ViewFS應用程序節目方案
ViewFS可用于以下場景:
非結構化遠視數據可以通過DistCp等工具直接存儲在XEOS中,業務數據庫結構化數據和應用程序購買數據可以通過ETL作為Hive的外部表存儲在XEOS中。HBase和Hive繼續在現有HDFS上運行。這意味著HBase表數據和Hive內部表數據仍然通過HDFS存儲。
這一優勢在于可以將大量非結構化數據,甚至大量小文件托管到XEOS上,從而減輕HBase的負擔,同時Hive的所有新數據都通過XEOS存儲,后續擴展容量只需擴展XEOS存儲群集即可。
05XEOS配置ViewFS
大容量數據平臺基于CDH 6.3.2。HDFS core-site.xml添加以下配置:
Hadoop FS命令行:
Wordcount測試的運行結果如下:
06摘要
XSKY通過ViewFS將現有HDFS數據與新XEOS數據相關聯,解決了現有HDFS群集與新XEOS群集的共存問題,而不改變用戶使用習慣。現有HDFS數據可以繼續使用,XEOS可以用于托管新創建的數據。
這種方式不僅能充分利用舊設備,還能達到降低成本的目的。此外,您還可以通過XEOS橫向擴展功能單獨擴展存儲。