導航:首頁 > 程序命令 > hdfs基本命令

hdfs基本命令

發布時間:2023-06-17 18:13:32

㈠ 在hadoop中什麼命令的功能是將一個或多個

1、啟動hadoop所有進程
start-all.sh等價於start-dfs.sh + start-yarn.sh

但是一般不推薦使用start-all.sh(因為開源框架中內部命令啟動有很多問題)。

2、單進程啟動。

sbin/start-dfs.sh

---------------

sbin/hadoop-daemons.sh --config .. --hostname .. start namenode ...
sbin/hadoop-daemons.sh --config .. --hostname .. start datanode ...
sbin/hadoop-daemons.sh --config .. --hostname .. start sescondarynamenode ...
sbin/hadoop-daemons.sh --config .. --hostname .. start zkfc ... //

sbin/start-yarn.sh
--------------
libexec/yarn-config.sh
sbin/yarn-daemon.sh --config $YARN_CONF_DIR start resourcemanager
sbin/yarn-daemons.sh --config $YARN_CONF_DIR start nodemanager

3、常用命令

1、查看指定目錄下內容

hdfs dfs –ls [文件目錄]

hdfs dfs -ls -R / //顯式目錄結構

eg: hdfs dfs –ls /user/wangkai.pt

2、打開某個已存在文件

hdfs dfs –cat [file_path]

eg:hdfs dfs -cat /user/wangkai.pt/data.txt

3、將本地文件存儲至hadoop

hdfs dfs –put [本地地址] [hadoop目錄]

hdfs dfs –put /home/t/file.txt /user/t

4、將本地文件夾存儲至hadoop

hdfs dfs –put [本地目錄] [hadoop目錄]
hdfs dfs –put /home/t/dir_name /user/t

(dir_name是文件夾名)

5、將hadoop上某個文件down至本地已有目錄下

hadoop dfs -get [文件目錄] [本地目錄]

hadoop dfs –get /user/t/ok.txt /home/t

6、刪除hadoop上指定文件

hdfs dfs –rm [文件地址]

hdfs dfs –rm /user/t/ok.txt

7、刪除hadoop上指定文件夾(包含子目錄等)

hdfs dfs –rm [目錄地址]

hdfs dfs –rmr /user/t

8、在hadoop指定目錄內創建新目錄

hdfs dfs –mkdir /user/t

hdfs dfs -mkdir - p /user/centos/hadoop

9、在hadoop指定目錄下新建一個空文件

使用touchz命令:

hdfs dfs -touchz /user/new.txt

10、將hadoop上某個文件重命名

使用mv命令:

hdfs dfs –mv /user/test.txt /user/ok.txt (將test.txt重命名為ok.txt)

11、將hadoop指定目錄下所有內容保存為一個文件,同時down至本地

hdfs dfs –getmerge /user /home/t

12、將正在運行的hadoop作業kill掉

hadoop job –kill [job-id]

13.查看幫助

hdfs dfs -help

4、安全模式

(1)退出安全模式

NameNode在啟動時會自動進入安全模式。安全模式是NameNode的一種狀態,在這個階段,文件系統不允許有任何修改。

系統顯示Name node in safe mode,說明系統正處於安全模式,這時只需要等待十幾秒即可,也可通過下面的命令退出安全模式:/usr/local/hadoop$bin/hadoop dfsadmin -safemode leave

(2) 進入安全模式
在必要情況下,可以通過以下命令把HDFS置於安全模式:/usr/local/hadoop$bin/hadoop dfsadmin -safemode enter

5、節點添加

添加一個新的DataNode節點,先在新加節點上安裝好Hadoop,要和NameNode使用相同的配置(可以直接從NameNode復制),修改HADOOPHOME/conf/master文件,加入NameNode主機名。然後在NameNode節點上修改HADOOPHOME/conf/master文件,加入NameNode主機名。然後在NameNode節點上修改HADOOP_HOME/conf/slaves文件,加入新節點名,再建立新加節點無密碼的SSH連接,運行啟動命令為:/usr/local/hadoop$bin/start-all.sh

