Cloudera簡介和安裝部署概述

最近作者在研究Cloudera,並且在自己的虛擬機集羣安裝部署成功,所以在此做個分享,幫助大家儘快構建自己的Cloudera環境並運用起來。文章將會對Cloudera以及其安裝時涉及到的組件做一個簡單的介紹,並把官方文檔中介紹的3種安裝部署方式做一個概要的說明。

Cloudera簡介

爲了構建一個以數據爲驅動的業務場景,我們需要一個強大的管理工具去統一併安全地管理我們的業務數據,所以Cloudera做爲一個強大的數據中心管理工具爲此孕育而生。Cloudera不光提供了自己衍化重新封裝的市場領先並100%開源的商業化Apache Hadoop發行版本(CDH, Cloudera’s Distribution including Apache Hadoop)和相關的組件,其中包括了各類安全高效的企業級數據管理工具,如Hive, HBase,Oozie, Zookeeper等。 Hadoop是Apache(開源web服務器軟件基金會)下的大數據開源項目,許多商業公司會在Apache Hadoop的基礎上重新開發成商業版本,Cloudera公司就是其中之一,最近在維護的兩個Hadoop版本分別是CDH4和CDH5。Hadoop使用分佈式的思想存儲,計算和分析數據,它允許多個數據分析計算任務同時作用在同一個數據塊上並在集羣上進行分佈式計算,以此來進行超大規模數據的處理。Hadoop是大數據處理框架的鼻祖之一,同時Cloudera公司的Hadoop版本CDH也是目前使用最廣泛的Hadoop商業版本。從廣泛意義來說,CDH是Cloudera發佈的一個自己封裝的商業版軟件發行包,裏面不僅包含了Cloudera的商業版Hadoop,同時CDH中也包含了各類常用的開源數據處理存儲框架,如Spark,Hive,HBase等。

Cloudera作爲一個強大的商業版數據中心管理工具,提供了各種能夠快速穩定運行的數據計算框架,如Apache Spark;使用Apache Impala做爲對HDFS,HBase的高性能SQL查詢引擎;也帶了Hive數據倉庫工具幫助用戶分析數據; 用戶也能用Cloudera管理安裝HBase分佈式列式NoSQL數據庫;Cloudera還包含了原生的Hadoop搜索引擎以及Cloudera Navigator Optimizer去對Hadoop上的計算任務進行一個可視化的協調優化,提高運行效率;同時Cloudera中提供的各種組件能讓用戶在一個可視化的UI界面中方便地管理,配置和監控Hadoop以及其它所有相關組件,並有一定的容錯容災處理;Cloudera作爲一個廣泛使用的商業版數據中心管理工具更是對數據的安全決不妥協!

Cloudera主要發佈了3個類型的產品。
這裏寫圖片描述

QuickStarts產品是提供了不同的虛擬機鏡像安裝文件,裏面已經提前安裝和設置好了所有的Cloudera環境和相關組件,包括CDH,Cloudera Manager,Cloudera Impala,Cloudera Search等。其中對於集羣版本選擇QuickStart Docker,而單節點版本選擇QuickStart VM;這些已經預裝好所有組件以及環境的虛擬機鏡像文件能幫助用戶快速地測試和學習Cloudera。
這裏寫圖片描述

Cloudera Manager產品則是着重於幫助大家管理自己的CDH集羣,通過Cloudera Manager統一的UI界面來快速地自動配置和部署CDH和其相關組件,同時Cloudera Manager還提供了各種豐富的可自定義化的監視診斷和報告功能,集羣上統一的日誌管理功能,統一的集羣配置管理和實時配置變更功能,多租戶功能,高可用容災部署功能和自動恢復功能等, 方便企業統一管理和維護自己的數據中心。Cloudera Manager產品也是我們主要的安裝內容和介紹對象。它細分爲免費的Express版本和功能完全並提供衆多增值服務的收費版本Enterprise。QuickStarts和Cloudera Manager都屬於是Cloudera Enterprise產品,

Cloudera Director是Cloudera Enterprise 5.2 發佈時推出的第三個Cloudera產品,它的主要作用就是提供一個統一的管理和監視中心方便用戶能在雲服務提供商的服務器上部署CDH和其相關組件,並維護它們。目前Cloudera Director支持的雲服務提供商包括亞馬遜的AWS,微軟的Azure, 谷歌的Google Cloud Platform等。至於對國內阿里雲的支持程度作者暫時還沒有進行了解。
這裏寫圖片描述

