System.ArgumentOutOfRangeException: 索引和長度必須引用該字符串內的位置。 參數名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技術實現步驟摘要】
本專利技術屬于大數據存儲領域,尤其涉及一種基于hdfs批量對文件設置存儲策略加速方法。
技術介紹
1、hadoop分布式文件系統hdfs(hadoop?distributed?file?system),其為主備從(master/backup/slave)形式,一個hadoop集群由兩個namenode(名字節點)和若干個datanode(數據節點)組成。namenode管理角色,負責文件系統的名字空間的操作,它負責維護文件路徑到數據塊的映射,數據塊到datanode的映射等。datanode負責處理客戶端的讀寫請求,它在namenode統一調度下進行數據塊的創建、刪除和復制。hdfs支持異構存儲,異構存儲可以根據各個存儲介質讀寫特性的不同發揮各自的優勢。目前支持的存儲類型有4種:ram_disk(內存)、ssd(ssd盤)、disk(disk盤)、archive,支持7種存儲策略,例如all_ssd,hot等。
2、client(客戶端)可以獲取、設置文件或者目錄的存儲策略等操作,并且提供類似shell命令行方式;此外,hdfs也提供了javaapi,作為應用程序訪問文件系統的客戶端編程接口。
3、client調用javaapi訪問集群進行setstoragepolicy操作。
4、對于現有的文件(setstoragepolicy)的操作,僅支持對一個文件或目錄進行設置存儲策略,而該設置存儲策略操作一次就要與namenode交互一次,產生一次rpc請求。當需要對多個文件或目錄進行設置存儲策略操
5、在某些場景下,需要對大量的文件進行設置存儲策略,這將會影響namenode的性能。因此,為了解決在高并發場景下,大量的客戶端請求導致namenode?rpc請求劇增和writelock請求數增加,導致客戶端設置存儲策略文件(目錄)耗時嚴重且影響客戶端的其他操作。
技術實現思路
1、本專利技術所要解決的技術問題是針對
技術介紹
的不足提供本專利技術提供了一種基于hdfs批量對文件設置存儲策略加速方法,通過為client提供批量對文件設置存儲策略的方法,極大地減少client與namenode的交互次數,從而減少多次發起的網絡延時開銷。同時也會降低namenode的cpu開銷,以及減少writelock的次數。
2、本專利技術為解決上述技術問題采用以下技術方案:
3、一種基于hdfs批量對文件設置存儲策略加速方法,包含客戶端client,名字節點namenode兩部分;
4、其中,客戶端client:用于設置hdfs文件存儲策略的應用程序;其中,hdfs為hadoop分布式文件系統;
5、名字節點namenode:分布式文件系統的管理者,用于負責管理文件系統的命名空間、目錄結構、元數據信息以及提供備份機制;
6、基于hdfs原理理解和角色情況,具體步驟如下:
7、步驟1,client通過javaapi,調用filesystem類setbatchedstoragepolicy方法傳入文件或目錄列表,以及存儲策略;其中,filesystem提供了hdfs文件操作的所有接口;setbatchedstoragepolicy為批量設置存儲策略的方法;
8、步驟2,client向namenode發起rpc請求,來請求設置輸入文件或目錄列表的存儲策略;其中,rpc為遠程過程調用;
9、步驟3namenode側fsnamesystem類setbatchedstoragepolicy方法,校驗請求的路徑是否有效,以及是否處于安全模式,持有writelock后對文件或目錄進行設置存儲策略;其中,fsnamesystem保存和管理hdfs文件操作系統的元數據,writelock為寫鎖;
10、作為本專利技術一種基于hdfs批量對文件設置存儲策略加速方法的進一步優選方案,在步驟1中,向namenode發起讀文件的rpc請求,支持傳入源文件目錄和存儲策略形式,具體包含如下步驟:
11、步驟1.1,client調用java?api接口,通過get方法,該方法用來獲取一個filesystem對象,用來繼續操作文件操作系統;
12、步驟1.2,調用本專利技術filesystem類setbatchedstoragepolicy方法,該方法支持傳入路徑列表,對多個文件或者目錄進行批量設置存儲策略;
13、步驟1.3,通過遍歷的方式將目錄列表轉換為hdfs絕對路徑。
14、作為本專利技術一種基于hdfs批量對文件設置存儲策略加速方法的進一步優選方案,在步驟3中,namenode在接收到client設置存儲策略操作請求后,拿到writelock對文件進行設置存儲策略操作,其具體步驟包括:
15、步驟2.1,namenode側接受到client發來的rpc請求,包含文件目錄列表,由原來的n次請求降為1次;
16、步驟2.2,獲取到writelock后,通過遍歷整個文件目錄列表的方式,對列表中的每一個元素進行設置存儲策略操作,即拿到writelock后批量對文件或目錄進行設置存儲策略,持有一次writelock。
17、本專利技術采用以上技術方案與現有技術相比,具有以下技術效果:
18、1、本專利技術提出了一種基于hdfs批量設置存儲策略加速方法,client將構造好的源文件和目標文件列表,通過javaapi向namenode發起rpc請求,申請setbatchedstoragepolicy(批量設置存儲策略)文件;
19、2、為client提供setbatchedstoragepolicy方法,client能夠批量訪問namenode元數據方法,rpc請求數由原來的n次降為n/1000次,大大減少client與namenode的交互次數;writelock數從原來的n次鎖降為n/1000次,極大降低鎖競爭問題以及對其他操作請求的影響;
20、3、本專利技術client對大量文件進行設置存儲策略時,通過setbatchedstoragepolicy方法批量訪問namenode元數據,極大地提升設置文件存儲策略的性能,如對10w文件進行設置存儲策略,性能提升200倍以上,耗時在7秒左右;
21、4、本專利技術能夠解決在高并發場景下,有效緩解namenode?rpc壓力、降低writelock鎖競爭以及提升client對文件的設置存儲效率;
22、5、本專利技術通過為client提供批量對文件設置存儲策略的方法,極大地減少client與namenode的交互次數,從而本文檔來自技高網...
【技術保護點】
1.一種基于HDFS批量對文件設置存儲策略加速方法,其特征在于:包含客戶端Client,名字節點NameNode兩部分;
2.根據權利要求1所述的一種基于HDFS批量對文件設置存儲策略加速方法,其特征在于:在步驟1中,向NameNode發起讀文件的RPC請求,支持傳入源文件目錄和存儲策略形式,具體包含如下步驟:
3.根據權利要求1所述的一種基于HDFS批量對文件設置存儲策略加速方法,其特征在于:在步驟3中,NameNode在接收到Client設置存儲策略操作請求后,拿到writeLock對文件進行設置存儲策略操作,其具體步驟包括:
【技術特征摘要】
1.一種基于hdfs批量對文件設置存儲策略加速方法,其特征在于:包含客戶端client,名字節點namenode兩部分;
2.根據權利要求1所述的一種基于hdfs批量對文件設置存儲策略加速方法,其特征在于:在步驟1中,向namenode發起讀文件的rpc請求,支持傳入...
【專利技術屬性】
技術研發人員:曹俊亮,趙智峰,王剛,高超,張凱,
申請(專利權)人:西安烽火軟件科技有限公司,
類型:發明
國別省市:
還沒有人留言評論。發表了對其他瀏覽者有用的留言會獲得科技券。