Fenriswolf 程式筆記

奮利斯狼的地盤,小綿羊勿入

Cloudera Manager Free Edition 4.1 和 CDH 4.1.2 簡易安裝教學

安裝及管理一個大的 Hadoop cluster 並不是只要下載 tar files 解壓縮並啟動 services 這麼簡單。後續有非常多設定、監控等麻煩的事要處理。Cloudera Manager 就整合了一系列的功能讓系統管理者能更方便的維護 Hadoop。Free Edition 的限制如下

  • 只支援 50 個 nodes
  • 沒有設定的版本控管
  • 沒有支援 LDAP/Kerberos Authentication
  • 沒有進階的 services 監控選項,如 health check
  • 沒有 Logs 搜尋功能

更多說明在 How to Upgrade the Free Edition to Cloudera Manager 可以找到。但是對小型的 cluster 或是新手想試試怎麼裝 Hadoop 很有幫助。

1. 前置作業
Requirements for Cloudera Manager 裡有提到 Cloudera Manager 所支援的所有作業系統,包括 RHEL, CentOS, SUSE, Ubuntu 等等。這篇文章會以 CentOS 6.3 為例子。

  • 官方建議 /var 至少要留 5G 的空間。以個人經驗,/usr/lib 至少要 550M 以上,所有 Hadoop 相關的 packages 都會裝在這個位置
  • RAM 建議 4G,不過本篇所用的 VMs 只給了 2G
  • 如果使用 Cloudera 所提供的 yum repository,要確認網路能通及 yum proxy 設定正確
  • DNS 設定要正確,或是用 /etc/hosts 的設定來取代 DNS。hostname 命名裡不能有 _ 字元,不然啟動 Hadoop services 時會失敗。至於要不要給 domain name 則見人見智。以正式環境來說有設定會比較好。以下是這個範例所使用的設定
    192.168.1.110   hadoop-master
    192.168.1.111   hadoop-worker01
    192.168.1.112   hadoop-worker02
    
  • Cloudera Manager Server 可用 SSH 連到所有需要安裝 Hadoop 的機器
  • 確認防火牆不會阻擋所有的操作。以 internal Hadoop 來說一般會把防火牆關掉或反安裝以避免一些使用上的問題。如果對安全性控管有高度要求的話,可以參考 Configuring Ports for Cloudera Manager Free Edition 來開放需要的 ports
  • 確認 SELinux 不會阻擋所有的操作,建議是直接關掉
  • 確認不會更動到 Cloudera 會使用的 users/groups 權限。可參考 Requirements for Cloudera Manager 最下方的清單

 
2. 安裝 Cloudera Manager Server
Cloudera Manager Free Edition Download 下載最新版的 cloudera-manager-installer.bin 並執行。
cloudera-manager-installer.bin 會需要先安裝 JDK,如果系統沒有的話會自動安裝 Cloudera 建議的版本 Oracle JDK 1.6.0_31。以這篇文章所用的 VMs 都已經裝了 Oracle JDK 1.6.0_37,則此步驟會被省略。
接下來就可以用 http://cms:7180 打開 admin console。預設的帳號密碼是 admin/admin。Cloudera Manager Server 對權限控管並沒有做的很好,只有一個 admin 的帳號。如果有安全性考量請自行修改密碼。
cloudera-manager-01

如果 admin console 無法正常運作,請看 /var/log/cloudera-scm-server 下的 log 訊息。解決問題後重啟 service

