建立本地yum軟體源,為本地Package安裝Cloudera Manager、Cloudera Hadoop及Impala做準備

九天高遠發表於2013-06-18

一、包管理工具及CentOS的yum

1、包管理工具如何發現可以用的包

包管理工具依賴一系列軟體源,工具下載源的資訊儲存在配置檔案中,其位置隨某包管理工具不同而變化

  • 使用yum的RedHat/CentOS儲存在:/etc/yum.repos.d
  • 使用apt-get的Debian/Ubuntu在:/etc/apt/apt.conf (額外的源採用*.list檔案指定,儲存在/etc/apt/sources.list.d目錄下)

例如在,CentOS下面:

[root@lemon ~]# ls -l /etc/yum.repos.d/
total 24
-rw-r--r--. 1 root root 1926 Feb 25 00:57 CentOS-Base.repo
-rw-r--r--. 1 root root  638 Feb 25 00:57 CentOS-Debuginfo.repo
-rw-r--r--. 1 root root  630 Feb 25 00:57 CentOS-Media.repo
-rw-r--r--. 1 root root 3664 Feb 25 00:57 CentOS-Vault.repo
drwxr-xr-x  3 root root 4096 Jun 12 23:37 cloudera-cdh4
-rw-r--r--  1 root root  231 Jun 12 23:36 clouder-cdh4.repo

上述每個.repo檔案對應著一個或者多個軟體源,下面CentOS-Base.repo的片段說明,該檔案定義了兩個軟體源,一個是Base,一個是Upadate。映象列表引數指向一系列可以下載軟體源的網址。

#………
[base]
name=CentOS-$releasever - Base
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os
#baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6

#released updates 
[updates]
name=CentOS-$releasever - Updates
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=updates
#baseurl=http://mirror.centos.org/centos/$releasever/updates/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
#………

在CentOS下面可以使用:yum repolist  檢視系統中啟用的軟體源。CentOS有如下軟體源列表:

[root@lemon ~]# yum repolist
Loaded plugins: fastestmirror, refresh-packagekit, security
Loading mirror speeds from cached hostfile
 * base: mirror01.idc.hinet.net
 * extras: mirror01.idc.hinet.net
 * updates: ftp.stu.edu.tw
repo id                repo name                                               status
base                   CentOS-6 - Base                                         6,381
cloudera-cdh4          Cloudera's Distribution for Hadoop, Version 4              97
extras                 CentOS-6 - Extras                                          12
updates                CentOS-6 - Updates                                        805
repolist: 7,295

二、建立自己的yum軟體源(以Cloudera Hadoop的安裝為例)

自定義軟體源,給不能聯網或者網路不暢的計算機安裝軟體提供了便利,使得待安裝軟體的主機可以使用本地的軟體源完成安裝。下面講述如何建立本地包軟體源,並指示本地主機直接使用。簡要概括起來如下:將下載的RPM包放到本地主機的某一個目錄下,接著完成創createrepo(建立軟體源的工作),然後在網站上釋出這一軟體源。

1、下載Cloudera Manager安裝檔案

Cloudera Manager的可以從如下網址獲得:

http://archive.cloudera.com/cm4/installer/

這裡選擇Cloudera Manager 最新版4.6.0.1

http://archive.cloudera.com/cm4/installer/latest/cloudera-manager-installer.bin

2、下載相關的CM安裝所需要的RPM包

下載網址為:

http://archive.cloudera.com/cm4/redhat/6/x86_64/cm/4/RPMS/x86_64/

下載全部的7個rmp包,如下圖所示:

 3、建立軟體源

將下載好的rpm檔案複製到制定目錄,如:/home/admin/RPMS中

[root@lemon RPMS]# ls
cloudera-manager-agent-4.5.2-1.cm452.p0.327.x86_64.rpm
cloudera-manager-daemons-4.5.2-1.cm452.p0.327.x86_64.rpm
cloudera-manager-parcel-4.5.2-4.5.2-1.cm452.p0.327.x86_64.rpm
cloudera-manager-server-4.5.2-1.cm452.p0.327.x86_64.rpm
cloudera-manager-server-db-4.5.2-1.cm452.p0.327.x86_64.rpm
enterprise-debuginfo-4.5.2-1.cm452.p0.327.x86_64.rpm
jdk-6u31-linux-amd64.rpm

