十三、手把手帶你搭建Clouders Manager

@Author:Runsen

這是三月中搭建CDH的記錄,請不要轉載,謝謝

10.1 Clouders Manager

@Author:Runsen

由於Hadoop深受客戶歡迎,許多公司都推出了各自版本的Hadoop,也有一些公司則圍繞Hadoop開發產品。在Hadoop生態系統中,規模最大、知名度最高的公司則是Cloudera。Cloudera公司提供Cloudera Manager產品。

Cloudera Manager是一個擁有集羣自動化安裝、中心化管理、集羣監控、報警功能的一個工具(軟件),使得安裝集羣從幾天的時間縮短在幾個小時內,運維人員從數十人降低到幾人以內,極大的提高集羣管理的效率。Clouders Managerde 的服務的意義是 ‘Simple administration for Apache Hadoop",將hadoop安裝更簡單。

Clouders公司提供了Cloudera Express版本是免費版本和Cloudera Enterprise是付費版本。Clouders官方網站:https://www.cloudera.com/

10.1.1 CDH安裝前準備

CDH 英語全稱:Cloudera’s Distribution, including Apache Hadoop,是Hadoop衆多分支中的一種,由Cloudera維護,基於穩定版本的Apache Hadoop構建,並集成了很多補丁,可直接用於生產環境。

下面我們來搭建Cloudera公司的CDH大數據產品,我們還是三臺Centos7搭建CDH。注意搭建CDH,每臺服務器至少騰出20g硬盤內存

主機名 ip
node01 192.168.92.90
node02 192.168.92.90
node03 192.168.92.90

在上章,我們修改所有主機的/etc/hosts文件,配置ssh免密碼登錄和Java環境,安裝 CDH前,我們需要安裝NTP服務。NTP服務是爲了保證集羣中的每個節點的時間在同一個頻道上的服務。很多的時候,服務器存放不同地方存在時間誤差,由於我們是Vmware中搭建三臺Centos7,不存在時間誤差。同時,我們需要啓動apache2服務。

[root@node01 ~]# 安裝 Apache http服務
[root@node01 ~]# yum -y install httpd
[root@node01 ~]# systemctl start httpd
[root@node01 ~]# systemctl status httpd.service
[root@node01 ~]# 關閉selinux
[root@node01 ~]# vim /etc/selinux/config
##########
SELINUX=disabled
[root@node01 ~]# systemctl status ntpd.service
[root@node01 ~]# #硬件時間與系統時間一起同步
[root@node01 ~]# vim /etc/sysconfig/ntpd
##########
SYNC_HWCLOCK=yes
[root@node01 ~]# vim /etc/ntp/step-tickers
#0.centos.pool.ntp.org
192.168.92.90
[root@node01 ~]# #查看網關和掩碼
[root@node01 ~]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.92.2    0.0.0.0         UG    100    0        0 ens33
192.168.92.0    0.0.0.0         255.255.255.0   U     100    0        0 ens33

[root@node01 ~]# vim /etc/ntp.conf
# the administrative functions.
restrict 127.0.0.1
restrict -6::1
# Hosts on local network are less restricted.
restrict 192.168.92.2 mask 255.255.255.0 nomodify notrap
# 外部時間服務器不可用時,以本地時間作爲時間服務
server  127.127.1.0    
fudge   127.127.1.0 stratum 10

我們同樣也需要修改客戶端node02和node03的/etc/ntp.conf配置。

[root@node02 ~]# vim /etc/ntp.conf 
###########
restrict 127.0.0.1
restrict -6::1
restrict 192.168.92.2 mask 255.255.255.0 nomodify notrap
server 192.168.92.91
[root@node03 ~]# vim /etc/ntp.conf 
###########
restrict 127.0.0.1
restrict -6::1
restrict 192.168.92.2 mask 255.255.255.0 nomodify notrap
server 192.168.92.92

[root@node01]# #重啓服務
[root@node01]# systemctl restart ntpd.service
[root@node01]# #開機自啓
[root@node01]# chkconfig ntpd on
[root@node02]# systemctl restart ntpd.service
[root@node02]# chkconfig ntpd on
[root@node03]# systemctl restart ntpd.service
[root@node03]# chkconfig ntpd on

[root@node01 ~]# yum -y install httpd
[root@node01 ~]# vim /etc/httpd/conf/httpd.conf

