HDFS數據處理速度比本地數據慢得多

參考https://www.cnblogs.com/sdksdk0/p/5585047.htmlhtml

【HDFS原理】node

Hadoop分佈式文件系統(HDFS)被設計成適合運行在通用硬件(commodity hardware)上的分佈式文件系統。HDFS體系結構中有兩類節點,一類是NameNode,又叫"元數據節點";另外一類是DataNode,又叫"數據節點"。這兩類節點分別承擔Master和Worker具體任務的執行節點。總的設計思想:分而治之——將大文件、大批量文件,分佈式存放在大量獨立的服務器上,以便於採起分而治之的方式對海量數據進行運算分析。linux

HDFS是一個主/從(Mater/Slave)體系結構,從最終用戶的角度來看,它就像傳統的文件系統同樣,能夠經過目錄路徑對文件執行CRUD(Create、Read、Update和Delete)操做。但因爲分佈式存儲的性質,HDFS集羣擁有一個NameNode和一些DataNode。NameNode管理文件系統的元數據,DataNode存儲實際的數據。客戶端經過同NameNode和DataNodes的交互訪問文件系統。客戶端聯繫NameNode以獲取文件的元數據,而真正的文件I/O操做是直接和DataNode進行交互的。
HDFS通常是用來「一次寫入,屢次讀取」,不適合作實時交互性很強的事情,不適合存儲大量小文件(固然,若是你偏要存大量小文件的話本文末尾會有解決方案).服務器

1 分佈式文件系統,它所管理的文件是被切塊存儲在若干臺datanode服務器上.
2 hdfs提供了一個統一的目錄樹來定位hdfs中的文件,客戶端訪問文件時只要指定目錄樹的路徑便可,不用關心文件的具體物理位置.
3 每個文件的每個切塊,在hdfs集羣中均可以保存多個備份(默認3份),在hdfs-site.xml中,dfs.replication的value的數量就是備份的數量.
4 hdfs中有一個關鍵進程服務進程:namenode,它維護了一個hdfs的目錄樹及hdfs目錄結構與文件真實存儲位置的映射關係(元數據).而datanode服務進程專門負責接收和管理"文件塊"-block.默認大小爲128M(可配置),(dfs.blocksize).(老版本的hadoop的默認block是64M的)app

【HDFS Shell經常使用操做】分佈式

--appendToFile  ----追加一個文件到已經存在的文件末尾oop

-->hadoop fs  -appendToFile  ./hello.txt hdfs://hadoop-server01:9000/hello.txt設計

能夠簡寫爲:Hadoop fs  -appendToFile  ./hello.txt /hello.txtserver

-cat  ---顯示文件內容 xml

-->hadoop fs -cat /hello.txt

-chgrp

-chmod

-chown

上面三個跟linux中的用法同樣

-->hadoop fs -chmod 666 /hello.txt

-copyFromLocal    #從本地文件系統中拷貝文件到hdfs路徑去

-->hadoop fs  -copyFromLocal  ./jdk.tar.gz /aaa/

-copyToLocal      #從hdfs拷貝到本地

Eg: hadoop fs -copyToLocal /aaa/jdk.tar.gz

-count         #統計一個指定目錄下的文件節點數量

-->hadoop fs -count /aaa/

-cp              #從hdfs的一個路徑拷貝hdfs的另外一個路徑

hadoop fs -cp/aaa/jdk.tar.gz /bbb/jdk.tar.gz.2

-createSnapshot

-deleteSnapshot

-renameSnapshot

以上三個用來操做hdfs文件系統目錄信息快照

-->hadoop fs -createSnapshot /

-df               #統計文件系統的可用空間信息

-du

-->hadoop fs -df -h /

-->hadoop fs -du -s -h /aaa/*

-get              #等同於copyToLocal,就是從hdfs下載文件到本地

-getmerge             #合併下載多個文件

--> 好比hdfs的目錄 /aaa/下有多個文件:log.1, log.2,log.3,...

hadoop fs -getmerge /aaa/log.* ./log.sum

-help             #輸出這個命令參數手冊

-ls                  #顯示目錄信息

-->hadoop fs -ls hdfs://hadoop-server01:9000/

這些參數中,全部的hdfs路徑均可以簡寫

-->hadoop fs -ls /   等同於上一條命令的效果

-mkdir              #在hdfs上建立目錄

-->hadoop fs -mkdir -p /aaa/bbb/cc/dd

-moveFromLocal            #從本地剪切粘貼到hdfs

-moveToLocal              #從hdfs剪切粘貼到本地

-mv                     #在hdfs目錄中移動文件

-put                #等同於copyFromLocal

-rm                #刪除文件或文件夾

--> hadoop fs -rm -r/aaa/bbb/

-rmdir                 #刪除空目錄

-setrep                #設置hdfs中文件的副本數量

-->hadoop fs -setrep 3 /aaa/jdk.tar.gz

-stat                  #顯示一個文件或文件夾的元信息

-tail                  #顯示一個文件的末尾

-text                  #以字符形式打印一個文件的內容

【HDFS寫入比讀取複雜】

 

 

相關文章
相關標籤/搜索