創建本地yum軟件源,為本地Package安裝Cloudera Manager、Cloudera Hadoop及Impala做准備


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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM