真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

HDFS中客戶端操作有哪些

這篇文章主要為大家展示了“HDFS中客戶端操作有哪些”,內(nèi)容簡(jiǎn)而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領(lǐng)大家一起研究并學(xué)習(xí)一下“HDFS中客戶端操作有哪些”這篇文章吧。

創(chuàng)新互聯(lián)是一家集網(wǎng)站建設(shè),嶺東企業(yè)網(wǎng)站建設(shè),嶺東品牌網(wǎng)站建設(shè),網(wǎng)站定制,嶺東網(wǎng)站建設(shè)報(bào)價(jià),網(wǎng)絡(luò)營(yíng)銷,網(wǎng)絡(luò)優(yōu)化,嶺東網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強(qiáng)企業(yè)競(jìng)爭(zhēng)力。可充分滿足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時(shí)我們時(shí)刻保持專業(yè)、時(shí)尚、前沿,時(shí)刻以成就客戶成長(zhǎng)自我,堅(jiān)持不斷學(xué)習(xí)、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實(shí)用型網(wǎng)站。

1、客戶端Hadoop環(huán)境準(zhǔn)備

1. 將支持window系統(tǒng)的hadoop安裝包,解壓到本地,并配置環(huán)境變量( 無(wú)中文或特殊符號(hào)的路徑)
--比如:我的Hadoop安裝包位置是:D:\hadoop\hadoop-3.1.0
配置環(huán)境變量:
	HADOOP_HOME   	D:\hadoop\hadoop-3.1.0
	path		%HADOOP_HOME%\bin

2. 如果上述操作后還有問題可以將bin目錄下hadoop.dll和winutils.exe放到C:/windows/system32目錄下,然后重啟電腦。

2、HDFS的API操作

2.1參數(shù)初始化配置

操作HDFS:

1.創(chuàng)建文件系統(tǒng)對(duì)象
2.具體操作 :上傳,刪除,下載.....
3.關(guān)資源
private FileSystem fs;
    //1.創(chuàng)建fs文件系統(tǒng)對(duì)象
    @Before
    public void before() throws Exception {
         /*
        get(final URI uri, final Configuration conf,final String user)
        uri : HDFS的地址
        conf : 需要使用的配置信息
        user : 用來(lái)操作HDFS的用戶
         */
        // uri : HDFS的地址
        URI uri = new URI("hdfs://hadoop102:9820");
        //conf : 需要使用的配置信息
        Configuration conf = new Configuration();
        //user : 用來(lái)操作HDFS的用戶
        String user = "luck";
        fs = FileSystem.get(uri, conf, user);
    }
//3.關(guān)資源
@After
    public void after(){
        try {
            if (fs != null) {
                fs.close();
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

2.2文件上傳、下載、刪除、文件詳情查看、判斷是文件還是目錄

    //2.具體的操作
    //上傳
    @Test
    public void test() throws IOException {
        /*
        copyFromLocalFile(boolean delSrc, boolean overwrite, Path src, Path dst)
          delSrc : 是否刪除源文件(是剪切還是復(fù)制)
          overwrite : 如果目標(biāo)文件已存在是否覆蓋目標(biāo)文件
                --注意:如果不覆蓋但目標(biāo)文件又存在則會(huì)報(bào)錯(cuò)
          src : 源文件路徑(本地)
          dst : 目標(biāo)文件路徑(HDFS)
         */
        fs.copyFromLocalFile(true, true,new Path("D:\\io\\hdfs\\aa.txt"),new Path("/hdfs"));
    }
    //下載
    @Test
    public void test2() throws IOException {
        /*
            copyToLocalFile(boolean delSrc, Path src, Path dst,
      boolean useRawLocalFileSystem)
        delSrc : 是否刪除源文件(HDFS上的文件)
        src : 源文件路徑(HDFS)
        dst : 目標(biāo)文件路徑(本地)
        useRawLocalFileSystem : 是否使用useRawLocalFileSystem
                如果使用:不會(huì)下載crc校驗(yàn)文件
                如果不使用 : 會(huì)下載crc校驗(yàn)文件
         */
        fs.copyToLocalFile(false,new Path("/hdfs/aa.txt"),new Path("D:\\io\\hdfs"),
                false);

    }

    //刪除
    @Test
    public void test3() throws IOException {
        /*
            delete(Path f, boolean recursive)
            f : 刪除的數(shù)據(jù)的路徑
            recursive : 是否遞歸(如果是目錄(非空)必須是true否則會(huì)報(bào)錯(cuò)。如果是文件true和false都可以)
         */
        fs.delete(new Path("/longge/sanguo.txt"),true);
    }

    //改名
    @Test
    public void test4() throws IOException {
        /*
            rename(Path src, Path dst)
            src : 源文件路徑
            dst : 目標(biāo)文件路徑
         */
        //fs.rename(new Path("/longge/xiyou.txt"),new Path("/longge/xiyouji.txt"));
        //移動(dòng)
        fs.rename(new Path("/longge/xiyouji.txt"),new Path("/hdfs/xiyouji.txt"));
    }

    //文件詳情查看
    @Test
    public void test5() throws IOException {
        /*
            listFiles(
                    final Path f, final boolean recursive)
            f : 目標(biāo)路徑
            recursive : 是否遞歸
         */
        RemoteIterator remoteIterator = fs.listFiles(new Path("/"), true);

        while(remoteIterator.hasNext()){
            //文件詳情對(duì)象
            LocatedFileStatus fileStatus = remoteIterator.next();
            //文件名
            System.out.println("=============" + fileStatus.getPath().getName() + "===================");
            System.out.println("=====所屬主:" + fileStatus.getOwner());
            System.out.println("=====副本數(shù)量:" + fileStatus.getReplication());
            //獲取塊的信息
            BlockLocation[] blockLocations = fileStatus.getBlockLocations();
            for (BlockLocation block : blockLocations) {
                System.out.println(block);
            }
        }

2.3用流的方式實(shí)現(xiàn)HDFS上傳和下載內(nèi)容

//用流的方式實(shí)現(xiàn)HDFS上傳和下載內(nèi)容
    //上傳
    @Test
    public void test7() throws IOException {
        //讀-從本地讀(文件輸入流)
        FileInputStream fis = new FileInputStream("D:\\io\\hdfs\\aa.txt");
        //寫-向HDFS寫
        FSDataOutputStream fos = fs.create(new Path("/hdfs/aa.txt"));
        //一邊讀一邊寫
        /*
            文件對(duì)拷
            copyBytes(InputStream in, OutputStream out,int buffSize, boolean close)
             in : 輸入流
             out : 輸出流
             buffsize :緩存大小
             close : 是否關(guān)流
         */
        IOUtils.copyBytes(fis,fos,1024,false);
        //關(guān)流
        IOUtils.closeStream(fis);
        IOUtils.closeStream(fos);
        /**
         *
         */
    }

    //下載
    @Test
    public void test8() throws IOException {
        //讀 - 從HDFS上讀
        FSDataInputStream fis = fs.open(new Path("/hdfs/xiyouji.txt"));
        //寫 - 向本地寫(文件輸出流)
        FileOutputStream fos = new FileOutputStream("D:\\io\\hdfs\\xiyouji.txt");
        //文件對(duì)拷
        IOUtils.copyBytes(fis,fos,1024,true);
    }

以上是“HDFS中客戶端操作有哪些”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!


網(wǎng)站名稱:HDFS中客戶端操作有哪些
鏈接地址:http://weahome.cn/article/jdohdd.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部