一. 環(huán)境
1.1 系統(tǒng)節(jié)點信息
Hostname | IP | CPU(cores) | Memory(GB) | OS | Service | Remark |
---|---|---|---|---|---|---|
master | 172.30.200.75 | 2 | 4 | CentOS 7.5 | jdk, cloudera-scm-server, mysql | 實際部署后,master節(jié)點也需要部署cloudera-scm-agent服務,或采用4個slave節(jié)點 |
slave01 | 172.30.200.76 | 2 | 4 | centos 7.5 | jdk, cloudera-scm-agent | |
slave02 | 172.30.200.77 | 2 | 4 | centos 7.5 | jdk, cloudera-scm-agent | |
slave03 | 172.30.200.78 | 2 | 4 | centos 7.5 | jdk, cloudera-scm-agent |
1.2 軟件版本
相關軟件放置在/usr/local/src/目錄。
Soft | Version | Download | Remark |
---|---|---|---|
CM(Cloudera Manager) | cloudera-manager-centos7-cm5.16.1_x86_64.tar.gz |
bin包,根據(jù)版本下載 | |
CDH parcel | CDH-5.16.1-1.cdh5.16.1.p0.3-el7.parcel |
根據(jù)版本下載 | 軟件安裝包 |
CDH parcel.sha | CDH-5.16.1-1.cdh5.16.1.p0.3-el7.parcel.sha1 |
根據(jù)版本下載 | 軟件包hash碼 |
CDH manifest.json | manifest.json |
根據(jù)版本下載 | 版本說明文件 |
JDK | jdk-8u181-linux-x64.tar.gz |
bin包,根據(jù)版本下載 | |
MySQL | mysql-5.7.24-el7-x86_64.tar.gz |
bin包,根據(jù)版本下載 | 存放Cloudera Manager配置文件 |
MySQL-connector-Java | mysql-connector-java-8.0.13.jar |
jar包,根據(jù)版本下載 | JDBC |
二. 準備工作
2.1 部分預配置
所有節(jié)點執(zhí)行以下操作:
- 永久關閉防火墻(
firewalld或
iptables);
- 永久關閉
selinux;
- 設置
ntp。
2.2 設置hosts
-
所有節(jié)點設置/etc/hosts
cat << EOF >> /etc/hosts # Hadoop nodes 172.30.200.75 master 172.30.200.76 slave01 172.30.200.77 slave02 172.30.200.78 slave03 EOF
2.3 免密訪問設置
-
在所有節(jié)點生成秘鑰
ssh-keygen -t rsa
-
在master節(jié)點生成
authorized_keys文件
cat /root/.ssh/id_rsa.pub >> /root/.ssh/authorized_keys
-
在master節(jié)點執(zhí)行,將集群每個節(jié)點的公鑰
id_rsa.pub放入master節(jié)點的
authorized_keys文件中
for i in {1..3}; do ssh root@slave0$i cat /root/.ssh/id_rsa.pub >> /root/.ssh/authorized_keys; done
- 在master節(jié)點執(zhí)行,將master節(jié)點的
authorized_keys文件放置到集群每個節(jié)點的
/root/.ssh/目錄,依然命名位
authorized_keys
- 最終的效果是集群中所有節(jié)點兩兩相互免密訪問;
- 注意:首次登陸時有
公鑰檢查,可通過在
/etc/ssh/ssh_config文件中設置
StrictHostKeyChecking no繞過,或使用
-o參數(shù)跳過。
for i in {1..3}; do scp /root/.ssh/authorized_keys root@slave0$i:/root/.ssh/authorized_keys; done
2.4 安裝JDK
所有節(jié)點都需要安裝JDK。
-
安裝JDK
cd /usr/local/src tar -zxvf jdk-8u181-linux-x64.tar.gz mkdir -p /usr/java mv jdk1.8.0_181/ /usr/java/ # 設置軟鏈接,方便升級替換 ln -s /usr/java/jdk1.8.0_181/ /usr/java/current
-
設置變量
cat << EOF >> /etc/profile # JDK export JAVA_HOME=/usr/java/current export JRE_HOME=/usr/java/current/jre export PATH=$PATH:/usr/java/current/bin export CLASSPATH=./:/usr/java/current/lib:/usr/java/current/jre/lib EOF
-
驗證
# 加載變量 source /etc/profile # 驗證 java -version
2.5 安裝MySQL
只有master節(jié)點需要安裝MySQL。
-
卸載系統(tǒng)自帶的相關數(shù)據(jù)庫
rpm -qa | grep mysql rpm -qa | grep mariadb # --nodeps:不檢查依賴 rpm -e --nodeps mariadb-libs-5.5.56-2.el7.x86_64
-
部署MySQL
# 采用bin包部署,解壓后直接使用 cd /usr/local/src tar -zxvf mysql-5.7.24-el7-x86_64.tar.gz -C /usr/local/ mv /usr/local/mysql-5.7.24-el7-x86_64/ /usr/local/mysql
-
賬號與權(quán)限
# 添加賬號 groupadd mysql useradd -g mysql -s /sbin/nologin mysql # 創(chuàng)建"data"目錄 mkdir /data # 賦權(quán) chown -R mysql:mysql /usr/local/mysql/ chown -R mysql:mysql /data/
- 初始化MySQL
- 獲取
root@localhost賬號的初始密碼
Hqe6x<Re4jhK
cd /usr/local/mysql/ bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/data
- 獲取
-
設置變量
cat << EOF >> /etc/profile # MySQL export PATH=$PATH:/usr/local/mysql/bin EOF # 加載變量 source /etc/profile # 軟鏈接 ln -s /usr/local/mysql/lib/mysql /usr/lib/mysql ln -s /usr/local/mysql/include/mysql /usr/include/mysql
-
設置開機啟動
# 復制開機啟動腳本到系統(tǒng)服務 cp /usr/local/mysql/support-files/mysql.server /etc/rc.d/init.d/mysqld chown mysql:mysql /etc/rc.d/init.d/mysqld # 修改默認的"basedir"與"datadir" vim /etc/rc.d/init.d/mysqld basedir=/usr/local/mysql datadir=/data # 添加開機啟動腳本 chkconfig --add mysqld chkconfig --level 35 mysqld on
-
文件路徑:log && pid && socket
# 日志路徑 mkdir -p /var/log/mysqld touch /var/log/mysqld/mysqld.log chown -R mysql:mysql /var/log/mysqld/ # pid路徑 mkdir -p /var/run/mysqld chown -R mysql:mysql /var/run/mysqld/ # socker路徑 mkdir -p /var/lib/mysqld chown -R mysql:mysql /var/lib/mysqld/ ln -s /var/lib/mysqld/mysql.sock /tmp/mysql.sock
-
設置my.cnf文件
# 注意"log-error","pid-file"與"socket"的路徑 mkdir -p /usr/local/mysql/etc cat << EOF >> /usr/local/mysql/etc/my.cnf [mysqld] character-set-server=utf8 max_connections = 3000 log-error=/var/log/mysqld/mysqld.log pid-file=/var/run/mysqld/mysqld.pid socket=/var/lib/mysqld/mysql.sock sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES [mysql] default-character-set=utf8 EOF # 軟鏈接 ln -s /usr/local/mysql/etc/my.cnf /etc/my.cnf # 賦權(quán) chown -R mysql:mysql /usr/local/mysql/etc/
-
啟動MySQL服務
# 啟動服務 service mysqld start # 驗證 service mysqld status
-
設置MySQL賬號密碼與登陸權(quán)限
# 使用初始化密碼登陸 mysql -uroot -p # 修改密碼,注意不能使用"$"等特殊符號 set password=password('cdh12#hadoop'); flush privileges; # 遠程登陸權(quán)限 grant all privileges on *.* to 'root'@'%' identified by 'cdh12#hadoop' with grant option; flush privileges; # 查看賬號 select user, host, authentication_string from mysql.user;
三. Cloudera Manager安裝
3.1 部署CM Server & Agent
-
在所有節(jié)點創(chuàng)建CM目錄
/opt/cloudera-manager
mkdir /opt/cloudera-manager
-
在master節(jié)點向其余節(jié)點分發(fā)
cloudera-manager-centos7-cm5.16.1_x86_64.tar.gz
for i in {1..3}; do scp /usr/local/src/cloudera-manager-centos7-cm5.16.1_x86_64.tar.gz root@slave0$i:/usr/local/src/ ; done
-
在所有節(jié)點解壓
cloudera-manager-centos7-cm5.16.1_x86_64.tar.gz到
/opt/cloudera-manager/目錄
tar -zxvf /usr/local/src/cloudera-manager-centos7-cm5.16.1_x86_64.tar.gz -C /opt/cloudera-manager/
-
在所有slave節(jié)點修改
/opt/cloudera-manager/cm-5.16.1/etc/cloudera-scm-agent/config.ini的
server_host參數(shù)為master節(jié)點ip或主機名
sed -i "s/server_host=localhost/server_host=master/g" /opt/cloudera-manager/cm-5.16.1/etc/cloudera-scm-agent/config.ini
3.2 賬號 && 權(quán)限
-
在所有節(jié)點創(chuàng)建
cloudera-scm賬號,這是CM相關服務使用的默認賬號
# 禁止使用"cloudera-scm"賬號登陸 useradd --system --home=/opt/cloudera-manager/cm-5.16.1/run/cloudera-scm-server/ --no-create-home --shell=/bin/false --comment "Cloudera SCM User" cloudera-scm
-
在所有節(jié)點為
/opt/cloudera-manager目錄賦權(quán)
chown -R cloudera-scm:cloudera-scm /opt/cloudera-manager
3.3 設置開機啟動
-
在master節(jié)點設置系統(tǒng)服務
# 設置使用"cloudera-scm-server"為系統(tǒng)啟動服務 cp /opt/cloudera-manager/cm-5.16.1/etc/init.d/cloudera-scm-server /etc/rc.d/init.d/ chown cloudera-scm:cloudera-scm /etc/rc.d/init.d/cloudera-scm-server # 修改"CMF_DEFAULTS=${CMF_DEFAULTS:-/etc/default}"的路徑 vim /etc/rc.d/init.d/cloudera-scm-server CMF_DEFAULTS=/opt/cloudera-manager/cm-5.16.1/etc/default # 添加系統(tǒng)啟動服務 chkconfig --add cloudera-scm-server chkconfig --level 35 cloudera-scm-server on checkconfig --list
-
在所有slave節(jié)點設置系統(tǒng)服務
# 設置使用"cloudera-scm-agent"為系統(tǒng)啟動服務 cp /opt/cloudera-manager/cm-5.16.1/etc/init.d/cloudera-scm-agent /etc/rc.d/init.d/ chown cloudera-scm:cloudera-scm /etc/rc.d/init.d/cloudera-scm-agent # 修改"CMF_DEFAULTS=${CMF_DEFAULTS:-/etc/default}"的路徑"-/etc/default" vim /etc/rc.d/init.d/cloudera-scm-agent CMF_DEFAULTS=${CMF_DEFAULTS:/opt/cloudera-manager/cm-5.16.1/etc/default} # 添加系統(tǒng)啟動服務 chkconfig --add cloudera-scm-agent chkconfig --level 35 cloudera-scm-agent on checkconfig --list
3.4 初始化數(shù)據(jù)庫
- 在所有節(jié)點設置MySQL驅(qū)動(JDBC);
-
注意:部署JDBC在任意節(jié)點,則后續(xù)”CDH安裝配置”階段
Reports Manager被分配在任意節(jié)點都可以
cp /usr/local/src/mysql-connector-java-8.0.13.jar /opt/cloudera-manager/cm-5.16.1/share/cmf/lib/ chown cloudera-scm:cloudera-scm /opt/cloudera-manager/cm-5.16.1/share/cmf/lib/mysql-connector-java-8.0.13.jar
-
在master節(jié)點重啟MySQL服務
service mysqld restart
- 在任意節(jié)點初始化CM
- 注意:Cloudera服務需要的相關
database如下:
- 表中給出的是CM相關服務配置文件中默認的
database與
user,但不是必須使用;
database在數(shù)據(jù)庫中可直接創(chuàng)建,但CM初始化時如果沒有
database,則自動創(chuàng)建。
Service Database User Cloudera Manager Server scm scm Activity Monitor amon amon Reports Manager rman rman Hue hue hue Hive Metastore Server metastore metastore Sentry Server sentry sentry Cloudera Navigator Audit Server nav nav Cloudera Navigator Metadata Server navms navms Oozie oozie oozie # 格式:scm_prepare_database.sh [options] (postgresql|mysql|Oracle) database username [password] # scm_prepare_database.sh:創(chuàng)建與配置CMS需要的數(shù)據(jù)庫腳本,默認在"/opt/cloudera-manager/cm-5.16.1/share/cmf/schema/"目錄; # postgresql|mysql|oracle:必選項,數(shù)據(jù)庫類型; # database:必選項,針對postgresql|mysql,創(chuàng)建SCM數(shù)據(jù)庫;針對oracle,填寫sid; # username:必選項,SCM數(shù)據(jù)庫的賬號; # password:選填項,SCM數(shù)據(jù)庫的賬號密碼,如果不指定,會提示輸入; # options: # -h:數(shù)據(jù)庫主機ip或hostname,默認是"localhost"; # -u:數(shù)據(jù)庫賬號,需要具備增刪改查的權(quán)限,默認是"root"; # -p:賬號密碼,默認無密碼; # --scm-host:SCM server主機名,默認是"localhost" /opt/cloudera-manager/cm-5.16.1/share/cmf/schema/scm_prepare_database.sh mysql -h master -uroot -pcdh12#hadoop --scm-host % scm scm scm_pass /opt/cloudera-manager/cm-5.16.1/share/cmf/schema/scm_prepare_database.sh mysql -h master -uroot -pcdh12#hadoop --scm-host % amon amon amon_pass /opt/cloudera-manager/cm-5.16.1/share/cmf/schema/scm_prepare_database.sh mysql -h master -uroot -pcdh12#hadoop --scm-host % rman rman rman_pass /opt/cloudera-manager/cm-5.16.1/share/cmf/schema/scm_prepare_database.sh mysql -h master -uroot -pcdh12#hadoop --scm-host % hue hue hue_pass /opt/cloudera-manager/cm-5.16.1/share/cmf/schema/scm_prepare_database.sh mysql -h master -uroot -pcdh12#hadoop --scm-host % metastore metastore metastore_pass /opt/cloudera-manager/cm-5.16.1/share/cmf/schema/scm_prepare_database.sh mysql -h master -uroot -pcdh12#hadoop --scm-host % sentry sentry sentry_pass /opt/cloudera-manager/cm-5.16.1/share/cmf/schema/scm_prepare_database.sh mysql -h master -uroot -pcdh12#hadoop --scm-host % nav nav nav_pass /opt/cloudera-manager/cm-5.16.1/share/cmf/schema/scm_prepare_database.sh mysql -h master -uroot -pcdh12#hadoop --scm-host % navms navms navms_pass /opt/cloudera-manager/cm-5.16.1/share/cmf/schema/scm_prepare_database.sh mysql -h master -uroot -pcdh12#hadoop --scm-host % oozie oozie oozie_pass
返回如下信息,表示配置成功
[main] INFO com.cloudera.enterprise.dbutil.DbCommandExecutor - Successfully connected to database. All done, your SCM database is configured correctly!
- 表中給出的是CM相關服務配置文件中默認的
3.5 創(chuàng)建本地parcel源
-
在master節(jié)點制作本地parcel源
# 創(chuàng)建本地parcel源目錄 mkdir -p /opt/cloudera/parcel-repo # 將parcel相關安裝包放置到"/opt/cloudera/parcel-repo"目錄; # 說明:"/opt/cloudera/parcel-repo"目錄可放置多套parcel安裝包; # 將"CDH-5.16.1-1.cdh5.16.1.p0.3-el7.parcel.sha1"重命名為"CDH-5.16.1-1.cdh5.16.1.p0.3-el7.parcel.sha",否則會重新下載"CDH-5.16.1-1.cdh5.16.1.p0.3-el7.parcel"安裝包 mv /usr/local/src/CDH-5.16.1-1.cdh5.16.1.p0.3-el7.parcel /opt/cloudera/parcel-repo/ mv /usr/local/src/CDH-5.16.1-1.cdh5.16.1.p0.3-el7.parcel.sha1 /opt/cloudera/parcel-repo/CDH-5.16.1-1.cdh5.16.1.p0.3-el7.parcel.sha mv /usr/local/src/manifest.json /opt/cloudera/parcel-repo/ # 賦權(quán) chown -R cloudera-scm:cloudera-scm /opt/cloudera/
-
在所有salve節(jié)點創(chuàng)建軟件安裝目錄
mkdir -p /opt/cloudera/parcels # 賦權(quán) chown -R cloudera-scm:cloudera-scm /opt/cloudera/
3.6 啟動CM服務
-
在master節(jié)點啟動
cloudera-scm-server服務
# "cloudera-scm-server"啟動需要連接數(shù)據(jù)庫,監(jiān)聽端口啟動會延遲 service cloudera-scm-server restart service cloudera-scm-server status -l # 通過啟動后的狀態(tài)查看,腳本需要執(zhí)行"pstree"命令,需要安裝依賴包 yum install psmisc -y
-
在所有salve節(jié)點啟動
cloudera-scm-agent服務
yum install psmisc -y service cloudera-scm-agent restart service cloudera-scm-agent status -l
四. 安裝CDH
4.1 CDH安裝配置
- 瀏覽器訪問CM:http://172.30.200.75:7180
- 默認賬號/密碼:
admin/admin
- 最終用戶許可條款與條件
- 部署版本,選擇
Cloudera Enterprise 試用版
- 版本與服務說明
cloudera-scm-agent正常啟動后,可發(fā)現(xiàn)相應的節(jié)點,指定集群服務的安裝節(jié)點
- 選擇CDH版本
- 集群安裝,如果本地
parcel源配置正確,則"下載"階段瞬間完成,其余階段視節(jié)點數(shù)與內(nèi)部網(wǎng)絡情況決定
- 檢查主機正確性(需要一些時間),針對slave節(jié)點有兩個優(yōu)化建議:
- 1.建議將
/proc/sys/vm/swappiness設置為最大值
10。
swappiness值控制操作系統(tǒng)嘗試交換內(nèi)存的積極;
swappiness=0:表示最大限度使用物理內(nèi)存,之后才是swap空間;
swappiness=100:表示積極使用swap分區(qū),并且把內(nèi)存上的數(shù)據(jù)及時搬遷到swap空間;
- 如果是混合服務器,不建議完全禁用swap,可以嘗試降低
swappiness。
-
臨時調(diào)整:
sysctl vm.swappiness=10
-
永久調(diào)整:
cat << EOF >> /etc/sysctl.conf # Adjust swappiness value vm.swappiness=10 EOF
- 2.已啟用透明大頁面壓縮,可能會導致重大性能問題,建議禁用此設置。
-
臨時調(diào)整:
echo never > /sys/kernel/mm/transparent_hugepage/defrag echo never > /sys/kernel/mm/transparent_hugepage/enabled
-
永久調(diào)整:
cat << EOF >> /etc/rc.d/rc.local # Disable transparent_hugepage echo never > /sys/kernel/mm/transparent_hugepage/defrag echo never > /sys/kernel/mm/transparent_hugepage/enabled EOF # centos7.x系統(tǒng),需要為"/etc/rc.d/rc.local"文件賦予執(zhí)行權(quán)限 chmod +x /etc/rc.d/rc.local
-
- 1.建議將
- 集群設置,選擇服務進行安裝,這里選擇
自定義服務的
HDFS服務
- 集群設置,自定義角色分配,默認即可
- 集群設置,
Reports Manager數(shù)據(jù)庫名稱
rman,用戶名
rman
- 集群設置,審核更改,默認即可
- 集群設置,首次運行
- 集群設置,服務安裝完成
- Cloudera Manager 主頁
- Cloudera Manager HDFS 服務匯總