2014第一篇博文,將來也會逐步寫成一個系列,新年新氣象。
將hadoop及其周邊生態系統deb/rpm化對於自動化營運來說意義重大,建立好整個生態的rpm和deb然後再建立本地yum或者apt的源,可大大簡化hadoop的部署和營運。實際上,cloudera和hortonworks都是這麼做的。
本來想把rpm和deb都寫了,不過估計篇幅不夠,還是分開吧,先從deb講起。deb建立比較容易一些,不需要寫什麼spec指令碼。
以hadoop 2.2.0為例,apache官方並不提供基於2.0的rpm和deb,所以我們自己想法去建立自己的修改過的rpm和deb。
一、先下載hadoop編譯後的包,大概100多兆,然後解壓縮
#wget http://mirrors.cnnic.cn/apache/hadoop/common/hadoop-2.2.0/hadoop-2.2.0.tar.gz#tar zxf hadoop-2.2.0.tar.gz
二、建立打包需要的檔案夾
#mkdir -p /opt/hadoop_2.2.0-1_amd64/DEBIAN#mkdir -p /opt/hadoop_2.2.0-1_amd64/usr#mkdir -p /opt/hadoop_2.2.0-1_amd64/etc
其中DEBIAN是放置打包指令碼用的,usr和etc是將來打包後將會安裝到的路徑。最後打包完成後,這裡的usr目錄對應的就是未來linux系統裡面的/usr目錄,etc目錄對應的就是linux系統的/etc目錄。
三、將hadoop裡面的東西複製到目的檔案夾
第一步解壓縮後的hadoop-2.2.0檔案夾下應該有如下一些檔案夾。
-bin
-etc
--|-hadoop
-sbin
-share
-lib
-libexec
-include
原始tar包裡面的hadoop大概的檔案夾結構大概是這樣的。然後執行複製。
#tar zxf hadoop-2.2.0.tar.gz#cd hadoop-2.2.0#cp -rf bin sbin lib libexec share include /opt/hadoop_2.2.0-1_amd64/usr/#cp -rf etc/hadoop /opt/hadoop_2.2.0-1_amd64/etc/
複製後的打包檔案夾/opt/hadoop_2.2.0-1_amd64/目錄結構應大致如下
-DEBIAN
-etc
--|-hadoop
-usr
--|-bin
--|-sbin
--|-include
--|-lib
--|-libexec
--|-share
然後開始編寫DEBIAN檔案夾下的控制檔案,ubuntu和debian打包相對rpm簡單一些,只需要寫幾個獨立的指令檔即可。
進入DEBIAN檔案夾,先編輯中繼資料檔案control
#cd /opt/hadoop_2.2.0-1_amd64/DEBIAN#vi control
輸入以下內容
Package: hadoopVersion: 2.2.0-GASection: miscPriority: optionalArchitecture: amd64Provides: hadoopMaintainer: XiangleiDescription: The Apache Hadoop project develops open-source software for reliable, scalable, distributed computing.
儲存退出,然後編輯同目錄下的conffile,用來監視安裝後設定檔的變化,以在卸載的時候保留更改後的設定檔。
#vi /opt/hadoop_2.2.0-1_amd64/DEBIAN/conffile
輸入以下內容
/etc/hadoop/core-site.xml/etc/hadoop/hdfs-site.xml/etc/hadoop/mapred-site.xml/etc/hadoop/yarn-site.xml/etc/hadoop/hadoop-env.sh/etc/hadoop/yarn-env.sh
繼續。還有四個控制檔案需要編輯,分別是postinst安裝後操作,postrm刪除前操作,preinst安裝前操作,prerm刪除前操作,都是以指令碼的形式來編寫。放一起寫。
#vi postinst#------mkdir -p /usr/etcln -s /etc/hadoop /usr/etc/hadooprm -f /etc/hadoop/hadoop#------#vi postrm#------/usr/sbin/userdel hdfs 2> /dev/null >/dev/null/usr/sbin/userdel mapred 2> /dev/null >/dev/null/usr/sbin/groupdel hadoop 2> /dev/null >dev/nullexit 0#------#vi preinst#------getent group hadoop 2>/dev/null >/dev/null || /usr/sbin/groupadd -g 123 -r hadoop/usr/sbin/useradd --comment "Hadoop MapReduce" -u 202 --shell /bin/bash -M -r --groups hadoop --home /var/lib/hadoop/mapred mapred 2> /dev/null || :/usr/sbin/useradd --comment "Hadoop HDFS" -u 201 --shell /bin/bash -M -r --groups hadoop --home /var/lib/hadoop/hdfs hdfs 2> /dev/null || :#------#vi prerm#------#不寫內容,空即可#------
這時候基本就完事了,當然,你還需要修改一下hadoop指令碼裡面的路徑輸出配置,以適應打包安裝後的路徑。這個就很簡單了,沒啥可說的了。
然後在shell裡面執行
#cd /opt#dpkg -b hadoop_2.2.0-1_amd64
然後你將會得到hadoop_2.2.0-1_amd64.deb安裝包。用dpkg -i 命令安裝試試吧。做飯吃去了,下一次說做apt源和rpm包的辦法。
本文出自 “實踐檢驗真理” 部落格,謝絕轉載!