KickStart安裝CentOS,同時安裝和配置hadoop

來源:互聯網
上載者:User

標籤:

聲明:這篇文章是前面是拾人牙慧,我是結合 http://www.111cn.net/sys/linux/59969.htm 和 http://www.cnblogs.com/mchina/p/centos-pxe-kickstart-auto-install-os.html 兩篇部落格寫的。

後面關於IP的部分是自己的

一:系統內容

  實驗平台:win7,VMware 12.0.0 build-2985596

  要安裝的系統:CentOS 6.7 64位

  要安裝的軟體:hadoop 1.2.1,java

  假設每台機器的網卡都是eth0

二:實驗步驟

  1.在VMware上先安裝一個CentOS 6.7 64,網路採用橋接模式;這台機器是DHCP伺服器,HTTP伺服器,TFTP伺服器一體的;這裡假設它的IP是192.168.0.57,並且為了方便,我把這台機器叫server,下面所有的配置都是在server上進行的。

  2.關閉server的防火牆和selinux

    service iptables stop     #臨時關閉防護牆

    setenforce 0                 #臨時關閉selinux

  3.安裝並配置http服務

    yum -y install httpd               #安裝httpd

    /etc/init.d/httpd start            #啟動http服務

    mkdir -p /var/www/html/       #http服務預設的根目錄就是這個檔案夾,如果沒有的話就建立

    http服務預設的連接埠是80,可以在 /var/www/html/中隨便放一個檔案如test.txt ,然後在瀏覽器中輸入 http://192.168.0.57:80/test.txt 看看是否顯示

  4.掛載Centos的ISO檔案

    使用任何方法找一個CentOS的ISO檔案,我用的是CentOS-6.7-x86_64-bin-DVD1.iso,把它放入server中某一個位置,我放在 /root 檔案夾中(因為是用root操作server的) 

    mkdir -p /var/www/html/os                        #建立一個os檔案夾用來存放ISO中的所有檔案

    mount -t iso9660 -o loop /root/CentOS-6.7-x86_64-bin-DVD1.iso /var/www/html/os     #把ISO掛載到os檔案夾下

    cd /var/www/html/os & ll           #看看是否掛載成功

  5.配置TFTP服務

    yum -y install tftp-server

    修改設定檔:/etc/xinetd.d/tftp    

service tftp {         socket_type             = dgram         protocol                = udp         wait                    = yes         user                    = root         server                  = /usr/sbin/in.tftpd         server_args             = -s /var/lib/tftpboot         disable                 = no                         #修改的是這行,原來是yes,改為no        per_source              = 11         cps                     = 100 2         flags                   = IPv4 }

 

    /etc/init.d/xinetd restart           #因為tftp服務是掛載在超級進程xinetd 下的,所以通過啟動xinetd 來啟動tftp服務。

  6.配置DHCP服務

    yum -y install dhcp

    cp -f /usr/share/doc/dhcp-4.1.1/dhcpd.conf.sample  /etc/dhcp/dhcpd.conf               #注意這裡的4.1.1是dhcp的版本,可能會不一樣

    修改/etc/dhcp/dhcpd.conf 設定檔,內容如下:    

ddns-update-style interim; ignore client-updates; filename "pxelinux.0";         #pxelinux 開機檔案位置;next-server 192.168.0.57;  #這裡是server的IP地址subnet 192.168.111.0 netmask 255.255.255.0 {        option routers                  192.168.0.57;    #這裡還是server的IP地址        option subnet-mask              255.255.255.0;        range dynamic-bootp 192.168.0.2 192.168.0.200;   #這是分配的IP地址的範圍        default-lease-time 21600;         max-lease-time 43200;}

 

    /etc/init.d/dhcpd start    #啟動DHCP服務

  7.配置支援PXE的啟動程式

    cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/

    cp /var/www/html/cdrom/images/pxeboot/initrd.img  /var/lib/tftpboot/

    cp /var/www/html/cdrom/images/pxeboot/vmlinuz  /var/lib/tftpboot/

    cp /var/www/html/cdrom/isolinux/*.msg /var/lib/tftpboot/

    mkdir /var/lib/tftpboot/pxelinux.cfg

    vi /var/lib/tftpboot/pxelinux.cfg/default    #default中的所有內容如下,    

default ks     #預設啟動的是 ‘label ks‘ 中標記的啟動核心prompt 1          #顯示 ‘boot: ‘ 提示符。為 ‘0‘ 時則不提示,將會直接啟動 ‘default‘ 參數中指定的內容。timeout 6      #在使用者輸入之前的逾時時間,單位為 1/10 秒。display boot.msg  #顯示某個檔案的內容,注意檔案的路徑。預設是在/var/lib/tftpboot/ 目錄下。也可以指定位類似 ‘/install/boot.msg‘這樣的,路徑+檔案名稱。F1 boot.msg     #按下 ‘F1‘ 這樣的鍵後顯示的檔案。F2 options.msg F3 general.msg F4 param.msg F5 rescue.msg label linux       #‘label‘ 指定你在 ‘boot:‘ 提示符下輸入的關鍵字,比如boot: linux[ENTER],這個會啟動‘label linux‘ 下標記的kernel 和initrd.img 檔案。  kernel vmlinuz  #kernel 參數指定要啟動的核心。  append initrd=initrd.img #append 指定追加給核心的參數,能夠在grub 裡使用的追加給核心的參數,在這裡也都可以使用。label text   kernel vmlinuz   append initrd=initrd.img text label ks   kernel vmlinuz   append ks=http://192.168.0.57/ks.cfg initrd=initrd.img    #告訴系統,從哪裡擷取ks.cfg檔案 ,這裡的IP是server的IPlabel local   localboot 1 label memtest86   kernel memtest   append -

 

  8.安裝Kickstart並配置ks.cfg檔案

    yum install system-config-kickstart

    如果已經安裝了X Windows 和Desktop,或者就是在圖形環境中操作的server,那麼運行命令

    system-config-kickstart    #啟動圖形介面,配置ks.cfg

    如果沒有圖形介面,那也無所謂,自己產生個ks.cfg也可以。

    按照下面的圖形一步步來,最後 File  -> Save 儲存到 /var/www/html/檔案夾下,檔案名稱是ks.cfg

    

    

    

    

    

    

    

    

    

    

  到這裡server的所有配置項已經好了

10. 實驗

  再用VMware建立一個空白硬碟的虛擬器,網路還是橋接模式,啟動之後會看到螢幕有一行DHCP:/ 然後就進入安裝了

 

 

關於IP,在hadoop叢集中有N多台機器,我需要知道它們的IP並把它們設定到DNS伺服器中去,那麼我們就需要一個方法收集所有機器的IP!另外每台機器的IP都應該是固定的,不應該是通過DHCP動態獲得的!

1.關於收集IP,我一個思路,在server上配置NFS,假設把/ips檔案夾共用出去,在每台機器上mount這個檔案夾,同時在裡面建立一個檔案,檔案的名稱就是該台機器的IP

2.設定靜態IP,這個只能通過修改/etc/sysconfig/network-scripts/ifcfg-eth0來進行

 還記得上面第9步的最後一幅圖嗎?他是設定 Post-Installation Script,那麼我們就可以寫一個指令碼,來實現上面的1,2兩步,把下面的指令碼拷貝到Post-Installation Script中去,當然該指令碼還實現了其他功能,我都有注釋。

其他功能包括添加hadoop使用者,遠程下載hadoop和java,配置PATH,mount hadoop的master伺服器的公開金鑰,配置dns,(如果用nfs分享hadoop的設定檔,下面也有)。

#declare -i number=$RANDOM*100/32768         #這兩行我注釋了,如果叢集很大的話,最好取消注釋。因為下面很多操作會訪問http伺服器,如果叢集很大同時訪問的話,http伺服器可能會爆掉,所以先讓主線程休眠隨機的秒數再開始進行下面的工作#sleep ${number}                  

NFS_SERVER_ID=192.168.0.57 #不是說要用NFS嗎?這裡就是NFS伺服器的地址NFS_SERVER_PATH_IPS=/ips             #NFS伺服器共用出去的檔案夾,這個檔案夾的作用是存放名稱就是各台機器IP的檔案
NFS_SERVER_PATH_HADOOP_CONF=/conf #乾脆hadoop的設定檔也有NFS伺服器提供吧^_^。這個檔案夾的作用是存放hadoop的所有設定檔,不過這樣做其實增大了風險,如果NFS伺服器掛了。。。
NFS_SERVER_PATH_SSH=/ssh             #要用NFS共用hadoop的master的公開金鑰,這個檔案夾的作用是存放master的公開金鑰PXE_URL=http://192.168.0.57           #http伺服器的地址,我這裡還提供了hadoop 和 java的下載; 還記得上面有個檔案夾/var/www/html嗎?把hadoop和java的gz壓縮檔都放在/var/www/html下面就可以了ROOT_DIR=/opt/modules               # hadoop和java的安裝地址DNS=192.168.0.116 #大型叢集肯定用DNS伺服器啦,這個是DNS伺服器的地址

#yum -y install rpcbind nfs-utils #每個datanode也是NFS的一個用戶端,得裝上用戶端軟體,我把這一行注釋了,因為在產生ks.cfg檔案時,在 Package Selection時可以選擇 Servers -> NFS file server/etc/init.d/rpcbind start            #就算是NFS的client,也得啟動這兩個服務/etc/init.d/nfslock start chkconfig rpcbind on #開機啟動,要不然hadoop就沒有conf檔案了!!!chkconfig nfslock on
useradd hadoop #添加一個使用者 hadoopecho ‘123456‘ | passwd --stdin hadoop #把hadoop使用者的密碼設定為 123456mkdir -p ${ROOT_DIR}               #建立hadoop和java的安裝根目錄cd ${ROOT_DIR}                   #進入安裝根目錄#get hadoop and javawget "${PXE_URL}/jdk-7u79-linux-x64.tar.gz" "${PXE_URL}/hadoop-1.2.1.gz" #從http伺服器上下載hadoop和javatar -xf jdk-7u79-linux-x64.tar.gz #解壓hadooptar -xf hadoop-1.2.1.gz #解壓javachown -R hadoop ${ROOT_DIR} #把安裝根目錄下的所有檔案和檔案夾的所有者改成hadoop
rm -rf ${ROOT_DIR}/hadoop-1.2.1/conf/* #把hadoop現有的設定檔先都刪除了
mount -t nfs ${NFS_SERVER_ID}:${NFS_SERVER_PATH_HADOOP_CONF} ${ROOT_DIR}/hadoop-1.2.1/conf/ #把遠端hadoop設定檔mount到本地ROUTE=$(route -n|grep "^0.0.0.0"|awk ‘{print $2}‘) #一直到下面的紅色的EOF都是設定靜態IP,同時還設定了DNSBROADCAST=$(/sbin/ifconfig eth0|grep -i bcast|awk ‘{print $3}‘|awk -F":" ‘{print $2}‘)HWADDR=$(/sbin/ifconfig eth0|grep -i HWaddr|awk ‘{print $5}‘)IPADDR=$(/sbin/ifconfig eth0|grep "inet addr"|awk ‘{print $2}‘|awk -F":" ‘{print $2}‘)NETMASK=$(/sbin/ifconfig eth0|grep "inet addr"|awk ‘{print $4}‘|awk -F":" ‘{print $2}‘)cat >/etc/sysconfig/network-scripts/ifcfg-eth0 <<EOFDEVICE=eth0BOOTPROTO=staticBROADCAST=$BROADCASTHWADDR=$HWADDRIPADDR=$IPADDRNETMASK=$NETMASKGATEWAY=$ROUTErooONBOOT=yesDNS1=$DNSEOFmkdir -p /ipsmount -t nfs ${NFS_SERVER_ID}:${NFS_SERVER_PATH_IPS} /ips #把NFS遠程檔案夾mount到本地touch /ips/${IPADDR}   #在遠程檔案夾中建立一個檔案,檔案名稱就是該機器的IP,那麼在NFS伺服器中就收集了整個叢集的所有機器的IP
echo "export JAVA_HOME=${ROOT_DIR}/jdk1.7.0.79" >> /home/hadoop/.bash_profile #這三行只是為了操作java和hadoop時方便,也可以不要echo "export HADOOP_HOME=${ROOT_DIR}/hadoop-1.2.1" >> /home/hadoop/.bash_profileecho "export PATH=\${JAVA_HOME}/bin:\${HADOOP_HOME}/bin:\${HADOOP_HOME}/sbin:\${PATH}" >> /home/hadoop/.bash_profileservice network restart #重新啟動網路服務,或者這裡直接reboot也可以,反正是在裝系統,裝系統時重啟不是很正常嗎

 

 

  

KickStart安裝CentOS,同時安裝和配置hadoop

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.