Hadoop工作節(jié)點擴展硬盤空間
接到老板任務,Hadoop集群中硬盤空間不夠用,要求加一臺機器到Hadoop集群,并且每臺機器在原有基礎上加一塊2T硬盤,老板給力啊,哈哈。
這些我把完成這項任務的步驟和我遇到的問題和解決方法總結一下,分享給大家。
1.首先,介紹一下用到的基本命令和配置,如果本文的網友時間比較緊,可以直接跳過部分內容,直接看“2.如何加載新硬盤”部分。
(1)命令fdisk
語法:
fdisk [-b sectorsize] device
fdisk -l [-u] [device...]
fdisk -s partition...
fdisk –v
說明:
-b <sectorsize>指定每個分區(qū)的大小。也可以執(zhí)行fdisk device(如:fdisk /dev/sdb)后,在系統(tǒng)提示時指定。
-l列出指定的外圍設備的分區(qū)表狀況。如果僅執(zhí)行fdisk -l,系統(tǒng)會列出已知的分區(qū)。
-u搭配"-l"參數列表,會用分區(qū)數目取代柱面數目,來表示每個分區(qū)的起始地址。
-s <parttion>將指定的分區(qū)的大小輸出到標準輸出上,單位為區(qū)塊。
-v顯示fdisk的版本信息。
(2)命令mkfs
語法:mkfs [-V][-t fstype] [fs-options] filesys
說明:
-V顯示簡要的使用方法。
-t <fstype>指定要建立何種文件系統(tǒng),如:ext3, ext4。
fs指定建立文件系統(tǒng)時的參數。
-v顯示版本信息與詳細的使用方法。
(3)命令mount
語法:
mount [-afFnrsvw] [-t vfstype] [-Llabel] [-o options] device dir
mount [-lhv]
說明:
-a加載文件/etc/fstab中設置的所有設備。
-f不實際加載設備。可與-v等參數同時使用以查看mount的執(zhí)行過程。
-F需與-a參數同時使用。所有在/etc/fstab中設置的設備會被同時加載,可加快執(zhí)行速度。
-t vfstype指定加載的文件系統(tǒng)類型,如:ext3,ext4。
-L label給掛載點指定一個標簽名稱。
-l顯示分區(qū)的label。
-h顯示幫助信息。
-v顯示mount的版本信息。
device要掛載的分區(qū)或文件。如果device是一個文件,掛載時須加上-o loop參數。
dir分區(qū)的掛載點。
(4)fstab配置說明
/etc/fstab中一共有6列:
file system:指定要掛載的文件系統(tǒng)的設備名稱(如:/dev/sdb)。也可以采用UUID,UUID可以通過使用blkid命令來查看(如:blkid /dev/sdb)指定設備的UUID號。
mount point:掛載點。就是自己手動創(chuàng)建一個目錄,然后把分區(qū)掛載到這個目錄下。
type:用來指定文件系統(tǒng)的類型。如:ext3, ext4, ntfs等。
option dump:0表示不備份;1表示要將整個<file system>中的內容備份。此處建議設置為0。
pass:用來指定fsck如何來檢查硬盤。0表示不檢查;掛載點為分區(qū)/(根分區(qū))必須設置為1,其他的掛載點不能設置為1;如果有掛載ass設置成大于1的值,則在檢查完根分區(qū)后,然后按pass的值從小到大依次檢查,相同數值的同時檢查。如:/home 和/boot 的pass設置成2,/devdata的pass設置成3,則系統(tǒng)在檢查完根分區(qū),接著同時檢查/boot和/home,再檢查/devdata。
2.如何加載新硬盤(想詳細了解為什么會這樣操作,請看第三部分“詳解步驟”部分)
(1)通過命令fdisk –lu,顯示“Disk /dev/sdb doesn't contain a valid partition table”說明sdb就是新添加的硬盤,下面主要針對它進行操作。如圖1所示。

圖1
(2)下面對sdb進行分區(qū),命令:fdisk/dev/sdb,如下圖2所示,按提示操作。

圖2
根據提示,輸入n,想新硬盤添加一個分區(qū)。出現Commandaction時,輸入e,指定分區(qū)為擴展分區(qū)(extended)。出現Partition number(1-4)時,輸入1表示只分一個區(qū)。
續(xù)指定起啟柱面(cylinder)號完成分區(qū)。如圖3所示。

圖3
(3)最后輸入p,打印出新硬盤分區(qū)表,圖4所示。