6、負載均衡

HDFS的數據在各個DataNode中的分布可能很不均勻,尤其是在DataNode節點出現故障或新增DataNode節點時。新增數據塊時NameNode對DataNode節點的選擇策略也有可能導致數據塊分布不均勻。用戶可以使用命令重新平衡DataNode上的數據塊的分布:/usr/local/hadoop$bin/start-balancer.sh

7、補充

1.對hdfs操作的命令格式是hdfs dfs
1.1 -ls 表示對hdfs下一級目錄的查看
1.2 -lsr 表示對hdfs目錄的遞歸查看
1.3 -mkdir 創建目錄
1.4 -put 從linux上傳文件到hdfs
1.5 -get 從hdfs下載文件到linux
1.6 -text 查看文件內容
1.7 -rm 表示刪除文件
1.7 -rmr 表示遞歸刪除文件
2.hdfs在對數據存儲進行block劃分時,如果文件大小超過block,那麼按照block大小進行劃分;不如block size的,劃分為一個塊,是實際數據大小。
*****PermissionDenyException 許可權不足**********
hadoop常用命令:
hdfs dfs 查看Hadoop HDFS支持的所有命令
hdfs dfs –ls 列出目錄及文件信息
hdfs dfs –lsr 循環列出目錄、子目錄及文件信息
hdfs dfs –put test.txt /user/sunlightcs 將本地文件系統的test.txt復制到HDFS文件系統的/user/sunlightcs目錄下
hdfs dfs –get /user/sunlightcs/test.txt . 將HDFS中的test.txt復制到本地文件系統中,與-put命令相反
hdfs dfs –cat /user/sunlightcs/test.txt 查看HDFS文件系統里test.txt的內容
hdfs dfs –tail /user/sunlightcs/test.txt 查看最後1KB的內容
hdfs dfs –rm /user/sunlightcs/test.txt 從HDFS文件系統刪除test.txt文件,rm命令也可以刪除空目錄
hdfs dfs –rmr /user/sunlightcs 刪除/user/sunlightcs目錄以及所有子目錄
hdfs dfs –FromLocal test.txt /user/sunlightcs/test.txt 從本地文件系統復制文件到HDFS文件系統,等同於put命令
hdfs dfs –ToLocal /user/sunlightcs/test.txt test.txt 從HDFS文件系統復制文件到本地文件系統,等同於get命令
hdfs dfs –chgrp [-R] /user/sunlightcs 修改HDFS系統中/user/sunlightcs目錄所屬群組,選項-R遞歸執行,跟linux命令一樣
hdfs dfs –chown [-R] /user/sunlightcs 修改HDFS系統中/user/sunlightcs目錄擁有者,選項-R遞歸執行
hdfs dfs –chmod [-R] MODE /user/sunlightcs 修改HDFS系統中/user/sunlightcs目錄許可權,MODE可以為相應許可權的3位數或+/-{rwx},選項-R遞歸執行
hdfs dfs –count [-q] PATH 查看PATH目錄下,子目錄數、文件數、文件大小、文件名/目錄名
hdfs dfs –cp SRC [SRC …] DST 將文件從SRC復制到DST,如果指定了多個SRC,則DST必須為一個目錄
hdfs dfs – PATH 顯示該目錄中每個文件或目錄的大小
hdfs dfs –s PATH 類似於,PATH為目錄時,會顯示該目錄的總大小
hdfs dfs –expunge 清空回收站,文件被刪除時,它首先會移到臨時目錄.Trash/中,當超過延遲時間之後,文件才會被永久刪除
hdfs dfs –getmerge SRC [SRC …] LOCALDST [addnl] 獲取由SRC指定的所有文件,將它們合並為單個文件,並寫入本地文件系統中的LOCALDST,選項addnl將在每個文件的末尾處加上一個換行符
hdfs dfs –touchz PATH 創建長度為0的空文件
hdfs dfs –test –[ezd] PATH 對PATH進行如下類型的檢查: -e PATH是否存在,如果PATH存在,返回0,否則返回1 -z 文件是否為空,如果長度為0,返回0,否則返回1 -d 是否為目錄,如果PATH為目錄,返回0,否則返回1
hdfs dfs –text PATH 顯示文件的內容,當文件為文本文件時,等同於cat,文件為壓縮格式(gzip以及hadoop的二進制序列文件格式)時,會先解壓縮 hdfs dfs –help ls 查看某個[ls]命令的幫助文檔