圖片來自:http://blog.cloudera.com/blog/2014/10/inside-cloudera-director/

Cloudera Manager的安裝

Cloudera Manager可以說是Cloudera系列產品和組件的核心,它負責統一配置管理CDH集羣,基本上本篇文章都是圍繞CM的安裝部署來展開的,然後再通過CM去安裝CDH及其其它相關組件。
這裏寫圖片描述

圖片來自:http://www.cloudera.com/documentation/enterprise/latest/topics/cm_intro_primer.html#concept_wfj_tny_jk

由上面的結構圖可知,Cloudera Manager的核心是Cloudera Manager Server。CM Server集成了Admin Console Web Server,提供了統一的UI和API方便用戶和集羣上的CDH以及其它服務進行交互,並實施監控和診斷等;CM Server還負責安裝配置CDH和其相關的服務軟件,啓動停止服務,維護集羣中各個節點服務器以及上面運行的進程。

CM Server主要由下面幾個組件組成:
- Cloudera Manager Agent,安裝在集羣的所有節點上,負責啓動和殺死各個CM管理的服務進程,解壓和安裝CM管理的服務,自動配置,通過心跳機制監視集羣服務器狀態(默認每15秒Agent發送心跳給CM Server)等。
- Management Service,主要是負責集羣中各種服務的監視,通知,報告等功能。
- Database,內置數據庫或者使用用戶自定義的外部數據庫保存CM的配置信息和監控信息。
- Cloudera Repository
- Clients,web-based的UI界面方便用戶和CM Server進行交互,同時還提供了API供用戶自定義Cloudera Manager程序。

本文中介紹的安裝方式主要建立在CentOS6.X操作系統上。
CM的部署主要是安裝以下幾個組件:
- Oracle的Open JDK
- Cloudera Manager Server 和 Agent
- 數據庫
- CDH和要使用的各個組件

Cloudera官方提供了3種主要的安裝方式,大家可以根據自己的實際情況選擇合適的方式。

PATH A - 使用Cloudera Manager Installer安裝CM,然後再通過CM自動部署Oracle JDK,Embedded PostgreSQL,Cloudera Manager Agent,CDH和相關組件

PATH A的安裝只適合用作對Cloudera快速的學習和測試,並不適用於實際生產環境的部署,因爲它並不適合集羣的橫向擴容並且集羣增長的時候還可能需要做數據遷移。

集羣服務器準備

準備至少3臺CentOS6.X的服務器,因爲Zookeeper要求至少3臺以上奇數的服務器才能啓動。接着配置3臺服務器之間的SSH免密登錄,因爲HDFS服務器之前的通信和服務的啓動都是通過SSH的方式來進行。SSH免密登錄的簡單配置可以通過以下的方式:

#安裝ssh-client
$yum install ssh-client

#在要進行免密登錄的客戶機上運行下面的命令,有提示時全部按回車就可以
$ssh-keygen 

#這裏的IP地址輸入的是要遠程免密登錄的服務器IP地址
$ssh-copy-id  192.168.1.12 

集羣中每個服務器都需要關閉防火牆

$service iptables stop

關閉SELinux文件訪問控制系統,修改/etc/selinux/config 配置文件中的”SELINUX=enforcing”爲”SELINUX=disabled” 並重啓操作系統。

數據庫的安裝

Cloudera Manager需要外部的數據庫存儲一些元數據信息,配置信息,系統和任務的運行信息等。在PATH A的方式下,Cloudera Manager Installer會自動安裝內置的PostgreSQL數據庫。當然用戶也可以安裝其它的數據庫並配置成當前CM使用的數據庫。

單用戶模式配置

如果生產環境中的集羣服務器不支持使用root用戶,CM5.3以後推出了Single User Mode,可以讓CM使用用戶自定義的系統用戶和用戶組。本文中就不做詳細介紹,默認使用root用戶。

Python環境安裝

CM需要運行在Python環境下,在CentOS6.X版本中,需要安裝Python2.6來啓動Cloudera Manager。Python環境的安裝在CentOS系統中可以通過以下命令來進行安裝
$yum install python26
不過建議安裝之前檢查自己的系統,因爲默認CentOS中已經預裝好Python環境了。

yum源的配置

在PATH A的安裝方式下,主要使用yum去安裝各個組件和依賴包,所以要保證網絡的暢通以及能接入archive.cloudera.com地址。如果系統中自帶的默認的yum源無法解析,大家可以去下載一份阿里雲源。

