Hadoop自動化營運之建立deb包

來源:互聯網
上載者:User

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包的辦法。


本文出自 “實踐檢驗真理” 部落格,謝絕轉載!

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.