service cloudera-scm-server restart

 
3. 安裝 Hadoop

  • 進入的第一頁會顯示你正在用 Free Edition,直接把這個視窗關掉或點選 Just Install the Latest Free Edition
    cloudera-manager-02
  •  

  • 第二頁會顯示 Cloudera Manager Server 會安裝的所有 packages。這部分除了 Impala 之外,其他的 packages 無法選擇不裝,MapReduce 也會裝 MRv1 及 MRv2,所以會吃掉系統至少 550M 以上的硬碟空間。畫面上沒有顯示,但因為 package 相依性的關係,Bigtop 和 Pig 也是會被裝進系統裡的。
    cloudera-manager-03
  •  

  • 加入要安裝的機器名稱或 IP。可以用 pattern 來指定多台機器。以這個範例而言會有 192.168.1.110、192.168.1.111、192.168.1.112 三台機器。
    cloudera-manager-04
  •  

  • 確認所有的機器已經在名單中,而且 SSH 正常運作
    cloudera-manager-05
  •  

  • Cloudera Manager 4.1 可以支援 CDH3 或 CDH4。這邊是直接用最新版。
    Impala 1.0 Beta 已經出了,但是現在的測試並不會用到,所以選 None。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。所以要確認是否連的到 archive.cloudera.com。在 production 的環境不建議直接使用 Cloudera 的 yum repository,因為 Cloudera 版本的變動很快但 yum repository 只會放最新版,所以有可能造成機器裝的版號不一致。例如舊機器裝到 4.1.1,但新機器裝到 4.1.2。這有兩種解法

    1. 由 IT 建立一個 private yum repository 並準備好所有需要的 packages。
    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/

    cloudera-manager-06

  •  

  • 決定 SSH 的權限及存取方式。偷懶一點就可以用 root 身份並給密碼。但比較好的做法是把 ssh key 先放到所有的機器上。如果不用 root 帳號就要確定指定的 user 有不需要打密碼就能 sudo 的權限。
    cloudera-manager-07
  •  

  • 進入安裝程序
    cloudera-manager-08
     
    安裝過程中可以點選 Details 看 Cloudera Manager 正在執行的動作。每台機器都會先裝 Cloudera Manager Agent 來設定及監控 Hadoop services,再裝 Oracle JDK 1.6.0_31 和所有 Hadoop packages。
    cloudera-manager-09
     
    在安裝過程中難免會遇到失敗的狀況。這邊故意製造了一個會出錯的例子。
    cloudera-manager-10
    點選 Details 可以看錯誤訊息
    cloudera-manager-11
    以這個例子而言是 Cloudera Manager Agent 啟動失敗。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。Cloudera Manager 會先把之前的所有操作 rollback,回復到初始狀態之後才重裝。

  •  

  • 三台機器都安裝成功
    cloudera-manager-12
  •  

  • 接下來會做所有機器的檢查,項目包括
    • 網路設定
    • 各機器的系統時間是否同步。這部分容易被忽略但是很重要,如果沒同步,Hadoop/HBase/Kerberos Authentication 會發生很多奇怪的狀況而且難 debug
    • Hadoop users/groups 權限及個數是否相同
    • HDFS 的設定
    • 機器上安裝的版本

    cloudera-manager-13

  •  

  • 顯示檢查的結果
    cloudera-manager-14
  •  

  • 這是所有機器的列表。點選 Host Inspector 可以重做一次上面所說的檢查。
    cloudera-manager-15
    View Columns 選擇 Physical Attributes 可以切換看 CPU/Memory/Disk 的使用狀況
    cloudera-manager-26

 
4. 新增 cluster 及啟動 Hadoop services

  • 機器都裝好之後就可以進 Services tab,選擇 Add Cluster
    cloudera-manager-25
  •  

  • 這邊選擇要加入這個 cluster 的機器。因為這個環境是新裝的,所以直接用 Use Only Currently Managed Hosts 就可以了
    cloudera-manager-16
  •  

  • 選擇要啟動的 CDH 版本及 services。為了測試方便,只選了 HDFS 和 MRv1 兩個 services。決定之後不要急著按 Continue,而是要選 Inspect Role Assignments 做一些微調
    cloudera-manager-17
  •  

  • 這個頁面會顯示 Cloudera Manager 幫你啟動 services 的詳細設定。以這個例子而言,hadoop-master 可以把 DataNode 和 TaskTracker 的選項拿掉。
    cloudera-manager-19
  •  

  • 再來是最基本啟動 services 會用到的設定,細部設定頁面後面會說明。
    cloudera-manager-20
  •  

  • 因為是新的 cluster,會先做 HDFS format,啟動 HDFS services,在 HDFS 上建立 tmp 目錄,啟動 MapReduce services,及部屬 client 的設定
    cloudera-manager-21
  •  

  • 顯示所有 services 的執行狀況
    cloudera-manager-22
  •  

  • 點選 hdfs1>Configuration 會列出所有細部的設定,Cloudera Manager 會依機器的規格而給出一些建議值。新手也可以參考這個頁面了解有多少參數可以設定,及其意義。所有 services 的設定方式都是由 Configuration tab 進入。
    cloudera-manager-23

 
 
執行環境
CentOS 6.3
JDK 1.6.0_37
Cloudera Manager 4.1
Cloudera CDH4.1.2
 
參考資料
Cloudera Manager 4.1 Free Edition Documentation

廣告

2012/12/06 - Posted by | Hadoop | , ,

2 則迴響 »

  1. 可以参考一下这个:http://sep10.com/posts/2014/05/20/cdh5-nn-ha/

    迴響 由 king | 2014/05/23 | 回應


發表迴響

在下方填入你的資料或按右方圖示以社群網站登入:

WordPress.com Logo

您的留言將使用 WordPress.com 帳號。 登出 / 變更 )

Twitter picture

您的留言將使用 Twitter 帳號。 登出 / 變更 )

Facebook照片

您的留言將使用 Facebook 帳號。 登出 / 變更 )

Google+ photo

您的留言將使用 Google+ 帳號。 登出 / 變更 )

連結到 %s

%d 位部落客按了讚: