基于hadoop HDFS的存儲(chǔ)系統(tǒng)(web 網(wǎng)盤)

基于hadoop HDFS的存儲(chǔ)系統(tǒng)(web 網(wǎng)盤)

1. HDFS的優(yōu)勢

1.1 源碼注釋說很透徹:

Hadoop DFS is a multi-machine system that appears as a single
disk. It's useful because of its fault tolerance and potentially
very large capacity.
解釋:HDFS是一個(gè)多機(jī)系統(tǒng),對外作為一個(gè)整體的磁盤存在畔师。由于它的容錯(cuò)性和大容量娶靡,具有很大的可用性

1.2 對外作為一個(gè)整體 和 容錯(cuò)性 的原理

1)整體性
NameNode保存元數(shù)據(jù),作為整個(gè)系統(tǒng)打大管家
2)容錯(cuò)性
數(shù)據(jù)數(shù)據(jù)多機(jī)備份看锉、數(shù)據(jù)校驗(yàn)姿锭、心跳檢測、數(shù)據(jù)塊報(bào)告伯铣、讀寫容錯(cuò)

2. 代碼實(shí)現(xiàn)

這里代碼是基于maven呻此、springboot書寫。當(dāng)然方式多種多樣腔寡,都可以考慮焚鲜。

2.1 依賴重要的包

hadoop-common包,這是一個(gè)對hadoop其余模塊的公告支持庫放前。
包含conf忿磅、FS、IO和IPC等部分
hadoop-common源碼地址如下:
https://github.com/apache/hadoop/tree/trunk/hadoop-common-project

2.1 上傳功能

1)接收用戶的上傳請求

 package com.hdlw.controls;
 @Controller
public class UploadMap {
...
    @RequestMapping(value = "/upload")
    @ResponseBody
    public ReturnMessage upload(@RequestParam("file") MultipartFile file,       HttpServletRequest httpServletRequest) {
        ...
        int result = UploadDownload.upload(file.getInputStream(), path);
        ...
    }
}

2)處理上傳存儲(chǔ)請求

 public class UploadDownload {
 ...
 public static int upload(InputStream inputStream, String path) {
        int result = -1;
        //借助FileSystem 來聯(lián)系/操作HDFS系統(tǒng)
        //這里針對每個(gè)請求實(shí)例化一個(gè)局部變量來處理
        FileSystem fileSystem = checkAndInit();
        if (fileSystem == null) {
            return result;
        }
        OutputStream outputStream = null;
        try {
            outputStream = fileSystem.create(new Path(path), true);
            result = IOUtils.copy(inputStream, outputStream);
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            close(inputStream,outputStream);
        }
        return result;
    }
 ...
 }

2.2 下載功能

1)接收用戶的下載請求