#備份系統默認的yum源
$mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup

#下載並將yum源替換成阿里雲
$wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-6.repo
安裝Oracle JDK

集羣上所有的機器都需要安裝JDK環境,默認Cloudera Manager Installer和Cloudera Manager都會自動在所有節點安裝JDK環境,當然用戶也可以選擇自己手動配置JDK環境,這裏我就不贅述了。

下載和安裝Cloudera Manager Installer

用戶可以進入Cloudera Manager產品頁面,選擇想要安裝的Cloudera Manager版本並在頁面中sign in和同意相應的協議後就能看到下載Cloudera Manager Installer的鏈接,並通過它去安裝Cloudera Manager Server。同時我們可以看到Cloudera Manager Installer實際上就是一個*.bin文件,*.bin文件就是把*.sh文件和rpm安裝包或者*.sh文件和zip包等封裝成bin。當運行bin文件的時候就是使用*.sh腳本把zip解壓,或者安裝rpm包,或者使用yum安裝軟件的過程。

#去到你想要安裝Cloudera Manager Server的目錄中,並下載CM Installer
$wget https://archive.cloudera.com/cm5/installer/latest/cloudera-manager-installer.bin

#給bin文件執行權限
$ chmod u+x cloudera-manager-installer.bin

#執行bin文件從網絡上安裝Cloudera Manager Server
$ sudo ./cloudera-manager-installer.bin

Cloudera Manager Installer開始執行後將會順序完成以下幾個任務
- 安裝Oracle JDK和Cloudera Manager repository文件
- 安裝Cloudera Manager Server 和 內置的PostgreSQL數據庫
- 運行Cloudera Manager Server 和 內置的PostgreSQL數據庫

在使用CM Installer安裝的過程中需要下載Cloudera Manager Daemons的rpm安裝包,必須先安裝了CM Daemons才能運行CM Server,大概有500多M,會經常中斷下不下來,建議大家可以在一個穩定的網絡環境下先下下來,然後手動安裝。

$yum localinstall –-nogpgcheck  cloudera-manager-daemons-5.8.1-1.cm581.p0.7.el6.x86_64.rpm.rpm

Cloudera Manager Daemons的安裝包地址:http://archive.cloudera.com/cm5/redhat/6/x86_64/cm/5/RPMS/x86_64/cloudera-manager-daemons-5.8.1-1.cm581.p0.7.el6.x86_64.rpm

整個Installer安裝過程的日誌在:/var/log/cloudera-manager-installer/ 目錄下可以找到

登錄Cloudera Manager Admin Console

當Cloudera Manager Installer安裝配置完Cloudera Manager Server,以及CM Server所使用的內置數據庫後,Installer會啓動cloudera-scm-server服務。這時就可以通過http://localhost:7180 登錄CM網頁版的管理中心,默認用戶名和密碼都是admin,接着就可以通過CM管理中心自動安裝配置CDH和相關服務。

使用CM自動安裝CDH和相關組件

登錄進去Admin Console後,在UI界面選擇CDH安裝方式的頁面,只能選擇使用Parcels或者Packages其中一種方式進行安裝,如果之前已經手動安裝了CDH以及其它組件的Packages,那麼就無法使用parcel的方式進行安裝。parcel是一個序列化後的二進制打包文件,附帶着編程文件和一些元數據文件,是官方推薦使用的CDH安裝方式之一。
可以指定從本地的parcel repository中安裝或者遠程連接parcel URL進行安裝。這裏作者選擇使用本地的parcel repository進行安裝。先從https://archive.cloudera.com/cdh5/parcels/5/中下載CDH的parcel包,主要是下載CDH-5.8.0-1.cdh5.8.0.p0.42-el6.parcel,CDH-5.8.0-1.cdh5.8.0.p0.42-el6.parcel.sha1,manifest.json這3個文件,然後把這些文件放入CM Server節點默認的parcel路徑中/opt/cloudera/parcel-repo,最後在Admin Console中選擇parcel安裝的方式。

後續只要根據Admin Console的界面指引選擇符合自己需求的配置,完成安裝就可以了。CM Server會幫助用戶完成絕大多數的配置。安裝完成後可以通過在瀏覽器中輸入http://Your_CM_Server_IP:50070 驗證是否能打開HDFS控制檯,如果是則證明安裝成功。

PATH B - 使用yum,或者apt-get包管理工具或者Cloudera Parcels的方式下載安裝Cloudera Manager Server,Cloudera Manager Agent,Oracle JDK,CDH以及其它服務。

集羣服務器準備

準備至少3臺CentOS6.X的服務器,因爲Zookeeper要求至少3臺以上奇數的服務器才能啓動。接着配置3臺服務器之間的SSH免密登錄,因爲HDFS服務器之前的通信和服務的啓動都是通過SSH的方式來進行。SSH免密登錄的簡單配置可以通過以下的方式:

#安裝ssh-client
$yum install ssh-client

#在要進行免密登錄的客戶機上運行下面的命令,有提示時全部按回車就可以
$ssh-keygen 

#這裏的IP地址輸入的是要遠程免密登錄的服務器IP地址
$ssh-copy-id  192.168.1.12 

集羣中每個服務器都需要關閉防火牆

$service iptables stop

關閉SELinux文件訪問控制系統,修改/etc/selinux/config 配置文件中的”SELINUX=enforcing”爲”SELINUX=disabled” 並重啓操作系統。

單用戶模式配置

如果生產環境中的集羣服務器不支持使用root用戶,CM5.3以後推出了Single User Mode,可以讓CM使用用戶自定義的系統用戶和用戶組。本文中就不做詳細介紹,默認使用root用戶。

Python環境安裝

CM需要運行在Python環境下,在CentOS6.X版本中,需要安裝Python2.6來啓動Cloudera Manager。Python環境的安裝在CentOS系統中可以通過以下命令來進行安裝
$yum install python26
不過建議安裝之前檢查自己的系統,因爲默認CentOS中已經預裝好Python環境了。

數據庫的安裝

Cloudera Manager需要外部的數據庫存儲一些元數據信息,配置信息,系統和任務的運行信息等。在PATH B的方式下,用戶需要自己安裝生產環境的數據庫並配置成Cloudera Manager和Hive Metadata所使用的庫。
當安裝完數據庫後,可以通過以下代碼設置CM Server使用自定義的生產環境數據庫

$/usr/share/cmf/schema/scm_prepare_database.sh database-type [options] database-name username password

以上代碼執行後會順序創建CM Server數據庫的配置文件,並指定特定數據庫以及特定的用戶名和密碼爲CM Server使用的存儲數據庫環境。
接着需要下載數據庫的連接驅動包,如Mysql的驅動包配置如下:

$tar zxvf mysql-connector-java-5.1.31.tar.gz
$sudo cp mysql-connector-java-5.1.31/mysql-connector-java-5.1.31-bin.jar /usr/share/java/mysql-connector-java.jar

剩下就根據實際所使用的服務組件配置數據庫和連接驅動包,如Hive Metastore,Sqoop等

設置Cloudera Manager Repository環境

Cloudera官方推薦使用yum,apt-get或者zypper等包管理工具來安裝CM以及其相關的組件。和PATH A使用bin自動化安裝CM Server並自動配置內置數據庫的方式不同的是,PATH B中使用包管理工具安裝CM Server,並且用戶需要自己配置生產環境的數據庫。
首先,需要下載Cloudera Manager的Repository文件,並拷貝到/etc/yum.repos.d/目錄中作爲yum源

$cd /etc/yum.repos.d/
$wget https://archive.cloudera.com/cm5/redhat/5/x86_64/cm/cloudera-manager.repo
安裝Oracle JDK和Cloudera Manager
#安裝Open JDK
$ sudo yum install oracle-j2sdk1.7

#安裝Cloudera Manager Server和啓動它需要的守護進程
$ sudo yum install cloudera-manager-daemons cloudera-manager-server
手動安裝Cloudera Manager Agent

CM Agent負責啓動和殺死各個CM管理的服務進程,解壓和安裝CM管理的服務,自動配置,通過心跳機制監視集羣服務器狀態(默認每15秒Agent發送心跳給CM Server)等

#集羣上所有的節點包括主節點都需要安裝CM Agent
$ sudo yum install cloudera-manager-agent cloudera-manager-daemons

接着需要在集羣的所有節點上設置/etc/cloudera-scm-agent/config.ini文件中server-host和server-port兩個屬性,是CM Agent連接的CM Server進程所運行的服務器IP和端口。

手動安裝CDH5和相關的組件

首選把CDH的RPM安裝包下載下來,下載地址爲:https://archive.cloudera.com/cdh5/one-click-install/redhat/7/x86_64/cloudera-cdh-5-0.x86_64.rpm?_ga=1.217368213.282215394.1469549288
然後輸入如下命令進行安裝

