一、我緣何選擇CentOS7.0
14年7月7日17:39:42發(fā)布了CentOS 7.0.1406正式版,我曾使用過(guò)多款Linux,對(duì)于Hadoop2.X/YARN的環(huán)境配置緣何選擇CentOS7.0,其原因有:
1、界面采用RHEL7.0新的GNOME界面風(fēng),這可不是CentOS6.5/RHEL6.5所能比的!(當(dāng)然,F(xiàn)edora早就采用這種風(fēng)格的了,但是現(xiàn)在的Fedora缺包已然不成樣子了)
2、曾經(jīng),我也用了RHEL7.0,它最大的問(wèn)題就是YUM沒(méi)法用,而且總會(huì)有Warning提示注冊(cè)購(gòu)買(mǎi)!為此,必須去修改YUM源,還有修改其他的文件使之不提示才能用,看了這么麻煩,想必有很多童鞋滴心就已經(jīng)涼了4/7了吧!
3、當(dāng)然,Ubuntu系列我用過(guò)Ubuntu14.04/12.04和elementaryOS,不知為何,一用Ubuntu14.04就覺(jué)得好丑呀!!但是有很多人都說(shuō)CentOS和RHEL更丑,但殊不知哪個(gè)才是企業(yè)級(jí)的,那個(gè)才是霸主。
另一方面,要求視覺(jué)效果的話,建議去裝個(gè)elementaryOS試試,當(dāng)然,elementaryOS也有缺陷:它已經(jīng)許久沒(méi)有提供更新了,12年推出的,已逾2年未曾發(fā)布新版本的系統(tǒng),也未曾更新網(wǎng)站,與此同時(shí),elementaryOS的模型Ubuntu早就更新?lián)Q代了,所以,暴露了不少問(wèn)題,其中麻煩的是不要隨意更新系統(tǒng),否則黑屏,那就真的純命令行了,漂亮的系統(tǒng)突然被打回原型,那心鐵定疤涼疤涼的,而且它更新后的apt-get是無(wú)法安裝某些匹配某些,所以elementaryOS只供欣賞把玩!
4、也有人用過(guò)openSUSE,據(jù)說(shuō)是最華麗的系統(tǒng),在我看來(lái),花哨的KDE打開(kāi)文件/軟件時(shí)顯示的一跳一跳的,我心里就癢癢的,沒(méi)事兒你弄個(gè)沒(méi)用又難看的東東干嘛??干嘛??另外,最新的openSUSE對(duì)中文的設(shè)計(jì)的確無(wú)法令人滿意。另外,就是openSUSE的環(huán)境不怎么熟悉,歐洲人設(shè)計(jì)的GNU/Linux還有些難適應(yīng),當(dāng)然,我也不打算改旗易幟向歐洲SUSE倒戈。
其實(shí),GNU/Linux版本眾多,選擇一個(gè)適合自己的一款一直玩下去、用下去就足夠了,Linux版本眾多,設(shè)計(jì)各有千秋,但使用大同小異,了解“異”點(diǎn)即可!當(dāng)然,還是奉勸一句:初學(xué)者僅僅跑跑虛擬機(jī)看看效果就好,莫要將每款都用會(huì)了!畢竟,體驗(yàn)也是學(xué)習(xí)的動(dòng)力之一!
二、體驗(yàn)CentOS7與之前版本的“異”
初次啟動(dòng)
裝完機(jī)后,開(kāi)機(jī)進(jìn)系統(tǒng)的界面換了,乍一看以為是兩個(gè)內(nèi)核,原來(lái)有一個(gè)是rescue選擇,而且按e后,會(huì)發(fā)現(xiàn)所有的grub.conf的信息全出來(lái)了,好不容易找到內(nèi)核啟動(dòng)的地方,寫(xiě)了個(gè) 1(要進(jìn)單用戶模式),然后進(jìn)了rescue模式。
字符界面
進(jìn)系統(tǒng)后,是圖形界面,想進(jìn)字符界面,結(jié)果找到/etc/inittab,發(fā)現(xiàn)幾乎是個(gè)空文件,文件中提示想改runlevel的話,可以把/lib/systemd/system/runlevel*.target 軟連到 /etc/systemd/system/default.target下(當(dāng)然考過(guò)來(lái),覆蓋也行),試了一下還行,能改到字符界面runlevel3。
配置網(wǎng)絡(luò)和主機(jī)名
然后,想配置網(wǎng)絡(luò),進(jìn)/etc/sysconfig/network-script/一看,我靠,網(wǎng)卡改名了enp1s5,好有趣,配置完網(wǎng)絡(luò)后改主機(jī)名, 到/etc/sysconfig/network去改名字,發(fā)現(xiàn)這個(gè)文件也是空的,按原6版本的去修改,重啟后沒(méi)效果,man了一下hostname, 發(fā)現(xiàn)7中改名要到/etc/hostname去改名字。
本地yum源和掛載
接著,想配置一個(gè)本地yum源,配上后要掛光盤(pán),手動(dòng)掛上了,然后直接echo“mount ......”到rc.local中,畢竟是啟動(dòng)執(zhí)行腳本,重啟之后竟然沒(méi)掛上,進(jìn)去rc.local中看了一下,7中竟然要手動(dòng)的把chmod +x rc.local, 是的,要手動(dòng)加執(zhí)行權(quán)限,難道我之前裝的6以前的系統(tǒng)中這個(gè)都要手動(dòng)加執(zhí)行權(quán)限,我不記得啊!!!! 當(dāng)然,加了權(quán)限后,開(kāi)機(jī)后啟動(dòng)執(zhí)行了rc.local的mount命令。
LVM和xfs
后來(lái),想著裝一個(gè)lvm玩玩,于是啊就分區(qū),格式化(特意格式化為了xfs),pv,vg,lv一步一步,都沒(méi)問(wèn)題,然后想著放大,縮小,這時(shí)出問(wèn)題了,執(zhí)行resize2fs時(shí),怎么一直報(bào)superblock什么的出錯(cuò),這是怎么回事,然后man resize2fs一下,發(fā)現(xiàn)這命令只支持ext的文件系統(tǒng),我艸,那我裝系統(tǒng)是怎么是lvm的,這個(gè)問(wèn)題我還沒(méi)解決,應(yīng)該有解決方法。
dhcp和服務(wù)
接著,想著裝一個(gè)dhcp玩玩,驚奇的發(fā)現(xiàn)所有dhcp的包裝上之后,不能service dhcpd start,然后發(fā)現(xiàn)/etc/init.d/中竟然沒(méi)一個(gè)dhcp類似的東西,畢竟6之前有dhcpd,dhcpd6,dhcrelay的,然后發(fā)現(xiàn) /sbin/dhcpd有啟動(dòng)文件,難道,難道,以后的服務(wù)想service啟,都要手動(dòng)自己編?錯(cuò)了,是在/usr/lib/systemd/system/dhcpd.service,還要修改好多,然后加權(quán)限,執(zhí)行service 服務(wù) restart/stop。。。。。。可以,但是指向了systemctl restart/start/stop 服務(wù).service
iptables
又發(fā)現(xiàn)iptables這次也不是作為一個(gè)服務(wù)在/etc/init.d/下面了,/sbin下有;
防火墻由iptables更換成了firewalld
三、系統(tǒng)配置之關(guān)閉防火墻
systemctl stop firewalld.service #停止firewall
systemctl disable firewalld.service #禁止firewall開(kāi)機(jī)啟動(dòng)
systemctl命令的基本操作格式是:
systemctl 動(dòng)作 服務(wù)名.service
動(dòng)作:start,stop,restart,status,enable,disable,is-enabled
四、配置Linux網(wǎng)絡(luò)
1、修改hostname
CentOS 7.0的hostname在/etc/hostname中用root用戶修改:
[root@hadoop1 ~]# vim /etc/hostname #編輯/etc/hostname
[root@hadoop1 ~]# cat /etc/hostname #查看/etc/hostname
hadoop1
[root@hadoop1 ~]#
以前版本的CentOS在/etc/sysconfig/network中用root用戶修改:
[root@hadoop1 ~]# vim /etcsysconfig/network
"/etc/sysconfig/network"的設(shè)定項(xiàng)目如下:
NETWORKING 是否利用網(wǎng)絡(luò)
GATEWAY 默認(rèn)網(wǎng)關(guān)與接下來(lái)配置IP的屬性文件中默認(rèn)網(wǎng)關(guān)一致
IPGATEWAYDEV 默認(rèn)網(wǎng)關(guān)的接口名
HOSTNAME 主機(jī)名
DOMAIN 域名
reboot后hostname生效
2、修改當(dāng)前機(jī)器的IP
Step1:進(jìn)入配置文件目錄
現(xiàn)在已經(jīng)是root權(quán)限了,我們cd到網(wǎng)絡(luò)配置文件的目錄,并列出目錄下的文件。
Step2:修改配置文件
該目錄下,文件名“ifcfg-ens192”文件就是網(wǎng)絡(luò)配置的主文件。vi它!
修改或添加一下:
ONBOOT=yes
BOOTPROTO=static
IPADDR=IP地址
NETMASK=255.255.255.0 #子網(wǎng)掩碼
GATEWAY=192.168.30.1 #網(wǎng)關(guān)地址
Step3:重啟網(wǎng)絡(luò)服務(wù)
修改完配置文件后,:wq!保存退出!然后重啟網(wǎng)絡(luò)。
Step4:測(cè)試
通過(guò)ifconfig命令查看ip是否設(shè)置成功,然后ping一下網(wǎng)絡(luò)。這個(gè)時(shí)候應(yīng)該成功了!
3、修改DNS(看情況,非必選)
若網(wǎng)絡(luò)環(huán)境有DNS要求,則配置,否則,勿配!
格式:
nameserver DNS地址
[root@hadoop1 ~]# vi /etc/resolv.conf nameserver 202.131.80.1 #依需求而定 nameserver 202.131.80.5 #依需求而定
4、配置hosts文件
"/etc/hosts"這個(gè)文件是用來(lái)配置主機(jī)將用的DNS服務(wù)器信息,是記載LAN內(nèi)接續(xù)的各主機(jī)的對(duì)應(yīng)[HostName和IP]用的。當(dāng)用戶在進(jìn)行網(wǎng)絡(luò)連接時(shí),首先查找該文件,尋找對(duì)應(yīng)主機(jī)名(或域名)對(duì)應(yīng)的IP地址。
我們要測(cè)試兩臺(tái)機(jī)器之間知否連通,一般用"ping 機(jī)器的IP",如果想用"ping 機(jī)器的主機(jī)名"發(fā)現(xiàn)找不見(jiàn)該名稱的機(jī)器,解決的辦法就是修改"/etc/hosts"這個(gè)文件,通過(guò)把LAN內(nèi)的各主機(jī)的IP地址和HostName的一一對(duì)應(yīng)寫(xiě)入這個(gè)文件的時(shí)候,就可以解決問(wèn)題。
例如:機(jī)器為"hadoop1:59.67.107.80"對(duì)機(jī)器為"hadoop2:59.67.107.79"用命令"ping"記性連接測(cè)試。測(cè)試結(jié)果如下:
從上圖中的值,直接對(duì)IP地址進(jìn)行測(cè)試,能夠ping通,但是對(duì)主機(jī)名進(jìn)行測(cè)試,若沒(méi)有ping通,提示"unknown host――未知主機(jī)",這時(shí)查看"hadoop1"的"/etc/hosts"文件內(nèi)容。
若ping hadoop1不通則顯示:
若ping hadoop1通則顯示:
若發(fā)現(xiàn)里面沒(méi)有"59.67.107.79 hadoop2"內(nèi)容,故而本機(jī)器是無(wú)法對(duì)機(jī)器的主機(jī)名為"hadoop2" 解析。
在進(jìn)行Hadoop集群配置中,需要在"/etc/hosts"文件中添加集群中所有機(jī)器的IP與主機(jī)名,這樣Master與所有的Slave機(jī)器之間不僅可以通過(guò)IP進(jìn)行通信,而且還可以通過(guò)主機(jī)名進(jìn)行通信。所以在所有的機(jī)器上的"/etc/hosts"文件末尾中都要添加如下內(nèi)容:
因?yàn)楸疚囊砸呀?jīng)配置好的環(huán)境說(shuō)明,所以我的/etc/hosts顯示:
一般處于內(nèi)網(wǎng)下,照此添加(192.168.1.1為網(wǎng)關(guān)):
192.168.1.2 hadoop1192.168.1.3 hadoop2192.168.1.4 hadoop3192.168.1.5 hadoop4
用以下命令進(jìn)行添加:
vim /etc/hosts
現(xiàn)在我們?cè)谶M(jìn)行對(duì)機(jī)器為"hadoop2"的主機(jī)名進(jìn)行ping通測(cè)試,看是否能測(cè)試成功。
從上圖中我們已經(jīng)能用主機(jī)名進(jìn)行ping通了,說(shuō)明我們剛才添加的內(nèi)容,在局域網(wǎng)內(nèi)能進(jìn)行DNS解析了,那么現(xiàn)在剩下的事兒就是在其余的Slave機(jī)器上進(jìn)行相同的配置。然后進(jìn)行測(cè)試。
新聞熱點(diǎn)
疑難解答
圖片精選