@GetMapping("/download")
    public String downloadFile(HttpServletRequest request, HttpServletResponse response, @RequestParam String filenameName) {
       .....
        try {
            response.setContentType("application/force-download");
            response.addHeader("Content-Disposition", "attachment;fileName=" + filenameName);
            int result = UploadDownload.download(response.getOutputStream(), path);
            System.out.println(result);
            if (result != -1) {
                returnMessage.setMsg(constants.operate_ok);
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
        return null;
    }

1)下載請求處理

public static int download(OutputStream outputStream, String path){
        int result = -1;
        FileSystem fileSystem = checkAndInit();
        if (fileSystem == null) {
            return result;
        }
        InputStream inputStream = null;
        Path filePath = new Path(path);
        try {
            if (!fileSystem.exists(filePath)) {
                return result;
            }
            inputStream = fileSystem.open(new Path(path));
            result = IOUtils.copy(inputStream, outputStream);
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            close(inputStream,outputStream);
        }
        return result;
    }

結(jié)語

要實(shí)現(xiàn)復(fù)雜的功能還是有不少工作和細(xì)節(jié)需要去做:
權(quán)限管理凭语、用戶管理葱她、上傳、查詢似扔、下載览效、、刪除虫几、目錄(文件夾)操作、hdfs系統(tǒng)管理

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末挽拔,一起剝皮案震驚了整個(gè)濱河市辆脸,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌螃诅,老刑警劉巖啡氢,帶你破解...
    沈念sama閱讀 216,651評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件状囱,死亡現(xiàn)場離奇詭異,居然都是意外死亡倘是,警方通過查閱死者的電腦和手機(jī)亭枷,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,468評論 3 392
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來搀崭,“玉大人叨粘,你說我怎么就攤上這事×龆茫” “怎么了升敲?”我有些...
    開封第一講書人閱讀 162,931評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長轰传。 經(jīng)常有香客問我驴党,道長,這世上最難降的妖魔是什么获茬? 我笑而不...
    開封第一講書人閱讀 58,218評論 1 292
  • 正文 為了忘掉前任港庄,我火速辦了婚禮,結(jié)果婚禮上恕曲,老公的妹妹穿的比我還像新娘鹏氧。我一直安慰自己,他們只是感情好码俩,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,234評論 6 388
  • 文/花漫 我一把揭開白布度帮。 她就那樣靜靜地躺著,像睡著了一般稿存。 火紅的嫁衣襯著肌膚如雪笨篷。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,198評論 1 299
  • 那天瓣履,我揣著相機(jī)與錄音率翅,去河邊找鬼。 笑死袖迎,一個(gè)胖子當(dāng)著我的面吹牛冕臭,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播燕锥,決...
    沈念sama閱讀 40,084評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼辜贵,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了归形?” 一聲冷哼從身側(cè)響起托慨,我...
    開封第一講書人閱讀 38,926評論 0 274
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎暇榴,沒想到半個(gè)月后厚棵,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體蕉世,經(jīng)...
    沈念sama閱讀 45,341評論 1 311
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,563評論 2 333
  • 正文 我和宋清朗相戀三年婆硬,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了狠轻。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,731評論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡彬犯,死狀恐怖向楼,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情躏嚎,我是刑警寧澤蜜自,帶...
    沈念sama閱讀 35,430評論 5 343
  • 正文 年R本政府宣布,位于F島的核電站卢佣,受9級特大地震影響重荠,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜虚茶,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,036評論 3 326
  • 文/蒙蒙 一戈鲁、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧嘹叫,春花似錦婆殿、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,676評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至喂饥,卻和暖如春消约,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背员帮。 一陣腳步聲響...
    開封第一講書人閱讀 32,829評論 1 269
  • 我被黑心中介騙來泰國打工或粮, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人捞高。 一個(gè)月前我還...
    沈念sama閱讀 47,743評論 2 368
  • 正文 我出身青樓氯材,卻偏偏與公主長得像,于是被迫代替她去往敵國和親硝岗。 傳聞我的和親對象是個(gè)殘疾皇子氢哮,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,629評論 2 354

推薦閱讀更多精彩內(nèi)容

  • 首先,我們在使用前先看看HDFS是什麼型檀?這將有助于我們是以后的運(yùn)維使用和故障排除思路的獲得冗尤。 HDFS采用mast...
    W_Bousquet閱讀 4,194評論 0 2
  • 當(dāng)數(shù)據(jù)量增大到超出了單個(gè)物理計(jì)算機(jī)存儲(chǔ)容量時(shí),有必要把它分開存儲(chǔ)在多個(gè)不同的計(jì)算機(jī)中。那些管理存儲(chǔ)在多個(gè)網(wǎng)絡(luò)互連的...
    單行線的旋律閱讀 1,918評論 0 7
  • 1.HDFS性能介紹 HDFS(Hadoop Distributed File System)是一個(gè)分布式文件系統(tǒng)...
    宇晨棒棒的閱讀 516評論 0 1
  • 南柯一夢生闲, 卻情迷夢中, 是本不該夢月幌, 還是不該讓夢這么快蘇醒碍讯?
    蘇牟閱讀 162評論 0 2
  • 一段在這座城市留下的故事 一些無法忘懷的記憶 一場真實(shí)情感的記錄 一輩子尋找的那些關(guān)于自己的碎片 在這樣一個(gè)變換復(fù)...
    Jackson_Run閱讀 665評論 0 2