@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.sha1
,cdh6.2.0.p0.967373-el7.parcel
和manifest.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-agent
和cloudera-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