#安裝CDH
$sudo yum --nogpgcheck localinstall cloudera-cdh-5-0.x86_64.rpm 

#安裝CDH相關的其它組件,如Hive,Impala,Spark等
$ sudo yum clean all
$ sudo yum install avro-tools crunch flume-ng hadoop-hdfs-fuse hadoop-hdfs-nfs3 hadoop-httpfs hadoop-kms hbase-solr hive-hbase hive-webhcat hue-beeswax hue-hbase hue-impala hue-pig hue-plugins hue-rdbms hue-search hue-spark hue-sqoop hue-zookeeper impala impala-shell kite llama mahout oozie pig pig-udf-datafu search sentry solr-mapreduce spark-core spark-master spark-worker spark-history-server spark-python sqoop sqoop2 whirr
啓動Cloudera Manager Server和Agents
#在主節點上啓動 Cloudera Manager Server
$ sudo service cloudera-scm-server start

#在集羣的所有節點上輸入下面的命令啓動CM Agent
sudo service cloudera-scm-agent start
登錄Cloudera Manager Admin Console

當Cloudera Manager Installer安裝配置完Cloudera Manager Server,以及CM Server所使用的內置數據庫後,Installer會啓動cloudera-scm-server服務。這時就可以通過http://localhost:7180 登錄CM網頁版的管理中心,默認用戶名和密碼都是admin,接着就可以通過CM管理中心自動安裝配置CDH和相關服務(如果之前沒有選擇手動的方式而是選擇了由CM安裝的方式)。

使用CM自動安裝CDH和相關組件

登錄進去Admin Console後,在UI界面選擇CDH安裝方式的頁面,只能選擇使用Parcels或者Packages其中一種方式進行安裝,如果之前已經手動安裝了CDH以及其它組件的Packages,那麼就無法使用parcel的方式進行安裝。parcel是一個序列化後的二進制打包文件,附帶着編程文件和一些元數據文件,是官方推薦使用的CDH安裝方式之一。
可以指定從本地的parcel repository中安裝或者遠程連接parcel URL進行安裝。這裏作者選擇使用本地的parcel repository進行安裝。先從https://archive.cloudera.com/cdh5/parcels/5/中下載CDH的parcel包,主要是下載CDH-5.8.0-1.cdh5.8.0.p0.42-el6.parcel,CDH-5.8.0-1.cdh5.8.0.p0.42-el6.parcel.sha1,manifest.json這3個文件,然後把這些文件放入CM Server節點默認的parcel路徑中/opt/cloudera/parcel-repo,最後在Admin Console中選擇parcel安裝的方式。

後續只要根據Admin Console的界面指引選擇符合自己需求的配置,完成安裝就可以了。CM Server會幫助用戶完成絕大多數的配置。安裝完成後可以通過在瀏覽器中輸入http://Your_CM_Server_IP:50070 驗證是否能打開HDFS控制檯,如果是則證明安裝成功。

PATH C - 使用Tar包的方式安裝Cloudera Manager Server,Cloudera Manager Agent,CDH,JDK

PATH C的安裝方式適合在離線的環境下進行Cloudera各個組件的安裝,直接解壓tar包,手動創建文件夾並將各個組件的tar包解壓內容放置在這些創建的指定目錄下,最後手動進行各項配置文件的配置,創建用戶,數據庫驅動包安裝,數據庫建表等。因爲篇幅有限,作者將專門撰寫一篇Cloudera的離線安裝文檔進行描述,就不在此進行詳細描述了。

Cloudera Manager和CDH等組件部署成功後就可以見到如下的界面,可以看出來CM提供了許多強大的監控,報告和診斷服務,而且作者因爲只是在筆記本電腦上用虛擬機來模擬集羣,也沒做任何優化配置,可以看多這個集羣的健康狀態非常差。後續作者會繼續深入學習Cloudera,並不定期分享一些學習心得。
這裏寫圖片描述

Toubleshooting

作者在部署成功沒多久,整個Cloudera Manager Server就掛了。後來查看/var/log/cloudera-scm-server/loudera-scm-server.log 時發現主節點的JVM一直在做Full GC內存回收,並且“Stop the World”長達一分鐘以上,明顯是因爲內存不夠。這是因爲作者使用的是虛擬機來部署,每個VM只分配了1GB的內存,後來給主節點分配了至少2GB的內存,問題就解決了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章