建立軟體源的主機沒有安裝createrepo,可以透過shell命令yum install createrepo安裝。
當在包含檔案的目錄下執行如下建立命令:

[root@lemon RPMS]# createrepo .

程式也會建立一個repodata目錄,該目錄包含一些描述軟體源的xml檔案。如下所示:

[root@lemon RPMS]# createrepo .
Spawning worker 0 with 7 pkgs
Workers Finished
Gathering worker results

Saving Primary metadata
Saving file lists metadata
Saving other metadata
Generating sqlite DBs
Sqlite DBs complete
[root@lemon RPMS]# ls
cloudera-manager-agent-4.5.2-1.cm452.p0.327.x86_64.rpm
cloudera-manager-daemons-4.5.2-1.cm452.p0.327.x86_64.rpm
cloudera-manager-parcel-4.5.2-4.5.2-1.cm452.p0.327.x86_64.rpm
cloudera-manager-server-4.5.2-1.cm452.p0.327.x86_64.rpm
cloudera-manager-server-db-4.5.2-1.cm452.p0.327.x86_64.rpm
enterprise-debuginfo-4.5.2-1.cm452.p0.327.x86_64.rpm
jdk-6u31-linux-amd64.rpm
repodata
[root@lemon RPMS]# cd repodata/
[root@lemon repodata]# lsother.xml.gz
other.sqlite.bz2
filelists.sqlite.bz2
primary.xml.gz
filelists.xml.gz
primary.sqlite.bz2
repomd.xml

此命令之後,RPM包就會加入到本地的軟體源中。


4、安裝Apache httpd web伺服器

如果你已經安裝了一個web伺服器,可以略過此步,如果未安裝可以透過如下shell命令安裝

[root@lemon ~]$ yum install httpd

安裝完畢後,啟動httpd服務

[root@lemon ~]$ service httpd start

5、釋出軟體原始檔

將檔案複製/移動到WEB伺服器的根目錄下,Linux下面預設是/var/www/html目錄,

[root@lemon ~]$ mv /home/admin/RPMS /var/www/html 
[root@lemon ~]$ chmod -R ugo+rx /var/www/html/RPMS

並更改檔案許可權,使使用者、同組、其他組都可以讀/執行檔案。
訪問http://<hostname>:80/RPMS測試檔案首頁是否正常顯示各檔案的索引,通常要關閉selinux(重啟生效),該yum軟體源才能訪問。

如果不能訪問,出現403錯誤(在實體機上常見),即you don't have permission to access / on this server(Apache Server許可權訪問問題),則需要在/etc/httpd/httpd.conf中新增如下配置:

<Directory "/var/www/icons">
    Options Indexes MultiViews FollowSymLinks
    AllowOverride None
    Order allow,deny
    Allow from all
</Directory>

Alias /CDH4-RPMS/ "/var/www/html/CDH4-RPMS/"
<Directory "/var/wwww/html/CDH4-RPMS">
 Options Indexes MultiViews FollowSymLinks
 AllowOverride None
 Order allow,deny
  Allow from all
</Directory>

Alias /CM4-RPMS/ "/var/www/html/CM4-RPMS/"
<Directory "/var/www/html/CM4-RPMS">
 Options Indexes MultiViews FollowSymLinks
 AllowOverride None
 Order allow,deny
  Allow from all
</Directory>

Alias /IMPALA-RPMS/ "/var/www/html/IMPALA-RPMS/"
<Directory "/var/www/html/IMPALA-RPMS">
 Options Indexes MultiViews FollowSymLinks
 AllowOverride None
 Order allow,deny
  Allow from all
</Directory>

 

6、更改客戶端配置,使其能夠找到該軟體源

在客戶端新建如下格式的檔案,內容如下所示:

[myrepo] 
name=myrepo 
baseurl=http://hostname/RPMS 
enabled=1 
gpgcheck=0 

主機名是剛才所建立的軟體源的主機名。將檔案命名為myrepo.repo,並將檔案放到/etc/yum.repos.d目錄下,即最終結果為/etc/yum.repos.d/myrepo.repo

這裡的客戶端指的是使用本地源的主機,(即待安裝的不能聯網的哪些主機)。

