1. <ul id="0c1fb"></ul>

      <noscript id="0c1fb"><video id="0c1fb"></video></noscript>
      <noscript id="0c1fb"><listing id="0c1fb"><thead id="0c1fb"></thead></listing></noscript>

      99热在线精品一区二区三区_国产伦精品一区二区三区女破破_亚洲一区二区三区无码_精品国产欧美日韩另类一区

      RELATEED CONSULTING
      相關(guān)咨詢
      選擇下列產(chǎn)品馬上在線溝通
      服務(wù)時(shí)間:8:30-17:00
      你可能遇到了下面的問(wèn)題
      關(guān)閉右側(cè)工具欄

      新聞中心

      這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷(xiāo)解決方案
      HDFS適合做什么

      這篇文章將為大家詳細(xì)講解有關(guān)HDFS適合做什么,小編覺(jué)得挺實(shí)用的,因此分享給大家做個(gè)參考,希望大家閱讀完這篇文章后可以有所收獲。

      創(chuàng)新互聯(lián)建站專(zhuān)注于綏濱網(wǎng)站建設(shè)服務(wù)及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗(yàn)。 熱誠(chéng)為您提供綏濱營(yíng)銷(xiāo)型網(wǎng)站建設(shè),綏濱網(wǎng)站制作、綏濱網(wǎng)頁(yè)設(shè)計(jì)、綏濱網(wǎng)站官網(wǎng)定制、成都微信小程序服務(wù),打造綏濱網(wǎng)絡(luò)公司原創(chuàng)品牌,更為您提供綏濱網(wǎng)站排名全網(wǎng)營(yíng)銷(xiāo)落地服務(wù)。

      HDFS適合做:

      1. 存儲(chǔ)大文件。上G、T甚至P。

      2. 一次寫(xiě)入,多次讀取。并且每次作業(yè)都要讀取大部分的數(shù)據(jù)。

      3. 搭建在普通商業(yè)機(jī)群上就可以了。雖然會(huì)經(jīng)常宕機(jī),但HDFS有良好的容錯(cuò)機(jī)制。

      HDFS不適合做:

      1. 實(shí)時(shí)數(shù)據(jù)獲取。如果有這個(gè)需求可以用HBase。

      2. 很多小文件。因?yàn)閚amenode要存儲(chǔ)HDFS的metadata(比如目錄的樹(shù)狀結(jié)構(gòu),每個(gè)文件的文件名、ACL、長(zhǎng)度、owner、文件內(nèi)容存放的位置等等信息),所以HDFS上文件的數(shù)目受到namenode內(nèi)存的限制。

      3. 并發(fā)環(huán)境下的寫(xiě)入和修改。

      Block

      一個(gè)磁盤(pán)的block通常是512B,內(nèi)核一次讀寫(xiě)磁盤(pán)不能少于這個(gè)數(shù)目。在HDFS上一個(gè)Block的默認(rèn)大小是64M,HDFS block的大小可以通過(guò)ds.block.size來(lái)設(shè)置,很多工作站上把一個(gè)block調(diào)為128M。之所以要把block設(shè)置得這么大,是因?yàn)镠DFS上的文件普遍都是大文件,如果block很小,那一個(gè)文件就要存放在很多block上,而這些位置信息都要被namenode所記錄,一來(lái)浪費(fèi)namenode的存儲(chǔ)空間,二來(lái)檢索一個(gè)文件的時(shí)候開(kāi)銷(xiāo)也比較高。

      當(dāng)一個(gè)文件的長(zhǎng)度小于一個(gè)block size時(shí),它會(huì)單獨(dú)占用一個(gè)block,但它占用的磁盤(pán)空間仍然是其真實(shí)的長(zhǎng)度。

      Namenode和Datanode

      namenode管理文件系統(tǒng)的namespace,而datanode負(fù)責(zé)存儲(chǔ)和檢索block。一般情況下一個(gè)block會(huì)存放在多個(gè)不同的datanode上,以提高容錯(cuò)性。datanode在讀寫(xiě)HDFS文件時(shí),都需要通過(guò)namenode來(lái)獲知讀寫(xiě)的具體位置。

      你可以使用distcp命令在不同的datanode之間并行地復(fù)制大文件:

      $ hadoop distcp hdfs://datanode1/foo hdfs://datanode2/bar

      HDFS上的文件是使用URI來(lái)定位的,前綴都是hdfs://localhost:9000,你可以把這個(gè)前綴賦給屬性fs.default.name(屬性可以在配置文件中指定,也可以在代碼中指定),這樣你就不用每次都寫(xiě)這個(gè)前綴了,比如以下2個(gè)命令是等價(jià)的:

      $ hadoop fs -ls /

      $ hadoop fs -ls hsfs://localhost:9000/

      本地文件系統(tǒng)的前綴是file://

      orisun@zcypc:~$ hadoop fs -ls file:///Found 22 items
      drwxr-xr-x   - root root       4096 2012-08-02 19:17 /home
      dr-xr-xr-x   - root root          0 2012-08-20 22:14 /proc
      drwxr-xr-x   - root root       4096 2010-04-23 18:11 /mnt
      drwx------   - root root       4096 2012-08-18 10:46 /root
      drwxr-xr-x   - root root       4096 2012-08-18 10:40 /sbin
      ……

      HDFS默認(rèn)的文件備份數(shù)量是3,這個(gè)可以在dfs.replication屬性中設(shè)置,在偽分布式模式中由于datanode只有一個(gè),所以要把該值設(shè)為1。當(dāng)你使用hadoop fs -ls命令時(shí)會(huì)得到形如:

      drwxr-xr-x     -   orisun   supergroup        0   2012-08-20 14:23   /tmp

      -rw-------    1   orisun   supergroup   4   2012-08-20 14:23   /tmp/jobtracker.info

      跟UNIX下的ls命令很像,其中第2列就是replication的數(shù)目,第5列是文件的長(zhǎng)度,以B為單位(文件夾的長(zhǎng)度是0,而在UNIX文件系統(tǒng)中目錄的長(zhǎng)度是512B的整倍數(shù),因?yàn)槟夸浰嫉目臻g是以塊為分配單位的,每塊為512B)。

      FSDataInputStream繼承自Java的DataInputStream并支持隨機(jī)讀寫(xiě)。

      public class FSDataInputStream extends DataInputStream implements Seekable, PositionedReadable {}
      public interface Seekable {
        void seek(long pos) throws IOException;
        long getPos() throws IOException;
        boolean seekToNewSource(long targetPos) throws IOException;
      }

      FSDataInputStream還可以從指定的位置讀取文件的一部分。

      public interface PositionedReadable {    public int read(long position, byte[] buffer, int offset, int length) throws IOException;    public void readFully(long position, byte[] buffer, int offset, int length) throws IOException;    public void readFully(long position, byte[] buffer) throws IOException;
      }

      如果你想在HDFS上新建一文件可以使用

      public FSDataOutputStream create(Path f) throws IOException

      使用create()函數(shù)時(shí)注意2點(diǎn):文件必須之前不存在;它可附帶地創(chuàng)建任意多級(jí)的父目錄。

      有時(shí)候你可能會(huì)需要用append(),在文件不存在時(shí)會(huì)創(chuàng)建它。

      public FSDataOutputStream append(Path f) throws IOException

      重命名文件

      public void rename(String oldName,String newName)

      當(dāng)然你也可以用mkdir來(lái)創(chuàng)建目錄

      public boolean mkdirs(Path f) throws IOException

      由于create()可以附帶地創(chuàng)建任意多級(jí)的父目錄,所以mkdir你并不會(huì)常用。

      FileSystem的getFileStatus()方法可以獲取文件和目錄的FileStatus。

      Path file = new Path("/dir/file");
      FileStatus stat = fs.getFileStatus(file);

      然后你就可以訪問(wèn):

      stat.getPath()
      stat.getLen()
      stat.isLen()
      stat.getMogificationTime()
      stat.getReplication()
      stat.getBlockSize()
      stat.getOwner()
      stat.getReplication()
      stat.getBlockSize()
      stat.getGroup()
      stat.getPermission()

      實(shí)際上上述信息都存儲(chǔ)在namenode中。

      你還可以獲取一個(gè)目錄下所有文件的FileStatus。

      public FileStatus[] listStatus(Path f) throws IOExceptionpublic FileStatus[] listStatus(Path f, PathFilter filter) throws IOExceptionpublic FileStatus[] listStatus(Path[] files) throws IOExceptionpublic FileStatus[] listStatus(Path[] files, PathFilter filter) throws IOException

      在指定文件時(shí),hadoop同樣支持globbing,它支持的wildcard有:

      *  0個(gè)或多個(gè)任意字符

      ?  任意單個(gè)字符

      [ab]  [^ab]  [a-b]  [^a-b]

      {exp1,exp2}    匹配exp1或exp2

      \c  轉(zhuǎn)義

      fs.listStatus(new Path("/2007/*/*"), new RegexExcludeFilter("^.*/2007/12/31$"))

      將匹配2007年的所有文件,但是2007-12-31的文件將被filter掉。

      public boolean delete(Path f, boolean recursive) throws IOException

      刪除目錄時(shí)可以選擇是否啟用遞歸模式。

       上面已經(jīng)提到大量的小文件會(huì)極大消耗namenode的內(nèi)存,所以在這種情況下我們需要使用Hadoop Archives(HAR)把文件歸檔為一個(gè)大文件。

      $ hadoop archive -archiveName orisun.har -p /user/orisun /user

      把/user/orisun下的所有文件打包成orisun.tar放在/user目錄下。

      你還可以查看一個(gè)har文件中包含哪些文件:

      orisun@zcypc:~$ hadoop fs -lsr har:///user/orisun.hardrwxr-xr-x   - orisun supergroup          0 2012-08-20 16:49 /user/orisun.har/mse-rw-r--r--   1 orisun supergroup          0 2012-08-20 16:49 /user/orisun.har/mse/list-rw-r--r--   1 orisun supergroup          0 2012-08-20 16:49 /user/orisun.har/book
      orisun@zcypc:~$ hadoop fs -ls har:///user/orisun.har/mseFound 1 items-rw-r--r--   1 orisun supergroup          0 2012-08-20 16:49 /user/orisun.har/mse/list

      HAR也是一個(gè)文件系統(tǒng),一個(gè)Har URI的完整模式是har://-/

      orisun@zcypc:~$ hadoop fs -lsr har://hdfs-localhost:9000/user/orisun.har/mse-rw-r--r--   1 orisun supergroup          0 2012-08-20 16:49 /user/orisun.har/mse/list

      刪除har文件必須使用rmr命令,用rm是不行的。

      $ hadoop fs -rmr /user/orisun.har

       使用HAR的一些限制:

      1. 會(huì)產(chǎn)生原始文件的完整備份,占用磁盤(pán)空間。當(dāng)然你可以以在建好har文件后把原文件刪掉。

      2. HAR只是把多個(gè)文件打包成一個(gè)文件并沒(méi)有采用任何的壓縮策略。

      3. HAR文件是不可變,如何你想增加或從har中刪除一個(gè)文件,你只能重新歸檔。

      4. InputFormat不理會(huì)har的存在,這意味著har文件對(duì)于MapReduce來(lái)說(shuō)仍然會(huì)產(chǎn)生多個(gè)InputSlit,不會(huì)提高效率。要解決“小文件很多導(dǎo)致map task很多”的問(wèn)題,可以采用CombineFileInputFormat。

      關(guān)于“HDFS適合做什么”這篇文章就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,使各位可以學(xué)到更多知識(shí),如果覺(jué)得文章不錯(cuò),請(qǐng)把它分享出去讓更多的人看到。


      網(wǎng)頁(yè)標(biāo)題:HDFS適合做什么
      標(biāo)題來(lái)源:http://www.ef60e0e.cn/article/pccscg.html
      99热在线精品一区二区三区_国产伦精品一区二区三区女破破_亚洲一区二区三区无码_精品国产欧美日韩另类一区
      1. <ul id="0c1fb"></ul>

        <noscript id="0c1fb"><video id="0c1fb"></video></noscript>
        <noscript id="0c1fb"><listing id="0c1fb"><thead id="0c1fb"></thead></listing></noscript>

        土默特左旗| 太仆寺旗| 古田县| 梁平县| 宜君县| 鄂尔多斯市| 梅州市| 翁牛特旗| 莒南县| 宽城| 汶川县| 芦山县| 聂荣县| 渝北区| 株洲县| 资源县| 吴堡县| 三门县| 福安市| 会理县| 民权县| 米易县| 北辰区| 曲水县| 龙胜| 乌兰县| 上杭县| 临朐县| 双鸭山市| 岢岚县| 冕宁县| 汽车| 航空| 禹州市| 长沙县| 湖州市| 广宗县| 易门县| 山丹县| 屏山县| 常山县|