一. 環(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服務(wù),或采用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 軟件版本
相關(guān)軟件放置在/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 |
二. 準(zhǔn)備工作
2.1 部分預(yù)配置
所有節(jié)點執(zhí)行以下操作:
- 永久關(guān)閉防火墻(
firewalld或
iptables);
- 永久關(guān)閉
selinux;
- 設(shè)置
ntp。
2.2 設(shè)置hosts
-
所有節(jié)點設(shè)置/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 免密訪問設(shè)置
-
在所有節(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文件中設(shè)置
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/ # 設(shè)置軟鏈接,方便升級替換 ln -s /usr/java/jdk1.8.0_181/ /usr/java/current
-
設(shè)置變量
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)自帶的相關(guān)數(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
- 獲取
-
設(shè)置變量
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
-
設(shè)置開機啟動
# 復(fù)制開機啟動腳本到系統(tǒng)服務(wù) cp /usr/local/mysql/support-files/mysql.server /etc/rc.d/init.d/mysqld chown mysql:mysql /etc/rc.d/init.d/mysqld # 修改默認(rèn)的"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
-
設(shè)置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服務(wù)
# 啟動服務(wù) service mysqld start # 驗證 service mysqld status
-
設(shè)置MySQL賬號密碼與登陸權(quán)限
# 使用初始化密碼登陸 mysql -uroot -p # 修改密碼,注意不能使用"$"等特殊符號 set password=password('cdh12#hadoop'); flush privileges; # 遠(yuǎn)程登陸權(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相關(guān)服務(wù)使用的默認(rèn)賬號
# 禁止使用"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 設(shè)置開機啟動
-
在master節(jié)點設(shè)置系統(tǒng)服務(wù)
# 設(shè)置使用"cloudera-scm-server"為系統(tǒng)啟動服務(wù) 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)啟動服務(wù) chkconfig --add cloudera-scm-server chkconfig --level 35 cloudera-scm-server on checkconfig --list
-
在所有slave節(jié)點設(shè)置系統(tǒng)服務(wù)
# 設(shè)置使用"cloudera-scm-agent"為系統(tǒng)啟動服務(wù) 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)啟動服務(wù) chkconfig --add cloudera-scm-agent chkconfig --level 35 cloudera-scm-agent on checkconfig --list
3.4 初始化數(shù)據(jù)庫
- 在所有節(jié)點設(shè)置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服務(wù)
service mysqld restart
- 在任意節(jié)點初始化CM
- 注意:Cloudera服務(wù)需要的相關(guān)
database如下:
- 表中給出的是CM相關(guān)服務(wù)配置文件中默認(rèn)的
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ù)庫腳本,默認(rèn)在"/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,默認(rèn)是"localhost"; # -u:數(shù)據(jù)庫賬號,需要具備增刪改查的權(quán)限,默認(rèn)是"root"; # -p:賬號密碼,默認(rèn)無密碼; # --scm-host:SCM server主機名,默認(rèn)是"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相關(guān)服務(wù)配置文件中默認(rèn)的
3.5 創(chuàng)建本地parcel源
-
在master節(jié)點制作本地parcel源
# 創(chuàng)建本地parcel源目錄 mkdir -p /opt/cloudera/parcel-repo # 將parcel相關(guān)安裝包放置到"/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服務(wù)
-
在master節(jié)點啟動
cloudera-scm-server服務(wù)
# "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服務(wù)
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
- 默認(rèn)賬號/密碼:
admin/admin
- 最終用戶許可條款與條件
- 部署版本,選擇
Cloudera Enterprise 試用版
- 版本與服務(wù)說明
cloudera-scm-agent正常啟動后,可發(fā)現(xiàn)相應(yīng)的節(jié)點,指定集群服務(wù)的安裝節(jié)點
- 選擇CDH版本
- 集群安裝,如果本地
parcel源配置正確,則"下載"階段瞬間完成,其余階段視節(jié)點數(shù)與內(nèi)部網(wǎng)絡(luò)情況決定
- 檢查主機正確性(需要一些時間),針對slave節(jié)點有兩個優(yōu)化建議:
- 1.建議將
/proc/sys/vm/swappiness設(shè)置為最大值
10。
swappiness值控制操作系統(tǒng)嘗試交換內(nèi)存的積極;
swappiness=0:表示最大限度使用物理內(nèi)存,之后才是swap空間;
swappiness=100:表示積極使用swap分區(qū),并且把內(nèi)存上的數(shù)據(jù)及時搬遷到swap空間;
- 如果是混合服務(wù)器,不建議完全禁用swap,可以嘗試降低
swappiness。
-
臨時調(diào)整:
sysctl vm.swappiness=10
-
永久調(diào)整:
cat << EOF >> /etc/sysctl.conf # Adjust swappiness value vm.swappiness=10 EOF
- 2.已啟用透明大頁面壓縮,可能會導(dǎo)致重大性能問題,建議禁用此設(shè)置。
-
臨時調(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.建議將
- 集群設(shè)置,選擇服務(wù)進行安裝,這里選擇
自定義服務(wù)的
HDFS服務(wù)
- 集群設(shè)置,自定義角色分配,默認(rèn)即可
- 集群設(shè)置,
Reports Manager數(shù)據(jù)庫名稱
rman,用戶名
rman
- 集群設(shè)置,審核更改,默認(rèn)即可
- 集群設(shè)置,首次運行
- 集群設(shè)置,服務(wù)安裝完成
- Cloudera Manager 主頁
- Cloudera Manager HDFS 服務(wù)匯總