圖4
(4)在Command (m for help)提示符后面輸入w,保存分區(qū)表。系統(tǒng)提示:Thepartition table has been altered!如圖5所示。

圖5
(5)此時,用命令fdisk –lu分區(qū)情況,如圖6所示

圖6
(6)對新分區(qū)進行格式化:sudo mkfs -t ext4 /dev/sdb,(推薦ext4,時間比較快,具體了解看第三部分“詳細步驟”)如圖7所示。

圖7
(7)掛載硬盤sudo mount -t ext4 /dev/sdb /devdata(這里devdata是自己制定的目錄,你可以指定任意目錄,我加載的目錄是dfs.data.dir指定的目錄),到此時已經完成了所有步驟,下面就是修補。此時就可以用命令sudo df –h查看了,如圖8所示。

圖8
(8)如果想每次手動加載,使用命令mount –a。如果想讓系統(tǒng)自動加載,需要配置/etc/fstab,如下圖9所示。

圖9
到此加載過程完成。
如果是Hadoop集群,此時需要將每個工作節(jié)點dfs.data.dir目錄重新修改權限,使用命令:chown –R dm:dm/usr/local/hadoop/data/(這是dfs.data.dir指向的目錄),然后將namenode格式化即可,這里筆者就是忘了更改dfs.data.dir指向目錄的權限,導致datanode啟動不起來,汗啊。
3.詳解步驟
(1)對于2中(1)的名稱sdb,其實linux對設備的命名有它自己的一套規(guī)則,根據接口類型來區(qū)分存儲設備,按存儲設備占用的系統(tǒng)接口編號為其分配標識符。對于IDE存儲設備(并口設備)標識符為hd,按設備使用接口的不同,分別命名為had,hdb,hdc等;對于SCSI接口,SATA接口設備(串口)和串行總線接口使用sd作為標識,仍按照使用接口編號不同,以sda,sdb等為其命名。
(2)對2中的(2)分區(qū)。在使用硬盤存儲數據時,還需要對硬盤進行分區(qū),按分區(qū)的使用方法可以將硬盤分區(qū)分為3種:主分區(qū)、擴展分區(qū)和邏輯分區(qū)。其中主分區(qū)是最基本的分區(qū)類型,它可以直接掛載并存儲數據,一個硬盤最多只能有4個主分區(qū)。Linux系統(tǒng)中對這4個主分區(qū)使用1、2、3、4作為標識符。例如硬盤sda上的第1個主分區(qū)的標識為sda1,同理其他三個標識分別為sda2,sda3, sda4;擴展分區(qū)是一種特殊的主分區(qū),如果要使用擴展分區(qū)存儲數據,必須先將擴展分區(qū)劃分為邏輯分區(qū)(即邏輯分區(qū)加你在擴展分區(qū)基礎之上),如果要在一個硬盤上創(chuàng)建4個以上的分區(qū),就必須使用擴展分區(qū)。由于擴展分區(qū)也是一種主分區(qū),因此擴展分區(qū)也占用一個主分區(qū)號;在擴展分區(qū)分區(qū)基礎之上,可以創(chuàng)建多個邏輯分區(qū),邏輯分區(qū)可以直接掛載并存儲數據。邏輯分區(qū)的標識數字從5開始,例如sda5,sda6。Linux系統(tǒng)中的硬盤分區(qū)使用以上標識符命名并保存在/dev中,要使用分區(qū)存儲數據時,需要將對應的塊設備文件掛載到一個目錄下。掛載設備的過程可以描述成:為用戶使用該分區(qū)存放和讀取數據提供一個接口和途徑。這里為什么創(chuàng)建擴展分區(qū),而不是創(chuàng)建主分區(qū),筆者的理由是主分區(qū)包含啟動的一些附加信息,而這些信息是用來引導系統(tǒng)啟動的,這里的磁盤只是為了擴充原有磁盤的容量來存儲數據,如果擴展分區(qū)直接分成邏輯分區(qū),不需要這些附加信息,從而可以更加充分地利用新硬盤的空間,這個解釋不保證正確,如果有誤,請智者指正。
(3)2中(6)提到了文件系統(tǒng)ext4,可以參考http://baike.baidu.com/view/266589.htm#7
(4)2中(8)的fstab設置可參考http://baike.baidu.com/view/5499388.htm。
引用網址:http://aofengblog.blog.163.com/blog/static/6317021201101502540117/
新聞熱點
疑難解答