本文轉自 https://www.cnblogs.com/LHWorldBlog/p/8514994.html

㈡ hdfs命令查找文件所在路徑

指令
hadoop fsck /user/hadoop/filename -files -blocks -locations -racks
-files 文件分塊信息,
-blocks 在帶-files參數後才顯示block信息
-locations 在帶-blocks參數後才顯示block塊所在datanode的具體IP位置,

-racks 在帶-files參數後顯示機架位置
注意:此命令只能在namenode里輸入,在datanode里輸入會報錯的

㈢ spark、hive、impala、hdfs的常用命令

對spark、hive、impala、hdfs的常用命令作了如下總結,歡迎大家補充!

1. Spark的使用:

以通過SecureCRT訪問IP地址:10.10.234.198 為例進行說明:

先輸入:ll //查詢集群是否裝有spark

>su - mr

>/home/mr/spark/bin/beeline -u "jdbc:hive2:/bigdata198:18000/" -n mr -p ""

>show databases; //顯示其中資料庫,例如

>use bigmax; //使用資料庫bigmax

>show tables; //查詢目錄中所有的表

>desc formatted TableName; //顯示表的詳細信息,包括分區、欄位、地址等信息

>desc TableName; //顯示表中的欄位和分區信息

>select count(*) from TableName; //顯示表中數據數量,可以用來判斷表是否為空

>drop table TableName; //刪除表的信息

>drop bigmax //刪除資料庫bigmax

>describe database zxvmax //查詢資料庫zxvmax信息

創建一個表

第一步:

>create external table if not exists lte_Amaze //創建一個叫lte_Amaze的表

( //括弧中每一行為表中的各個欄位的名稱和其所屬的數據類型,並用空格隔開

DateTime String,

MilliSec int,

Network int,

eNodeBID int,

CID int,

IMSI String,

DataType int,

AoA int,

ServerRsrp int,

ServerRsrq int,

TA int,

Cqi0 Tinyint,

Cqi1 Tinyint //注意,最後一個欄位結束後,沒有逗號

)

partitioned by (p_date string, p_hour INT) //以p_date和p_hour作為分區

row format delimited fields terminated by ',' /*/*表中行結構是以逗號作為分隔符,與上邊的表中欄位以逗號結尾相一致*/

stored as textfile; //以文本格式進行保存

第二步:添加分區,指定分區的位置

>alter table lte_Amaze add partition (p_date='2015-01-27',p_hour=0) location'/lte/nds/mr/lte_nds_cdt_uedetail/p_date=2015-01-27/p_hour=0';

//添加lte_Amaze表中分區信息,進行賦值。

//並制定分區對應目錄/lte/nds/mr下表lte_nds_cdt_uedetail中對應分區信息

第三步:察看添加的結果

>show partitions lte_Amaze; //顯示表的分區信息

2. hdfs使用:

#su - hdfs //切換到hdfs用戶下 、

