Hadoop集群中添加硬盘
Hadoop工作節(jié)點(diǎn)擴(kuò)展硬盤空間
接到老板任務(wù),Hadoop集群中硬盤空間不夠用,要求加一臺(tái)機(jī)器到Hadoop集群,并且每臺(tái)機(jī)器在原有基礎(chǔ)上加一塊2T硬盤,老板給力啊,哈哈。
這些我把完成這項(xiàng)任務(wù)的步驟和我遇到的問題和解決方法總結(jié)一下,分享給大家。
1.????首先,介紹一下用到的基本命令和配置,如果本文的網(wǎng)友時(shí)間比較緊,可以直接跳過部分內(nèi)容,直接看“2.???如何加載新硬盤”部分。
(1)命令fdisk
語法:
fdisk [-b sectorsize] device????
fdisk -l [-u] [device...]
fdisk -s partition...
fdisk –v
說明:
-b <sectorsize>???指定每個(gè)分區(qū)的大小。也可以執(zhí)行fdisk device(如:fdisk /dev/sdb)后,在系統(tǒng)提示時(shí)指定。
-l???列出指定的外圍設(shè)備的分區(qū)表狀況。如果僅執(zhí)行?fdisk -l,系統(tǒng)會(huì)列出已知的分區(qū)。
-u???搭配"-l"參數(shù)列表,會(huì)用分區(qū)數(shù)目取代柱面數(shù)目,來表示每個(gè)分區(qū)的起始地址。
-s <parttion>???????將指定的分區(qū)的大小輸出到標(biāo)準(zhǔn)輸出上,單位為區(qū)塊。
-v???顯示fdisk的版本信息。
(2)命令mkfs
語法:mkfs [-V][-t fstype] [fs-options] filesys
說明:
-V???顯示簡(jiǎn)要的使用方法。
-t <fstype>???指定要建立何種文件系統(tǒng),如:ext3, ext4。
fs???指定建立文件系統(tǒng)時(shí)的參數(shù)。
-v???顯示版本信息與詳細(xì)的使用方法。
(3)命令mount
語法:
mount [-afFnrsvw] [-t vfstype] [-Llabel]? [-o options] device dir
mount [-lhv]
說明:
-a???加載文件/etc/fstab中設(shè)置的所有設(shè)備。
-f????不實(shí)際加載設(shè)備。可與-v等參數(shù)同時(shí)使用以查看mount的執(zhí)行過程。
-F???需與-a參數(shù)同時(shí)使用。所有在/etc/fstab中設(shè)置的設(shè)備會(huì)被同時(shí)加載,可加快執(zhí)行速度。
-t vfstype??指定加載的文件系統(tǒng)類型,如:ext3,ext4。
-L label??????給掛載點(diǎn)指定一個(gè)標(biāo)簽名稱。
-l????顯示分區(qū)的label。
-h???顯示幫助信息。
-v???顯示mount的版本信息。
device?要掛載的分區(qū)或文件。如果device是一個(gè)文件,掛載時(shí)須加上-o loop參數(shù)。
dir???分區(qū)的掛載點(diǎn)。
(4)fstab配置說明
/etc/fstab?中一共有6列:
file system:指定要掛載的文件系統(tǒng)的設(shè)備名稱(如:/dev/sdb)。也可以采用UUID,UUID可以通過使用blkid命令來查看(如:blkid? /dev/sdb)指定設(shè)備的UUID號(hào)。
mount point:掛載點(diǎn)。就是自己手動(dòng)創(chuàng)建一個(gè)目錄,然后把分區(qū)掛載到這個(gè)目錄下。
type:用來指定文件系統(tǒng)的類型。如:ext3, ext4, ntfs等。
option dump:0表示不備份;1表示要將整個(gè)<file system>中的內(nèi)容備份。此處建議設(shè)置為0。
pass:用來指定fsck如何來檢查硬盤。0表示不檢查;掛載點(diǎn)為分區(qū)/(根分區(qū))必須設(shè)置為1,其他的掛載點(diǎn)不能設(shè)置為1;如果有掛載ass設(shè)置成大于1的值,則在檢查完根分區(qū)后,然后按pass的值從小到大依次檢查,相同數(shù)值的同時(shí)檢查。如:/home 和?/boot 的pass?設(shè)置成2,/devdata的pass?設(shè)置成3,則系統(tǒng)在檢查完根分區(qū),接著同時(shí)檢查/boot和/home,再檢查/devdata。
?
2.????????如何加載新硬盤(想詳細(xì)了解為什么會(huì)這樣操作,請(qǐng)看第三部分“詳解步驟”部分)
(1)??????通過命令fdisk –lu,顯示“Disk /dev/sdb doesn't contain a valid partition table”說明sdb就是新添加的硬盤,下面主要針對(duì)它進(jìn)行操作。如圖1所示。
?
??????????????????????????????????????????????????? 圖1
(2)??????下面對(duì)sdb進(jìn)行分區(qū),命令:fdisk/dev/sdb,如下圖2所示,按提示操作。
?
??????????????????????????????????????????????????????????? 圖2
根據(jù)提示,輸入n,想新硬盤添加一個(gè)分區(qū)。出現(xiàn)Commandaction時(shí),輸入e,指定分區(qū)為擴(kuò)展分區(qū)(extended)。出現(xiàn)Partition number(1-4)時(shí),輸入1表示只分一個(gè)區(qū)。
續(xù)指定起啟柱面(cylinder)號(hào)完成分區(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)??????此時(shí),用命令fdisk –lu分區(qū)情況,如圖6所示
?
??????????????????????????????????????????????????????????????????????? 圖6
(6)??????對(duì)新分區(qū)進(jìn)行格式化:sudo mkfs -t ext4 /dev/sdb,(推薦ext4,時(shí)間比較快,具體了解看第三部分“詳細(xì)步驟”)如圖7所示。
?
???????????????????????????????????????????????????????????? 圖7
(7)??????掛載硬盤sudo mount -t ext4 /dev/sdb /devdata(這里devdata是自己制定的目錄,你可以指定任意目錄,我加載的目錄是dfs.data.dir指定的目錄),到此時(shí)已經(jīng)完成了所有步驟,下面就是修補(bǔ)。此時(shí)就可以用命令sudo df –h查看了,如圖8所示。
?
????????????????????????????????????????????????? 圖8
(8)??????如果想每次手動(dòng)加載,使用命令mount –a。如果想讓系統(tǒng)自動(dòng)加載,需要配置/etc/fstab,如下圖9所示。
?
?????????????????????????????????????????????????????? 圖9
到此加載過程完成。
如果是Hadoop集群,此時(shí)需要將每個(gè)工作節(jié)點(diǎn)dfs.data.dir目錄重新修改權(quán)限,使用命令:chown –R dm:dm/usr/local/hadoop/data/(這是dfs.data.dir指向的目錄),然后將namenode格式化即可,這里筆者就是忘了更改dfs.data.dir指向目錄的權(quán)限,導(dǎo)致datanode啟動(dòng)不起來,汗啊。
3.????詳解步驟
(1)對(duì)于2中(1)的名稱sdb,其實(shí)Linux對(duì)設(shè)備的命名有它自己的一套規(guī)則,根據(jù)接口類型來區(qū)分存儲(chǔ)設(shè)備,按存儲(chǔ)設(shè)備占用的系統(tǒng)接口編號(hào)為其分配標(biāo)識(shí)符。對(duì)于IDE存儲(chǔ)設(shè)備(并口設(shè)備)標(biāo)識(shí)符為hd,按設(shè)備使用接口的不同,分別命名為had,hdb,hdc等;對(duì)于SCSI接口,SATA接口設(shè)備(串口)和串行總線接口使用sd作為標(biāo)識(shí),仍按照使用接口編號(hào)不同,以sda,sdb等為其命名。
(2)對(duì)2中的(2)分區(qū)。在使用硬盤存儲(chǔ)數(shù)據(jù)時(shí),還需要對(duì)硬盤進(jìn)行分區(qū),按分區(qū)的使用方法可以將硬盤分區(qū)分為3種:主分區(qū)、擴(kuò)展分區(qū)和邏輯分區(qū)。其中主分區(qū)是最基本的分區(qū)類型,它可以直接掛載并存儲(chǔ)數(shù)據(jù),一個(gè)硬盤最多只能有4個(gè)主分區(qū)。Linux系統(tǒng)中對(duì)這4個(gè)主分區(qū)使用1、2、3、4作為標(biāo)識(shí)符。例如硬盤sda上的第1個(gè)主分區(qū)的標(biāo)識(shí)為sda1,同理其他三個(gè)標(biāo)識(shí)分別為sda2,sda3, sda4;擴(kuò)展分區(qū)是一種特殊的主分區(qū),如果要使用擴(kuò)展分區(qū)存儲(chǔ)數(shù)據(jù),必須先將擴(kuò)展分區(qū)劃分為邏輯分區(qū)(即邏輯分區(qū)加你在擴(kuò)展分區(qū)基礎(chǔ)之上),如果要在一個(gè)硬盤上創(chuàng)建4個(gè)以上的分區(qū),就必須使用擴(kuò)展分區(qū)。由于擴(kuò)展分區(qū)也是一種主分區(qū),因此擴(kuò)展分區(qū)也占用一個(gè)主分區(qū)號(hào);在擴(kuò)展分區(qū)分區(qū)基礎(chǔ)之上,可以創(chuàng)建多個(gè)邏輯分區(qū),邏輯分區(qū)可以直接掛載并存儲(chǔ)數(shù)據(jù)。邏輯分區(qū)的標(biāo)識(shí)數(shù)字從5開始,例如sda5,sda6。Linux系統(tǒng)中的硬盤分區(qū)使用以上標(biāo)識(shí)符命名并保存在/dev中,要使用分區(qū)存儲(chǔ)數(shù)據(jù)時(shí),需要將對(duì)應(yīng)的塊設(shè)備文件掛載到一個(gè)目錄下。掛載設(shè)備的過程可以描述成:為用戶使用該分區(qū)存放和讀取數(shù)據(jù)提供一個(gè)接口和途徑。這里為什么創(chuàng)建擴(kuò)展分區(qū),而不是創(chuàng)建主分區(qū),筆者的理由是主分區(qū)包含啟動(dòng)的一些附加信息,而這些信息是用來引導(dǎo)系統(tǒng)啟動(dòng)的,這里的磁盤只是為了擴(kuò)充原有磁盤的容量來存儲(chǔ)數(shù)據(jù),如果擴(kuò)展分區(qū)直接分成邏輯分區(qū),不需要這些附加信息,從而可以更加充分地利用新硬盤的空間,這個(gè)解釋不保證正確,如果有誤,請(qǐng)智者指正。
(3)2中(6)提到了文件系統(tǒng)ext4,可以參考http://baike.baidu.com/view/266589.htm#7
(4)2中(8)的fstab設(shè)置可參考http://baike.baidu.com/view/5499388.htm。
?
引用網(wǎng)址:http://aofengblog.blog.163.com/blog/static/6317021201101502540117/
總結(jié)
以上是生活随笔為你收集整理的Hadoop集群中添加硬盘的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 使用CountDownLatch来模拟马
- 下一篇: 一个动画效果