10.1.2 下載CDH安裝包

CDH6.2.0安裝包下載地址:https://archive.cloudera.com/cdh6/6.2.0/parcels/


我們需要下載cdh6.2.0.p0.967373-el7.parcel.sha1cdh6.2.0.p0.967373-el7.parcelmanifest.json,將CDH安裝包上傳到/var/www/html/cloudera-repos/cdh6/6.2.0/parcels目錄下。

[root@node01 ~]# mkdir -p /var/www/html/cloudera-repos/cdh6/6.2.0/parcels
[root@node01 ~]# cd /var/www/html/cloudera-repos/cdh6/6.2.0/parcels
[root@node01 parcels]# wget https://archive.cloudera.com/cdh6/6.2.0/parcels/CDH-6.2.0-1.cdh6.2.0.p0.967373-el7.parcel.sha1
[root@node01 parcels]# # 將sha1重命名sha
[root@node01 parcels]# mv CDH-6.2.0-1.cdh6.2.0.p0.967373-el7.parcel.sha1  CDH-6.2.0-1.cdh6.2.0.p0.967373-el7.parcel.sha
[root@node01 parcels]# wget https://archive.cloudera.com/cdh6/6.2.0/parcels/manifest.json
[root@node01 parcels]# #下載parcel文件(較大,將近2GB),可以採用上傳的方法
[root@node01 parcels]# wget https://archive.cloudera.com/cdh6/6.2.0/parcels/CDH-6.2.0-1.cdh6.2.0.p0.967373-el7.parcel

10.1.3 下載CM安裝包

ClouderaManager下載地址:https://archive.cloudera.com/cm6/6.2.0/redhat7/yum/RPMS/x86_64/

我們需要下載x86_64目錄下所有rpm文件,將CM安裝包上傳到var/www/html/cloudera-repos/cm6/6.2.0/redhat7/yum/RPMS/x86_64目錄下,如果下載速度過慢,可以選擇將文件上傳到centos7

[root@node01 ~]# mkdir -p /var/www/html/cloudera-repos/cm6/6.2.0/redhat7/yum/RPMS/x86_64
[root@node01 ~]# cd /var/www/html/cloudera-repos/cm6/6.2.0/redhat7/yum/RPMS/x86_64
[root@node01 x86_64]# wget https://archive.cloudera.com/cm6/6.2.0/redhat7/yum/RPMS/x86_64/cloudera-manager-agent-6.2.0-968826.el7.x86_64.rpm
[root@node01 x86_64]# wget https://archive.cloudera.com/cm6/6.2.0/redhat7/yum/RPMS/x86_64/cloudera-manager-server-6.2.0-968826.el7.x86_64.rpm
[root@node01 x86_64]# wget https://archive.cloudera.com/cm6/6.2.0/redhat7/yum/RPMS/x86_64/cloudera-manager-server-db-2-6.2.0-968826.el7.x86_64.rpm
[root@node01 x86_64]# wget https://archive.cloudera.com/cm6/6.2.0/redhat7/yum/RPMS/x86_64/enterprise-debuginfo-6.2.0-968826.el7.x86_64.rpm
[root@node01 x86_64]# wget https://archive.cloudera.com/cm6/6.2.0/redhat7/yum/RPMS/x86_64/oracle-j2sdk1.8-1.8.0+update181-1.x86_64.rpm
[root@node01 x86_64]# wget https://archive.cloudera.com/cm6/6.2.0/redhat7/yum/RPMS/x86_64/cloudera-manager-daemons-6.2.0-968826.el7.x86_64.rpm

10.1.4 下載其他資源

(1)獲取cloudera-manager.repo

/var/www/html/cloudera-repos/cm6/6.2.0/redhat7/yum目錄下,獲取cloudera-manager.repo

[root@node01 yum]# pwd
/var/www/html/cloudera-repos/cm6/6.2.0/redhat7/yum
[root@node01 yum]# wget https://archive.cloudera.com/cm6/6.2.0/redhat7/yum/RPM-GPG-KEY-cloudera
[root@node01 yum]# wget https://archive.cloudera.com/cm6/6.2.0/redhat7/yum/cloudera-manager.repo
[root@node01 yum]# ls
cloudera-manager.repo  RPM-GPG-KEY-cloudera  RPMS

(2) 獲取allkeys.asc

/var/www/html/cloudera-repos/cm6/6.2.0 目錄下,獲取allkeys.asc

[root@node01 6.2.0]# pwd
/var/www/html/cloudera-repos/cm6/6.2.0
[root@node01 6.2.0]# wget https://archive.cloudera.com/cm6/6.2.0/allkeys.asc
[root@node01 6.2.0]# mv allkeys.asc /var/www/html/cloudera-repos/cm6/6.2.0
[root@node01 6.2.0]# ls
allkeys.asc  redhat7

(3)初始化repodata

/var/www/html/cloudera-repos/cm6/6.2.0/redhat7/yum/目錄下,初始化repodata,初始化repodata

[root@node01 yum]# pwd
/var/www/html/cloudera-repos/cm6/6.2.0/redhat7/yum
[root@node01 yum]# ls
cloudera-manager.repo  RPM-GPG-KEY-cloudera  RPMS
[root@node01 yum]# yum -y install createrepo
[root@node01 yum]# createrepo .
Workers Finished
Saving Primary metadata
Saving file lists metadata
Saving other metadata
Generating sqlite DBs
Sqlite DBs complete
[root@node01 yum]# ls
cloudera-manager.repo  repodata  RPM-GPG-KEY-cloudera  RPMS

這時候,我們訪問http://192.168.92.90/cloudera-repos/,頁面如10-3所示,說明搭建本地RPM源成功

10.1.5 設置yum配置

我們搭建本地RPM源後,需要對本地yum進行設置

[root@node01 ~]# 
wget http://192.168.92.90/cloudera-repos/cm6/6.2.0/redhat7/yum/cloudera-manager.repo -P /etc/yum.repos.d/
[root@node01 ~]# 
rpm --import http://192.168.92.90/cloudera-repos/cm6/6.2.0/redhat7/yum/RPM-GPG-KEY-cloudera
[root@node01 ~]# vim /etc/yum.repos.d/cloudera-manager.repo
##########
[cloudera-manager]
name=Cloudera Manager 6.2.0
baseurl=http://192.168.92.90/cloudera-repos/cm6/6.2.0/redhat7/yum/
gpgkey=http://192.168.92.90/cloudera-repos/cm6/6.2.0/redhat7/yum/RPM-GPG-KEY-cloudera
gpgcheck=1
enabled=1
autorefresh=0
type=rpm-md
#清除 yum 緩存
[root@node01 ~]# yum clean all 
[root@node01 ~]# yum update

我們同樣需要對node2和node3進行相同的操作,這樣可以進行yum install安裝cloudera-manager-agentcloudera-manager-daemons

10.1.6 安裝Cloudera Manager

下面我們安裝Cloudera Manager

[root@node01 ~]# yum install -y cloudera-manager-daemons cloudera-manager-agent cloudera-manager-server

[root@node02~]# yum install -y cloudera-manager-agent cloudera-manager-daemons
[root@node02~]# yum install -y cloudera-manager-agent cloudera-manager-daemons

在安裝完後,會自動在/opt/cloudera目錄下創建一個如下文件和文件夾:

[root@node01 ~]# cd /opt/cloudera/
[root@node01 cloudera]# ls
cm  cm-agent  csd  parcel-repo
[root@node02 cloudera]# ls
cm  cm-agent

接下來,我們修改agent配置文件,指定server_host

[root@node01 ~]# vim /etc/cloudera-scm-agent/config.ini
##########
[General]
# Hostname of the CM server.
server_host=192.168.92.90

最後,我們需要配置本地Parcel存儲庫,Cloudera Manager Server安裝完成後,進入到本地Parcel存儲庫目錄

[root@node01 ~]# cd /opt/cloudera/parcel-repo
[root@node01 parcel-repo]# wget http://192.168.92.90/cloudera-repos/cdh6/6.2.0/parcels/CDH-6.2.0-1.cdh6.2.0.p0.967373-el7.parcel
[root@node01 parcel-repo]# wget http://192.168.92.90/cloudera-repos/cdh6/6.2.0/parcels/manifest.json
[root@node01 parcel-repo]# sha1sum CDH-6.2.0-1.cdh6.2.0.p0.967373-el7.parcel | awk '{ print $1 }' > CDH-6.2.0-1.cdh6.2.0.p0.967373-el7.parcel.sha
[root@node01 parcel-repo]# ls
CDH-6.2.0-1.cdh6.2.0.p0.967373-el7.parcel  CDH-6.2.0-1.cdh6.2.0.p0.967373-el7.parcel.sha  manifest.json

10.1.7 創建對應的數據庫

Cloudera 軟件對應的數據庫列表如下:

如果只是先安裝 Cloudera Manager Server ,就如上圖10-4,只需要創建scm的數據庫,如果要安裝其他服務請順便也把數據庫創建好。

[root@node01 ~]# mysql -uroot -p
Enter password: 

mysql> CREATE DATABASE scm DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
Query OK, 0 rows affected, 1 warning (0.00 sec)

mysql> #順便把其他的數據庫也創建
mysql> CREATE DATABASE amon DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
mysql> CREATE DATABASE rman DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
mysql> CREATE DATABASE hue DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
mysql> #Hive、Impala等元數據庫
mysql> CREATE DATABASE metastore DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
mysql> CREATE DATABASE sentry DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
mysql> CREATE DATABASE nav DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
mysql> CREATE DATABASE navms DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
mysql> CREATE DATABASE oozie DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;

mysql> GRANT ALL ON scm.* TO 'scm'@'%' IDENTIFIED BY 'scm';
Query OK, 0 rows affected, 1 warning (0.00 sec)
mysql> GRANT ALL ON amon.* TO 'amon'@'%' IDENTIFIED BY 'amon';
Query OK, 0 rows affected, 1 warning (0.00 sec)
mysql> GRANT ALL ON rman.* TO 'rman'@'%' IDENTIFIED BY 'rman';
Query OK, 0 rows affected, 1 warning (0.00 sec)
mysql> GRANT ALL ON metastore.* TO 'hive'@'%' IDENTIFIED BY 'hive';
Query OK, 0 rows affected, 1 warning (0.00 sec)
mysql> GRANT ALL ON hue.* TO 'hue'@'%' IDENTIFIED BY 'hue';
Query OK, 0 rows affected, 1 warning (0.00 sec)
mysql> GRANT ALL ON sentry.* TO 'sentry'@'%' IDENTIFIED BY 'sentry';
Query OK, 0 rows affected, 1 warning (0.00 sec)
mysql> GRANT ALL ON nav.* TO 'nav'@'%' IDENTIFIED BY 'nav';
Query OK, 0 rows affected, 1 warning (0.00 sec)
mysql> GRANT ALL ON navms.* TO 'navms'@'%' IDENTIFIED BY 'navms';
Query OK, 0 rows affected, 1 warning (0.00 sec)
mysql> GRANT ALL ON oozie.* TO 'oozie'@'%' IDENTIFIED BY 'oozie';
Query OK, 0 rows affected, 1 warning (0.00 sec)
mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)
mysql> grant all on *.* to root@"%" Identified by "root";
Query OK, 0 rows affected, 1 warning (0.00 sec)

創建完畢數據庫,我們需要初始化數據庫。我們初始化scm數據庫前,需要在/usr/share/java添加Java連接mysql的jar包數據驅動

[root@node01 ~]# cd /usr/share/java
[root@node01 ~]# cd /usr/share/java
[root@node01 java]# wget https://dev.mysql.com/get/Downloads/Connector-J/mysql-connector-java-5.1.46.tar.gz

[root@node01 java]# mv mysql-connector-java-5.1.39-bin.jar mysql-connector-java.jar

我們主要使用的scm_prepare_database.sh腳本初始化數據庫,可以通過/opt/cloudera/cm/schema/scm_prepare_database.sh --help 獲取幫助

sudo /opt/cloudera/cm/schema/scm_prepare_database.sh [options] <databaseType> <databaseName> <databaseUser> <password>

下面我們初始化scm數據庫,出現All done,說明初始化scm數據庫成功。

[root@node01 ~]# /opt/cloudera/cm/schema/scm_prepare_database.sh -h localhost mysql scm scm scm
[main] DbCommandExecutor  INFO  Successfully connected to database.
All done, your SCM database is configured correctly!

10.1.8 啓動服務

下面,我們啓動Cloudera Manager Server服務

[root@node01 ~]# systemctl start cloudera-scm-server
[root@node01 ~]# systemctl status cloudera-scm-server
● cloudera-scm-server.service - Cloudera CM Server Service
   Loaded: loaded (/usr/lib/systemd/system/cloudera-scm-server.service; enabled; vendor preset: disabled)
   Active: active (running) since 一 2020-03-16 10:57:51 CST; 5s ago
 Main PID: 9612 (java)
    Tasks: 22
   CGroup: /system.slice/cloudera-scm-server.service
           └─9612 /usr/java/jdk1.8.0_231/bin/java -cp .:/usr/share/java/mysql-connector-java.jar:/usr/share/java/oracle-connector-j...

我們可以查看cloudera-scm-server.log,如果出現了WebServerImpl:com.cloudera.server.cmf.WebServerImpl: Started Jetty server.信息,說明Cloudera Manager管理控制檯已準備就緒,使用netstat -ntlp查看7180和7182端口是否開放,注意:啓動Cloudera Manager Server需要幾分鐘的時間。

[root@node01 ~]# tail -f /var/log/cloudera-scm-server/cloudera-scm-server.log
2020-03-16 11:01:50,433 INFO WebServerImpl:com.cloudera.server.cmf.WebServerImpl: Started Jetty server.
[root@node01 ~]# netstat -ntlp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name          
tcp        0      0 0.0.0.0:7180            0.0.0.0:*               LISTEN      5164/java           
tcp        0      0 0.0.0.0:7182            0.0.0.0:*               LISTEN      5164/java           

這時候,我們訪問http://192.168.92.90:7180,可以查看Cloudera Manager的登錄界面,如下圖10-5所示。

登錄Cloudera Manager Admin Console,默認賬號爲admin,密碼admin。我們登陸默認用戶名後,顯示如下圖10-6頁面,我們根據提示進行安裝即可:歡迎 ,Accept License 和Select Edition。

在選擇Select Edition,這一步選擇安裝的版本。Cloudera公司提供了三個版本,第一列爲Cloudera免費的快速體驗版;第二列爲Cloudera爲企業級試用版(免費試用60天);第三列是功能和服務最全的Cloudera企業版,是需要認證且收費的。Cloudera Express 和 Cloudera Enterprise 中的可用功能的完整列表,查看官方產品服務:https://www.cloudera.com/content/dam/www/marketing/resources/datasheets/cloudera-enterprise-datasheet.pdf.landing.html

這裏,我們選擇Cloudera免費的快速體驗版,當然在企業我們不會選擇免費的快速體驗版。如果後期功能不夠,或滿足不了需求,我們同樣可以更改Cloudera的企業版。

10.1.9 集羣搭建

選擇版本以後會出現第二個歡迎界面,這個是安裝集羣的歡迎頁,下面我們來搭建CDH集羣。

我們設置集羣名字,名字可以隨意,這裏我命令爲Runsen-Cluster,如下圖10-9所示。

下一步是要搜索並選擇用於安裝CDH集羣的主機,在主機名稱後面的輸入框中輸入各個節點的ip,中間使然後點擊搜索,在結果列表中勾選要安裝CDH的節點即可,如下圖10-10所示。

下一步選擇存儲庫:可以設置自定義存儲庫,即安裝的http://192.168.92.90/cloudera-repos/cm6/6.2.0,如果我們之前的配置本地Parcel存儲庫,步驟操作無誤的話,這裏會自動選擇使用Parcel,並加載出CDH版本,確認無誤後點擊繼續:

下一步驟不再勾選安裝JDK了,因爲在Centos7環境已經安裝過了Java。取消勾選,然後繼續:

下一步用驟於配置集羣主機之間的SSH登錄,填寫root用戶的密碼,根據集羣配置填寫,合適的同時安裝數量值,可以我們填寫3。

下面,我們等待安裝 Agents,Parcels和 Cluster,注意安裝前,必須提供10到20g的內存空間

等待十幾分鍾,集羣搭建成功,如下圖10-15所示。

集羣搭建成功後,我們會進入嚮導集羣設置,可以選擇基本服務Essentials,後期再添加服務,根據自己需求選擇數據庫類型。參考:https://www.cloudera.com/documentation/enterprise/latest/topics/introduction.html。關於更多的Cloudera教程,查看官方文檔https://www.cloudera.com/documentation/enterprise/latest.html

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