#hadoop fs –ls ///查看進程
# cd /hdfs/bin //進入hdfs安裝bin目錄
>hadoop fs -ls /umtsd/cdt/ //查詢/umtsd/cdt/文件目錄
>hadoop fs -mkdir /umtsd/test //在/umtsd目錄下創建test目錄
>hadoop fs -put /home/data/u1002.csv /impala/data/u5002 //將home/data/u1002.csv這個文件put到hdfs文件目錄上。put到hdfs上的數據文件以逗號「,」分隔符文件(csv),數據不論類型,直接是數據,沒有雙引號和單引號
>hadoop fs -rm /umtsd/test/test.txt //刪除umtsd/test目錄下的test.txt文件
>hadoop fs -cat /umtsd/test/test.txt //查看umtsd/test目錄下的test.txt文件內容

3hive操作使用:
#su - mr //切換到mr用戶下
#hive //進入hive查詢操作界面
hive>show tables; //查詢當前創建的所有表
hive>show databases; //查詢當前創建的資料庫
hive>describe table_name; {或者desc table_name}//查看錶的欄位的定義和分區信息,有明確區分(impala下該命令把分區信息以欄位的形式顯示出來,不怎麼好區分)
hive> show partitions table_name; //查看錶對應數據現有的分區信息,impala下沒有該命令
hive> quit;//退出hive操作界面

hive>desc formatted table_name; 查看錶結構,分隔符等信息

hive> alter table ceshi change id id int; 修改表的列數據類型 //將id數據類型修改為int 注意是兩個id

hive> SHOW TABLES '.*s'; 按正條件(正則表達式)顯示表,

[mr@aico ~]$ exit; 退出mr用戶操作界面,到[root@aico]界面

impala操作使用:
#su - mr //切換到mr用戶下
#cd impala/bin //進入impala安裝bin目錄
#/impala/bin> impala-shell.sh -i 10.10.234.166/localhost //進入impala查詢操作界面
[10.10.234.166:21000] >show databases; //查詢當前創建的資料庫
[10.10.234.166:21000] >use database_name; //選擇使用資料庫,默認情況下是使用default資料庫
[10.10.234.166:21000] > show tables; //查詢當前資料庫下創建的所有表
[10.10.234.166:21000] >describe table_name; //查看錶的欄位的定義,包括分區信息,沒有明確區分
[10.10.234.166:21000] > describe formatted table_name; //查看錶對應格式化信息,包括分區,所屬資料庫,創建用戶,創建時間等詳細信息。
[10.10.234.166:21000] >refresh table_name; //刷新一下,保證元數據是最新的
[10.10.234.166:21000] > alter TABLE U107 ADD PARTITION(reportDate="2013-09-27",rncid=487)LOCATION '/umts/cdt/
MREMITABLE/20130927/rncid=487' //添加分區信息,具體的表和數據的對應關系
[10.10.234.166:21000] > alter TABLE U100 drop PARTITION(reportDate="2013-09-25",rncid=487); //刪除現有的分區,數據與表的關聯
[10.10.234.166:21000] >quit; //退出impala操作界面

[mr@aicod bin]$ impala-shell; 得到welcome impala的信息,進入impala 查詢操作界面

[aicod:21000] > 按兩次tab鍵,查看可以用的命令

alter describe help profile shell values

connect drop history quit show version

create exit insert select unset with

desc explain load set use

㈣ 怎麼用命令行刪除hdfs上的文件

命令:hadoop fs -rmr /home/mm/lily2(要求是你把hadoop的bin加到PATH中,並開啟hadoop)

rm -rf /home/mm/lily2(這是刪除linux文件系統的文件夾)。
刪除目錄
rd /s /q "c:\hello"
rem 加引號可以防止因路徑中有空格而出錯
rem 上面的代碼意為:刪除c:\hello目錄下所有的內容(包括"c:\hello")
刪除文件
del /f /q /s "c:\hello\*.*"
rem 刪除c;\hello文件夾下所有的文件,包括子文件夾的內容,(不包括子文件夾,也不包括c:\hello文件夾)
rem 文件夾=目錄

㈤ HDFS和本地文件系統文件互導

初步了解一下情況,後續根據給出案例

