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