發布時間: 2018-01-04 22:07:38
1. HDFS的概念和特性
首先,它是一個文件系統,用于存儲文件,通過統一的命名空間——目錄樹來定位文件
其次,它是分布式的,由很多服務器聯合起來實現其功能,集群中的服務器有各自的角色;
重要特性如下:
(1)HDFS中的文件在物理上是分塊存儲(block),塊的大小可以通過配置參數( dfs.blocksize)來規定,默認大小在hadoop2.x版本中是128M,老版本中是64M
(2)HDFS文件系統會給客戶端提供一個統一的抽象目錄樹,客戶端通過路徑來訪問文件,形如:hdfs://namenode:port/dir-a/dir-b/dir-c/file.data
(3)目錄結構及文件分塊信息(元數據)的管理由namenode節點承擔
——namenode是HDFS集群主節點,負責維護整個hdfs文件系統的目錄樹,以及每一個路徑(文件)所對應的block塊信息(block的id,及所在的datanode服務器)
(4)文件的各個block的存儲管理由datanode節點承擔
---- datanode是HDFS集群從節點,每一個block都可以在多個datanode上存儲多個副本(副本數量也可以通過參數設置dfs.replication)
(5)HDFS是設計成適應一次寫入,多次讀出的場景,且不支持文件的修改
(注:適合用來做數據分析,并不適合用來做網盤應用,因為,不便修改,延遲大,網絡開銷大,成本太高)
2.HDFS的shell(命令行客戶端)操作?
2.1:HDFS命令行客戶端使用
HDFS提供shell命令行客戶端,使用方法如下:
?
2.2:命令行客戶端支持的命令參數?
hadoop fs [-appendToFile <localsrc> ... <dst>]
[-cat [-ignoreCrc] <src> ...]
[-checksum <src> ...]
[-chgrp [-R] GROUP PATH...]
[-chmod [-R] <MODE[,MODE]... | OCTALMODE> PATH...]
[-chown [-R] [OWNER][:[GROUP]] PATH...]
[-copyFromLocal [-f] [-p] <localsrc> ... <dst>]
[-copyToLocal [-p] [-ignoreCrc] [-crc] <src> ... <localdst>]
[-count [-q] <path> ...]
[-cp [-f] [-p] <src> ... <dst>]
[-createSnapshot <snapshotDir> [<snapshotName>]]
[-deleteSnapshot <snapshotDir> <snapshotName>]
[-df [-h] [<path> ...]]
[-du [-s] [-h] <path> ...]
[-expunge]
[-get [-p] [-ignoreCrc] [-crc] <src> ... <localdst>]
[-getfacl [-R] <path>]
[-getmerge [-nl] <src> <localdst>]
[-help [cmd ...]]
[-ls [-d] [-h] [-R] [<path> ...]]
[-mkdir [-p] <path> ...]
[-moveFromLocal <localsrc> ... <dst>]
[-moveToLocal <src> <localdst>]
[-mv <src> ... <dst>]
[-put [-f] [-p] <localsrc> ... <dst>]
[-renameSnapshot <snapshotDir> <oldName> <newName>]
[-rm [-f] [-r|-R] [-skipTrash] <src> ...]
[-rmdir [--ignore-fail-on-non-empty] <dir> ...]
[-setfacl [-R] [{-b|-k} {-m|-x <acl_spec>} <path>]|[--set <acl_spec> <path>]]
[-setrep [-R] [-w] <rep> <path> ...]
[-stat [format] <path> ...]
[-tail [-f] <file>]
[-test -[defsz] <path>]
[-text [-ignoreCrc] <src> ...]
[-touchz <path> ...]
[-usage [cmd ...]]
2.3:
-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
示例:hadoop fs - moveFromLocal /home/hadoop/a.txt /aaa/bbb/cc/dd
-moveToLocal
功能:從hdfs剪切粘貼到本地
示例:hadoop fs - moveToLocal /aaa/bbb/cc/dd /home/hadoop/a.txt --appendToFile
功能:追加一個文件到已經存在的文件末尾
示例:hadoop fs -appendToFile ./hello.txt hdfs://hadoop-server01:9000/hello.txt
可以簡寫為:
Hadoop fs -appendToFile ./hello.txt /hello.txt
-cat
功能:顯示文件內容
示例:hadoop fs -cat /hello.txt
-tail
功能:顯示一個文件的末尾
示例:hadoop fs -tail /weblog/access_log.1
-text
功能:以字符形式打印一個文件的內容
示例:hadoop fs -text /weblog/access_log.1-chgrp
-chmod
-chown
功能:linux文件系統中的用法一樣,對文件所屬權限
示例:
hadoop fs -chmod 666 /hello.txt
hadoop fs -chown someuser:somegrp /hello.txt-copyFromLocal
功能:從本地文件系統中拷貝文件到hdfs路徑去
示例:hadoop fs -copyFromLocal ./jdk.tar.gz /aaa/
-copyToLocal
功能:從hdfs拷貝到本地
示例:hadoop fs -copyToLocal /aaa/jdk.tar.gz-cp
功能:從hdfs的一個路徑拷貝hdfs的另一個路徑
示例: hadoop fs -cp /aaa/jdk.tar.gz /bbb/jdk.tar.gz.2
-mv
功能:在hdfs目錄中移動文件
示例: hadoop fs -mv /aaa/jdk.tar.gz /-get
功能:等同于copyToLocal,就是從hdfs下載文件到本地
示例:hadoop fs -get /aaa/jdk.tar.gz
-getmerge
功能:合并下載多個文件
示例:比如hdfs的目錄 /aaa/下有多個文件:log.1, log.2,log.3,...
hadoop fs -getmerge /aaa/log.* ./log.sum-put
功能:等同于copyFromLocal
示例:hadoop fs -put /aaa/jdk.tar.gz /bbb/jdk.tar.gz.2
-rm
功能:刪除文件或文件夾
示例:hadoop fs -rm -r /aaa/bbb/
-rmdir
功能:刪除空目錄
示例:hadoop fs -rmdir /aaa/bbb/ccc-df
功能:統計文件系統的可用空間信息
示例:hadoop fs -df -h /
-du
功能:統計文件夾的大小信息
示例:
hadoop fs -du -s -h /aaa/*
-count
功能:統計一個指定目錄下的文件節點數量
示例:hadoop fs -count /aaa/
-setrep
功能:設置hdfs中文件的副本數量
示例:hadoop fs -setrep 3 /aaa/jdk.tar.gz
上一篇: {大數據}hdfs的工作機制
下一篇: {大數據}hadoop集群搭建