1. 程式人生 > >hadoop shell命令操作

hadoop shell命令操作

先看我伺服器情況:

shizhan01有 ResourceManager 和 NameNode

shizhan02 03 04裡是我的 NodeManager 和 DataNode

訪問 http://shizhan01:50070


DataNode是存放資料的,hdfs把我的資料都存成兩份(我們在hdfs-site.xml裡配置的是2),如果資料太大

超過128M時,hdfs就會把我的資料給拆開,按偏移量0-128M的存一份,剩下的存一份。

我們來複現一下這個理論。

先看一下hdfs的根目錄有哪些東西,執行

hadoop fs -ls /


可以看到啥都沒有,那我們在shizhan02上上傳一下檔案


我們建立了一個檔案,把他上傳到hdfs根目錄,然後ls可以看到檔案

當然我們看 圖形介面的客戶端,也能看到我們上傳的 bigdata.avi 檔案,看下圖

其實我們把檔案上傳到hdfs,hdfs就會把我們的檔案 重新命名,存到兩個地方;

也就是說我們把現在的bigdata刪除也沒事,因為hdfs已經把檔案存起來了。

那存到了什麼地方呢?


這個是我們之前在core-site.xml 裡配的hadoop.tmp.dir目錄

hdfs把我們的bigdata.avi檔案重新命名成 blk_1073741825(塊_id),放在這個目錄下

/home/hadoop/hdpdata/dfs/data/current/BP-1186906364-192.168.116.128-1531575944333/current/finalized/subdir0/subdir0

那因為是存兩份,我們再去其他伺服器裡找下

shizhan03 裡沒有

shizhan04裡有

那這就驗證了我們上面說的,hdfs把我們的檔案重新命名,存了兩份,分別在兩臺伺服器上。

那我們再來驗證下當檔案超過128M了之後的情況:

我在發現shizhan01伺服器上有個hadoop的安裝包 超過了128M

那我們就把這個安裝包上傳到hdfs裡

圖形介面裡也能看到

因為超過了128M,所以檔案是被hdfs拆分了,我們來找一下

shizhan02上

blk_1073741825是我們之前上傳的bigdata檔案,下面的26 27是我們上傳的hadoop安裝包,因為大於128M,

所以被拆分成兩個檔案

由下圖可知,副本被存在了shizhan03上

那shizhan04上,肯定就不會有啦,看下圖,25是我們之前存的 bigdata檔案

既然hadoop的安裝包上傳到hdfs裡,由於大於128M導致被拆分,那如果我們把拆分的檔案合起來,還能解壓嘛?

我們來試一下,我們把26 和27檔案都追加到一個 tmp.file檔案裡,最後看這個tmp.file檔案能否被解壓

解壓 tmp.file檔案,發現是可以解壓的