一、包管理工具及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目錄,且裡面也有檔案的時候也要一併下載,不然使用本地軟體源的時候提示部分檔案找不到。