轉載:http://fenriswolf.me/2012/12/06/cloudera-manager-free-edition-4-1-和-cdh-4-1-2-簡易安裝教學/
安裝及管理一個大的Hadoop cluster 並不是只要下載tar files 解壓縮並啟動services 這么簡單。安裝及管理一個大的Hadoop cluster 並不是只要下載tar files 解壓縮並啟動services 這么簡單。 后續有非常多設定、監控等麻煩的事要處理。后續有非常多設定、監控等麻煩的事要處理。 Cloudera Manager 就整合了一系列的功能讓系統管理者能更方便的維護Hadoop。 Cloudera Manager 就整合了一系列的功能讓系統管理者能更方便的維護Hadoop。 Free Edition 的限制如下 Free Edition 的限制如下
- 只支援50 個nodes只支援50 個nodes
- 沒有設定的版本控管沒有設定的版本控管
- 沒有支援LDAP/Kerberos Authentication沒有支援LDAP/Kerberos Authentication
- 沒有進階的services 監控選項,如health check沒有進階的services 監控選項,如health check
- 沒有Logs 搜尋功能沒有Logs 搜尋功能
更多說明在How to Upgrade the Free Edition to Cloudera Manager可以找到。更多說明在How to Upgrade the Free Edition to Cloudera Manager可以找到。 但是對小型的cluster 或是新手想試試怎么裝Hadoop 很有幫助。但是對小型的cluster 或是新手想試試怎么裝Hadoop 很有幫助。
1.前置作業 <br />在Requirements for Cloudera Manager里有提到Cloudera Manager所支持的所有作業系統,包括RHEL, CentOS, SUSE, Ubuntu等等。 這篇文章會以CentOS 6.3 為例子。這篇文章會以CentOS 6.3 為例子。
- 官方建議/var 至少要留5G 的空間。官方建議/var 至少要留5G 的空間。 以個人經驗,/usr/lib 至少要550M 以上,所有Hadoop 相關的packages 都會裝在這個位置以個人經驗,/usr/lib 至少要550M 以上,所有Hadoop 相關的packages 都會裝在這個位置
- RAM 建議4G,不過本篇所用的VMs 只給了2G RAM 建議4G,不過本篇所用的VMs 只給了2G
- 如果使用Cloudera 所提供的yum repository,要確認網絡能通及yum proxy 設定正確如果使用Cloudera 所提供的yum repository,要確認網路能通及yum proxy 設定正確
- DNS 設定要正確,或是用/etc/hosts 的設定來取代DNS。 DNS 設定要正確,或是用/etc/hosts 的設定來取代DNS。 hostname 命名里不能有_字符,不然啟動Hadoop services 時會失敗。 hostname命名里不能有_字符,不然啟動Hadoop services時會失敗。 至於要不要給domain name 則見人見智。至於要不要給domain name 則見人見智。 以正式環境來說有設定會比較好。以正式環境來說有設定會比較好。 以下是這個范例所使用的設定以下是這個范例所使用的設定
1 192.168.1.110 hadoop-master
2 192.168.1.111 hadoop-worker01
3 192.168.1.112 hadoop-worker02
- Cloudera Manager Server 可用SSH 連到所有需要安裝Hadoop 的機器 Cloudera Manager Server 可用SSH 連到所有需要安裝Hadoop 的機器
- 確認防火牆不會阻擋所有的操作。確認防火牆不會阻擋所有的操作。 以internal Hadoop 來說一般會把防火牆關掉或反安裝以避免一些使用上的問題。以internal Hadoop 來說一般會把防火牆關掉或反安裝以避免一些使用上的問題。 如果對安全性控管有高度要求的話,可以參考Configuring Ports for Cloudera Manager Free Edition來開放需要的ports如果對安全性控管有高度要求的話,可以參考Configuring Ports for Cloudera Manager Free Edition來開放需要的ports
- 確認SELinux 不會阻擋所有的操作,建議是直接關掉確認SELinux 不會阻擋所有的操作,建議是直接關掉
- 確認不會更動到Cloudera 會使用的users/groups 權限。確認不會更動到Cloudera 會使用的users/groups 權限。 可參考Requirements for Cloudera Manager最下方的清單可參考Requirements for Cloudera Manager最下方的清單
2. 安裝Cloudera Manager Server 2.安裝Cloudera Manager Server
從Cloudera Manager Free Edition Download下載最新版的cloudera-manager-installer.bin 並執行。從Cloudera Manager Free Edition Download下載最新版的cloudera-manager-installer.bin並執行。
cloudera-manager-installer.bin 會需要先安裝JDK,如果系統沒有的話會自動安裝Cloudera 建議的版本Oracle JDK 1.6.0_31。 cloudera-manager-installer.bin 會需要先安裝JDK,如果系統沒有的話會自動安裝Cloudera 建議的版本Oracle JDK 1.6.0_31。 以這篇文章所用的VMs 都已經裝了Oracle JDK 1.6.0_37,則此步驟會被省略。以這篇文章所用的VMs 都已經裝了Oracle JDK 1.6.0_37,則此步驟會被省略。
接下來就可以用http://cms:7180打開admin console。接下來就可以用http://cms:7180打開admin console。 默認的賬號密碼是admin/admin。預設的帳號密碼是admin/admin。 Cloudera Manager Server 對權限控管並沒有做的很好,只有一個admin 的賬號。 Cloudera Manager Server 對權限控管並沒有做的很好,只有一個admin 的帳號。 如果有安全性考慮請自行修改密碼。如果有安全性考慮請自行修改密碼。
如果admin console 無法正常運作,請看/var/log/cloudera-scm-server 下的log 訊息。如果admin console 無法正常運作,請看/var/log/cloudera-scm-server 下的log 訊息。 解決問題后重啟service解決問題后重啟service
1
service cloudera-scm-server restart
3. 安裝Hadoop 3.安裝Hadoop
- 進入的第一頁會顯示你正在用Free Edition,直接把這個窗口關掉或點選Just Install the Latest Free Edition進入的第一頁會顯示你正在用Free Edition,直接把這個視窗關掉或點選Just Install the Latest Free Edition
- 第二頁會顯示Cloudera Manager Server 會安裝的所有packages。第二頁會顯示Cloudera Manager Server 會安裝的所有packages。 這部分除了Impala 之外,其他的packages 無法選擇不裝,MapReduce 也會裝MRv1 及MRv2,所以會吃掉系統至少550M 以上的硬盤空間。這部分除了Impala 之外,其他的packages 無法選擇不裝,MapReduce 也會裝MRv1 及MRv2,所以會吃掉系統至少550M 以上的硬盤空間。 畫面上沒有顯示,但因為package 相依性的關系,Bigtop 和Pig 也是會被裝進系統里的。畫面上沒有顯示,但因為package 相依性的關系,Bigtop 和Pig 也是會被裝進系統里的。
- 加入要安裝的機器名稱或IP。加入要安裝的機器名稱或IP。 可以用pattern來指定多台機器。可以用pattern來指定多台機器。 以這個范例而言會有192.168.1.110、192.168.1.111、192.168.1.112 三台機器。以這個范例而言會有192.168.1.110、192.168.1.111、192.168.1.112 三台機器。
- 確認所有的機器已經在名單中,而且SSH 正常運作確認所有的機器已經在名單中,而且SSH 正常運作
- Cloudera Manager 4.1 可以支持CDH3 或CDH4。 Cloudera Manager 4.1 可以支持CDH3 或CDH4。 這邊是直接用最新版。這邊是直接用最新版。
Impala 1.0 Beta 已經出了,但是現在的測試並不會用到,所以選None 。 Impala 1.0 Beta已經出了,但是現在的測試並不會用到,所以選None 。 Impala 要求整個Hadoop cluster 一定要在RHEL/CentOS 6 上面執行,cluster 內混用Ubuntu、SuSE 或RHEL/CentOS 5.x 都是不行的,想試用的要注意OS 版本。 Impala 要求整個Hadoop cluster 一定要在RHEL/CentOS 6 上面執行,cluster 內混用Ubuntu、SuSE 或RHEL/CentOS 5.x 都是不行的,想試用的要注意OS 版本。
Yum repository 如果用默認值,Cloudera Manager 會在/etc/yum.repos.d 里新增一個cloudera-cdh4.repo 來安裝所有必要的packages。 Yum repository 如果用預設值,Cloudera Manager 會在/etc/yum.repos.d 里新增一個cloudera-cdh4.repo 來安裝所有必要的packages。 所以要確認是否連的到archive.cloudera.com 。所以要確認是否連的到archive.cloudera.com 。 在production 的環境不建議直接使用Cloudera 的yum repository,因為Cloudera 版本的變動很快但yum repository 只會放最新版,所以有可能造成機器裝的版號不一致。在production 的環境不建議直接使用Cloudera 的yum repository,因為Cloudera 版本的變動很快但yum repository 只會放最新版,所以有可能造成機器裝的版號不一致。 例如舊機器裝到4.1.1,但新機器裝到4.1.2。例如舊機器裝到4.1.1,但新機器裝到4.1.2。 這有兩種解法這有兩種解法- 由IT 建立一個private yum repository 並准備好所有需要的packages。由IT 建立一個private yum repository 並准備好所有需要的packages。
- 直接修改cloudera-cdh4.repo 中的baseurl 參數,指定明確的版號,如http://archive.cloudera.com/cdh4/redhat/6/x86_64/cdh/4.1.1/或http://archive.cloudera.com/cdh4/redhat/6/x86_64/cdh/4.1.2/直接修改cloudera-cdh4.repo中的baseurl參數,指定明確的版號,如http://archive.cloudera.com/cdh4/redhat/6/x86_64/cdh/4.1.1/或http://archive. cloudera.com/cdh4/redhat/6/x86_64/cdh/4.1.2/
- 決定SSH 的權限及存取方式。決定SSH 的權限及存取方式。 偷懶一點就可以用root 身份並給密碼。偷懶一點就可以用root 身份並給密碼。 但比較好的做法是把ssh key 先放到所有的機器上。但比較好的做法是把ssh key 先放到所有的機器上。 如果不用root 賬號就要確定指定的user 有不需要打密碼就能sudo 的權限。如果不用root 帳號就要確定指定的user 有不需要打密碼就能sudo 的權限。
進入安裝程序進入安裝程序
安裝過程中可以點選Details看Cloudera Manager 正在執行的動作。安裝過程中可以點選Details看Cloudera Manager正在執行的動作。 每台機器都會先裝Cloudera Manager Agent 來設定及監控Hadoop services,再裝Oracle JDK 1.6.0_31 和所有Hadoop packages。每台機器都會先裝Cloudera Manager Agent 來設定及監控Hadoop services,再裝Oracle JDK 1.6.0_31 和所有Hadoop packages。
在安裝過程中難免會遇到失敗的狀況。在安裝過程中難免會遇到失敗的狀況。 這邊故意制造了一個會出錯的例子。這邊故意制造了一個會出錯的例子。
點選Details可以看錯誤訊息點選Details可以看錯誤訊息
以這個例子而言是Cloudera Manager Agent 啟動失敗。以這個例子而言是Cloudera Manager Agent 啟動失敗。 Console 上並沒有顯示所有的log,log 檔案在/var/log/cloudera-scm-agent/cloudera-scm-agent.out Console 上並沒有顯示所有的log,log 檔案在/var/log/cloudera-scm-agent/cloudera-scm-agent.out
- /usr/lib64/cmf/agent/src/cmf/agent.py:24: DeprecationWarning: the sha module is deprecated; use the hashlib module instead
- import sha
- /usr/lib64/cmf/agent/src/cmf/monitor/host/network_interfaces.py:11: DeprecationWarning: the sets module is deprecated
- from sets import Set
- [03/Nov/2012 21:27:37 +0000] 7692 MainThread agent ERROR Could not determine hostname or ip address; proceeding.
- Traceback (most recent call last):
- File "/usr/lib64/cmf/agent/src/cmf/agent.py", line 1204, in parse_arguments
- ip_address = socket.gethostbyname(fqdn)
- gaierror: [Errno -2] Name or service not known
- usage: agent.py [-h] [--agent_dir AGENT_DIR]
- [--agent_httpd_port AGENT_HTTPD_PORT] --package_dir
- PACKAGE_DIR [--supervisord_path SUPERVISORD_PATH]
- [--supervisord_httpd_port SUPERVISORD_HTTPD_PORT]
- [--standalone STANDALONE] [--master MASTER]
- [--environment ENVIRONMENT] [--host_id HOST_ID]
- [--disable_supervisord_events] [--disable_eager_heartbeats]
- --hostname HOSTNAME --ip_address IP_ADDRESS [--use_tls]
- [--client_key_file CLIENT_KEY_FILE]
- [--client_cert_file CLIENT_CERT_FILE]
- [--verify_cert_file VERIFY_CERT_FILE]
- [--client_keypw_file CLIENT_KEYPW_FILE] [--logfile LOGFILE]
- [--optional_token] [--clear_agent_dir]
- agent.py: error: argument --hostname is required
- [03/Nov/2012 21:27:37 +0000] 7692 Dummy-1 agent INFO Stopping agent...
這個錯誤是因為在/etc/hosts 里IP/hostname 的對應不正確,修好之后再點選Retry 。這個錯誤是因為在/etc/hosts里IP/hostname的對應不正確,修好之后再點選Retry 。 Cloudera Manager 會先把之前的所有操作rollback,回復到初始狀態之后才重裝。 Cloudera Manager 會先把之前的所有操作rollback,回復到初始狀態之后才重裝。
- 三台機器都安裝成功三台機器都安裝成功
- 接下來會做所有機器的檢查,項目包括接下來會做所有機器的檢查,項目包括
- 網絡設定網路設定
- 各機器的系統時間是否同步。各機器的系統時間是否同步。 這部分容易被忽略但是很重要,如果沒同步,Hadoop/HBase/Kerberos Authentication 會發生很多奇怪的狀況而且難debug這部分容易被忽略但是很重要,如果沒同步,Hadoop/HBase/Kerberos Authentication 會發生很多奇怪的狀況而且難debug
- Hadoop users/groups 權限及個數是否相同 Hadoop users/groups 權限及個數是否相同
- HDFS 的設定 HDFS 的設定
- 機器上安裝的版本機器上安裝的版本
- 顯示檢查的結果顯示檢查的結果
- 這是所有機器的列表。這是所有機器的列表。 點選Host Inspector可以重做一次上面所說的檢查。點選Host Inspector可以重做一次上面所說的檢查。
在View Columns選擇Physical Attributes可以切換看CPU/Memory/Disk 的使用狀況在View Columns選擇Physical Attributes可以切換看CPU/Memory/Disk的使用狀況
4. 新增cluster 及啟動Hadoop services 4.新增cluster及啟動Hadoop services
- 機器都裝好之后就可以進Services tab,選擇Add Cluster機器都裝好之后就可以進Services tab,選擇Add Cluster
- 這邊選擇要加入這個cluster 的機器。這邊選擇要加入這個cluster 的機器。 因為這個環境是新裝的,所以直接用Use Only Currently Managed Hosts就可以了因為這個環境是新裝的,所以直接用Use Only Currently Managed Hosts就可以了
- 選擇要啟動的CDH 版本及services。選擇要啟動的CDH 版本及services。 為了測試方便,只選了HDFS 和MRv1 兩個services。為了測試方便,只選了HDFS 和MRv1 兩個services。 決定之后不要急着按Continue ,而是要選Inspect Role Assignments做一些微調決定之后不要急着按Continue ,而是要選Inspect Role Assignments做一些微調
- 這個頁面會顯示Cloudera Manager 幫你啟動services 的詳細設定。這個頁面會顯示Cloudera Manager 幫你啟動services 的詳細設定。 以這個例子而言,hadoop-master 可以把DataNode 和TaskTracker 的選項拿掉。以這個例子而言,hadoop-master 可以把DataNode 和TaskTracker 的選項拿掉。
- 再來是最基本啟動services 會用到的設定,細部設定頁面后面會說明。再來是最基本啟動services 會用到的設定,細部設定頁面后面會說明。
- 因為是新的cluster,會先做HDFS format,啟動HDFS services,在HDFS 上建立tmp 目錄,啟動MapReduce services,及部屬client 的設定因為是新的cluster,會先做HDFS format,啟動HDFS services,在HDFS 上建立tmp 目錄,啟動MapReduce services,及部屬client 的設定
- 顯示所有services 的執行狀況顯示所有services 的執行狀況
- 點選hdfs1>Configuration會列出所有細部的設定,Cloudera Manager 會依機器的規格而給出一些建議值。點選hdfs1>Configuration會列出所有細部的設定,Cloudera Manager會依機器的規格而給出一些建議值。 新手也可以參考這個頁面了解有多少參數可以設定,及其意義。新手也可以參考這個頁面了解有多少參數可以設定,及其意義。 所有services 的設定方式都是由Configuration tab 進入。所有services的設定方式都是由Configuration tab進入。
執行環境執行環境
CentOS 6.3 CentOS 6.3
JDK 1.6.0_37 JDK 1.6.0_37
Cloudera Manager 4.1 Cloudera Manager 4.1
Cloudera CDH4.1.2 Cloudera CDH4.1.2
參考數據參考資料
Cloudera Manager 4.1 Free Edition Documentation Cloudera Manager 4.1 Free Edition Documentation