注意:/etc/yum.repos.d目錄下僅僅保留自己建立的本地庫,否則其他的庫因為不能聯網,會報錯的,使得安裝退出。本例中,僅僅保留myrepo.repo。

在CM的叢集配置頁面,設定好本地源後,會有相應的解析,找到本地的源。其中cloudera-manager.repo

cloudera-cdh4.repo、cloudera-impala.repo解析後新建的,原來自己配的源的名字分別是cm4repo.repo、cdh4repo.repo、impalarepo.repo(實際應用中發現,最好將名字命名為cloudera-manager.repo、cloudera-cdh4.repo、cloudera-impala.repo, 否則會可能出現無法解析錯誤,即cloudera-manager-installer-bin還是會向cloudera的官網去找)。

解析後的內容如下:

[root@lemon yum.repos.d]# cat cloudera-cdh4.repo
[cloudera-cdh4]
name = Cloudera CDH, Version (Custom)
baseurl = http://192.168.2.171/CDH4-RPMS
gpgcheck = 0

[root@lemon yum.repos.d]# cat cloudera-impala.repo
[cloudera-impala]
name = Impala, Version (Custom)
baseurl = http://192.168.2.171/impala
gpgcheck = 0

[root@lemon yum.repos.d]# cat cloudera-manager.repo
[cloudera-manager]
name = Cloudera Manager, Version 4.6.0
baseurl = http://192.168.2.171/RPMS
gpgcheck = 0

安裝的時候也可能會出現如下錯誤:

Resolving Dependencies
--> Running transaction check
---> Package cloudera-manager-server-db.x86_64 0:4.6.0-1.cm460.p0.140 will be installed
--> Processing Dependency: postgresql-server >= 8.0 for package: cloudera-manager-server-db-4.6.0-1.cm460.p0.140.x86_64
--> Finished Dependency Resolution
Error: Package: cloudera-manager-server-db-4.6.0-1.cm460.p0.140.x86_64 (cm4repo)
           Requires: postgresql-server >= 8.0
 You could try using --skip-broken to work around the problem
 You could try running: rpm -Va --nofiles --nodigest

所以,這個時候要安裝postgresql-server8.4 或者是9.0(要求8.0及其以上),這個安裝比較麻煩,需要解決各種依賴庫。

postgresql說明:

postgresql包含許多不同的包,包括第三方類庫,通常安裝最重要的包即可(能滿足大部分應用需求)。這些包如下:

  • postgresql - 客戶端類庫及二進位制檔案
  • postgresql-server - 核心的資料庫伺服器
  • postgresql-contrib - 附加的供應元件
  • postgresql-devel - 使用者C語言開發的類庫和標頭檔案
  • pgadmin3 - 資料庫影像化管理工具第三版

9.0版本的rpm包具體下載地址為:

http://yum.postgresql.org/9.0/redhat/rhel-6-x86_64/repoview/

備註:研究發現缺少包這些問題是由虛擬機器造成的,虛擬機器安裝的時候是預設安裝,省去了裡面很大一部分的包,比如虛擬機器安裝的時候不帶jdk、postgresql資料庫、mysql資料庫,而這些都是在實體機安裝的時候所沒有的問題,所以實踐很重要!在實體機下面缺少postgresql資料庫所造成的問題根本就不存在!

7、使用本地類庫安裝CM

CM安裝必須透過package方式,而CDH、Impala可以透過package、parcel方式安裝。

安裝程式預設從網路下載程式包安裝,如果你已經配置好了本地軟體源,並將本機(客戶端)做了識別配置,

只需要在安裝的時候新增引數(--skip_repo_package=1),shell命令如下:

$ sudo ./cloudera-manager-installer.bin --skip_repo_package=1

詳細的安裝步驟及過程,詳見Cloudera Manager and CDH安裝及配置

 

 備註:CM包下載地址:http://archive.cloudera.com/cm4/

    CDH包下載地址:http://archive.cloudera.com/cdh4/

    IMPALA包下載地址:http://archive.cloudera.com/impala/

另外下載時候要注意,如果X86_64同級目錄還有noarch目錄,且裡面也有檔案的時候也要一併下載,不然使用本地軟體源的時候提示部分檔案找不到。

 

相關文章