一、從本地文件系統到HDFS

使用hdfs自帶的命令

命令:hdfs dfs -FromLocal inputPath outputPath

inputPath:本地文件目錄的路徑

outputPath:hdfs文件目錄路徑,即存儲路徑

二、從HDFS到本地文件系統

命令:hdfs dfs -ToLocal inputPath outputPath

inputPath:hdfs文件目錄

outputPath:本地文件文件目錄,即本地存儲路徑

因為Hbas和Hive都在存儲在HDFS中,所以可以通過該條命令可以把Hbase和Hive存儲在HDFS中的文件復制出來。但是經過實踐,通過這種方式復制出來的Hbase文件是亂碼。Hive里的文件有時候也會亂碼,這取決於Hive數據的插入方式。

三、文件在HDFS內的移動

1、從Hbase表導出數據到HDFS

命令:hbase org.apache.hadoop.hbase.maprece.Export tableName outputPaht

例子:hbase org.apache.hadoop.hbase.maprece.Export test /user/data

test為需要從Hbase中導出的表,/user/data為hdfs上的路徑,即存儲路徑,如果最後一個參數有前綴file:// 則為本地上的文件存儲系統

2、從HDFS導入到Hbase表中,需要事先建立好表結構

命令:hbase org.apache.hadoop.hbase.maprece.Export tableName inputPaht

例子:hbase org.apache.hadoop.hbase.maprece.Import test1 /temp/part-m-00000

案列:

兩個不同環境數據,數據導入

過程描述:

            導出正式環境數據到hdfs中,然後從hdfs中導出到本地,本地傳到測試環境主機,然後從本地導入到hdfs中,再從hdfs中導入到hbase中。

處理過程:

1、注意事項:1、許可權問題使用hdfs:sudo -u hdfs ;

                      2、存放上傳路徑最好不要在root下

                      3、上傳完成後,查看是否在使用,數據已經插入。

1、sudo -u hdfs hbase org.apache.hadoop.hbase.maprece.Export ** /hbase/**_bak  (導出到hdfs中的**_bak)

2、hdfs dfs -ToLocal /hbase/sw_bak /test  (導出hdfs中文件到本地test,註:提前建好目錄)

3、scp -r test_bak [email protected].**:/root/test  (傳送目錄到測試環境主機目錄下,註:傳到測試環境後,把文件不要放到root的目錄下,換家目錄下)

4、sudo -u hdfs hdfs dfs -FromLocal /chenzeng/text_bak /data (把sw傳到hdfs 中,注意上傳時,文件路徑要對,放在data路徑下比較好)

5、sudo -u hdfs hbase org.apache.hadoop.hbase.maprece.Import test /data/test_bak/part-m-0000 (注意上次文件)

6、在hbase shell 中查看test :count 'test' 確認是否上傳成功

優化:

truncate 『』

正式環境導入至hdfs中時,

可以直接在另一個環境的執行sudo -u hdfs hbase org.apache.hadoop.hbase.maprece.Import test hdfs://server243:8020/hbase****  可以直接加主機和對應路徑進行put。

㈥ NoSQL-HDFS-基本概念

Hadoop

文件系統:文件系統是用來存儲和管理文件,並且提供文件的查詢、增加、刪除等操作。
直觀上的體驗:在shell窗口輸入 ls 命令,就可以看到當前目錄下的文件夾、文件。

文件存儲在哪裡?硬碟
一台只有250G硬碟的電腦,如果需要存儲500G的文件可以怎麼辦?先將電腦硬碟擴容至少250G,再將文件分割成多塊,放到多塊硬碟上儲存。

通過 hdfs dfs -ls 命令可以查看分布式文件系統中的文件,就像本地的ls命令一樣。

HDFS在客戶端上提供了查詢、新增和刪除的指令,可以實現將分布在多台機器上的文件系統進行統一的管理。

在分布式文件系統中,一個大文件會被切分成塊,分別存儲到幾台機器上。結合上文中提到的那個存儲500G大文件的那個例子,這500G的文件會按照一定的大小被切分成若干塊,然後分別存儲在若乾颱機器上,然後提供統一的操作介面。

看到這里,不少人可能會覺得,分布式文件系統不過如此,很簡單嘛。事實真的是這樣的么?

潛在問題

假如我有一個1000台機器組成的分布式系統,一台機器每天出現故障的概率是0.1%,那麼整個系統每天出現故障的概率是多大呢?答案是(1-0.1%)^1000=63%,因此需要提供一個容錯機制來保證發生差錯時文件依然可以讀出,這里暫時先不展開介紹。

如果要存儲PB級或者EB級的數據,成千上萬台機器組成的集群是很常見的,所以說分布式系統比單機系統要復雜得多呀。

這是一張HDFS的架構簡圖:

client通過nameNode了解數據在哪些DataNode上,從而發起查詢。此外,不僅是查詢文件,寫入文件的時候也是先去請教NameNode,看看應該往哪個DateNode中去寫。

為了某一份數據只寫入到一個Datanode中,而這個Datanode因為某些原因出錯無法讀取的問題,需要通過冗餘備份的方式來進行容錯處理。因此,HDFS在寫入一個數據塊的時候,不會僅僅寫入一個DataNode,而是會寫入到多個DataNode中,這樣,如果其中一個DataNode壞了,還可以從其餘的DataNode中拿到數據,保證了數據不丟失。

實際上,每個數據塊在HDFS上都會保存多份,保存在不同的DataNode上。這種是犧牲一定存儲空間換取可靠性的做法。

接下來我們來看一下完整的文件寫入的流程:

大文件要寫入HDFS,client端根據配置將大文件分成固定大小的塊,然後再上傳到HDFS。

讀取文件的流程:

1、client詢問NameNode,我要讀取某個路徑下的文件,麻煩告訴我這個文件都在哪些DataNode上?
2、NameNode回復client,這個路徑下的文件被切成了3塊,分別在DataNode1、DataNode3和DataNode4上
3、client去找DataNode1、DataNode3和DataNode4,拿到3個文件塊,通過stream讀取並且整合起來

文件寫入的流程:
1、client先將文件分塊,然後詢問NameNode,我要寫入一個文件到某個路徑下,文件有3塊,應該怎麼寫?
2、NameNode回復client,可以分別寫到DataNode1、DataNode2、DataNode3、DataNode4上,記住,每個塊重復寫3份,總共是9份
3、client找到DataNode1、DataNode2、DataNode3、DataNode4,把數據寫到他們上面

出於容錯的考慮,每個數據塊有3個備份,但是3個備份快都直接由client端直接寫入勢必會帶來client端過重的寫入壓力,這個點是否有更好的解決方案呢?回憶一下mysql主備之間是通過binlog文件進行同步的,HDFS當然也可以借鑒這個思想,數據其實只需要寫入到一個datanode上,然後由datanode之間相互進行備份同步,減少了client端的寫入壓力,那麼至於是一個datanode寫入成功即成功,還是需要所有的參與備份的datanode返回寫入成功才算成功,是可靠性配置的策略,當然這個設置會影響到數據寫入的吞吐率,我們可以看到可靠性和效率永遠是「魚和熊掌不可兼得」的。

潛在問題

NameNode確實會回放editlog,但是不是每次都從頭回放,它會先載入一個fsimage,這個文件是之前某一個時刻整個NameNode的文件元數據的內存快照,然後再在這個基礎上回放editlog,完成後,會清空editlog,再把當前文件元數據的內存狀態寫入fsimage,方便下一次載入。

這樣,全量回放就變成了增量回放,但是如果NameNode長時間未重啟過,editlog依然會比較大,恢復的時間依然比較長,這個問題怎麼解呢?

SecondNameNode是一個NameNode內的定時任務線程,它會定期地將editlog寫入fsimage,然後情況原來的editlog,從而保證editlog的文件大小維持在一定大小。

NameNode掛了, SecondNameNode並不能替代NameNode,所以如果集群中只有一個NameNode,它掛了,整個系統就掛了。hadoop2.x之前,整個集群只能有一個NameNode,是有可能發生單點故障的,所以hadoop1.x有本身的不穩定性。但是hadoop2.x之後,我們可以在集群中配置多個NameNode,就不會有這個問題了,但是配置多個NameNode,需要注意的地方就更多了,系統就更加復雜了。

俗話說「一山不容二虎」,兩個NameNode只能有一個是活躍狀態active,另一個是備份狀態standby,我們看一下兩個NameNode的架構圖。

兩個NameNode通過JournalNode實現同步editlog,保持狀態一致可以相互替換。

因為active的NameNode掛了之後,standby的NameNode要馬上接替它,所以它們的數據要時刻保持一致,在寫入數據的時候,兩個NameNode內存中都要記錄數據的元信息,並保持一致。這個JournalNode就是用來在兩個NameNode中同步數據的,並且standby NameNode實現了SecondNameNode的功能。

進行數據同步操作的過程如下:
active NameNode有操作之後,它的editlog會被記錄到JournalNode中,standby NameNode會從JournalNode中讀取到變化並進行同步,同時standby NameNode會監聽記錄的變化。這樣做的話就是實時同步了,並且standby NameNode就實現了SecondNameNode的功能。

優點:

缺點:

㈦ HDFS筆記

1.Hadoop 分布式 文件系統。特點:性能高、效率高、速度快
2.可以在廉價的機器上運行的 可容錯 文件系統。
當集群中有機器掛掉時,HDFS會自動將掛掉的機器上的任務分配給正常的機器,使任務繼續保持正常工作。

2.HDFS處理更加容易。當對一個大型文件進行寫操作時,如果將該文件整個寫入一個節點,那麼該節點的負載便會急劇增加,這樣就喪失了分布式文件系統的意義。所以,應該利用HDFS將文件拆分成不同的塊,然後將不同的塊分配到不同的節點上去,此時,DFS就需要管理者確定文件如何進行拆分,以及每一個塊應該分配到哪一個節點。對文件進行操作時,在單機情況下,首先需要知道文件被拆分成多少塊,每一個塊被放在了哪一個節點上,以及塊之間的順序(文件的粘連)。而HDFS的出現,使得分布式文件集群不再需要人進行管理,利用HDFS讀取文件時,我們不需要關心文件如何拆分,分配,粘連。只用告訴HDFS文件的路徑即可。

HDFS的指令類似於linux下的指令。
查看文件:hdfs dfs -ls /查詢的文件目錄
刪除文件:hdfs dfs -rm r /刪除的文件
創建文件夾:hdfs dfs -mkdir /文件夾名稱
上傳文件至HDFS:hdfs dfs -put 需要上傳的文件 /上傳的文件路徑

為什麼需要學習HDFS結構?
1.面試中,能夠運用於所有分布式文件系統設計。
既然分布式系統下是多節點運行,那麼節點之間是否通信?slave節點只接受來自master節點的命令,向master節點發送心跳指令,slave節點之間不會主動通信。
a.Master slaver 模式:
1.High consistency:一致性。當文件中的一個數據塊寫入slave節點時,當且僅當數據塊被成功寫入到所有備份的slave節點,slave節點向client反饋寫入操作成功,否則,重傳寫入;
2.Simple design:易設計:不需要考慮子節點如何通信。只需要考慮主節點的工作;
3.單master節點不具有魯棒性。
b.Peer peer 模式:
1.所有的讀寫操作均勻分布在每一個節點上,每一個節點的負載不會很高;
2.任意一個節點掛掉不會影響其他節點;
3.低一致性。沒有數據的復制步驟。
2.更好的理解hadoop生態系統

a.master節點會傳輸數據嗎?
不會,master節點只接收client的請求,決定哪一個slave節點進行讀寫操作,然後,client直接與slave節點進行通信。如果數據從master節點傳輸,那麼master節點就會成為影響數據傳輸的瓶頸。
b.slave節點如何存儲數據?
整個大文件?小的文件塊?。HDFS借鑒GFS的設計理念,以block為傳輸單位,將大文件拆分成一個一個小文件,而一個小文件就是block。block的大小可以由Configuration定義,默認大小是128M。
c.誰來決定將文件拆分成塊?
master?slave?。兩者都不是,由HDFS client決定將大文件拆分成block(塊)。HDFS的目的是將所有的節點包裝起來,可以理解成將所有的節點放在一個黑箱里,我們不需要知道黑箱里到底發生了什麼,只需要告訴黑箱需要做什麼工作,這里的HDFS client相當於HDFS與user通信的中間媒介。HDFS client相當於一個軟體包(api),可以存放在master或者slave或者額外的一個新節點上。

寫入in memory失敗(ACK出現問題)時,master會重新選擇3個新的slave節點。

㈧ HDFS中根目錄下創建user文件夾的命令為

HDFS中根目錄下創建user文件夾的命令為hadoop dfs-mkdir。在hdfs中創建一個input文件夾:hadoopfs-mkdir/input/1、使用參數-p創建多級目錄:hadoopfs-mkdir-p/input/file1。拷貝input目錄到hdfs系統的時候,不是採用的hadoop用戶,而是用root用戶執行的拷貝命令。

hdfs的特點和目標:

1、硬體故障

硬體故障是常態,而不是異常。整個HDFS系統將由數百或數千個存儲著文件數據片段的伺服器組成。實際上它裡面有非常巨大的組成部分,每一個組成部分都很可能出現故障,這就意味著HDFS里的總是有一些部件是失效的,因此,故障的檢測和自動快速恢復是HDFS一個很核心的設計目標。

2、數據訪問

運行在HDFS之上的應用程序必須流式地訪問它們的數據集,它不是運行在普通文件系統之上的普通程序。HDFS被設計成適合批量處理的,而不是用戶互動式的。重點是在數據吞吐量,而不是數據訪問的反應時間,POSIX的很多硬性需求對於HDFS應用都是非必須的,去掉POSIX一小部分關鍵語義可以獲得更好的數據吞吐率。

3、大數據集

運行在HDFS之上的程序有很大量的數據集。典型的HDFS文件大小是GB到TB的級別。所以,HDFS被調整成支持大文件。它應該提供很高的聚合數據帶寬,一個集群中支持數百個節點,一個集群中還應該支持千萬級別的文件。

以上內容參考:網路-hdfs

閱讀全文

與hdfs基本命令相關的資料

熱點內容
反編譯作業幫 瀏覽:856
釘釘打卡伺服器過什麼意思 瀏覽:139
鏤空加密隔斷牆效果圖 瀏覽:539
windows7怎麼安裝證書伺服器 瀏覽:952
證券業務的程序員 瀏覽:202
u點伺服器wifi密碼如何設置 瀏覽:864
寶馬x5大燈編程 瀏覽:673
python安裝和使用 瀏覽:381
加密的門禁卡復制了用不了 瀏覽:714
javacsv讀寫 瀏覽:806
ug編程教程pdf 瀏覽:763
latex編譯軟體安卓版 瀏覽:248
如何在信合app上交居民醫保 瀏覽:109
丑惡pdf 瀏覽:365
陝西定頻壓縮機銷售公司 瀏覽:795
安卓系統如何幫人打王者 瀏覽:427
sbtlinux安裝 瀏覽:141
阿里雲sip伺服器 瀏覽:73
身為程序員的你怎麼拚命 瀏覽:453
android圖片手勢放大 瀏覽:587