相關文章鏈接
CentOS7安裝CDH 第二章:CentOS7各個軟件安裝和啟動
CentOS7安裝CDH 第四章:CDH的版本選擇和安裝方式
CentOS7安裝CDH 第五章:CDH的安裝和部署-CDH5.7.0
CentOS7安裝CDH 第六章:CDH的管理-CDH5.12
CentOS7安裝CDH 第七章:CDH集群Hadoop的HA配置
CentOS7安裝CDH 第八章:CDH中對服務和機器的添加與刪除操作
1. CDH體系架構剖析
1.1. 2個注意
- 所有的配置修改,都是從 7180 端口的 web 界面修改。當在web界面修改配置信息后會提示需要集群重啟,此時選擇重啟,並選中其中的“重新部署客戶端配置”。
- kill -9 cm 進程/hdfs 進程,supervisord 會啟動被 kill 掉的進程。
- 修改配置信息步驟:Web 界面修改------>數據庫表 configs 表------->/etc/hadoop/*------->/var/run/cloudera-scm-agent/process/*
- web 界面修改參數,保存,到 configs 表
- 重新部署客戶端,到/etc/hadoop/的某個目錄下,然后通過 alternatives 命令動態更新到 conf文件夾;且會在/var/run/cloudera-scm-agent/process/目錄下生成 deploy 文件夾
- 重啟集群或者重啟單個服務,會在/var/run/cloudera-scm-agent/process/目錄下生成各個組件的運行的配置文件夾(是有序號標識的)
1.2. 架構剖析
- CM 分為 Server 與 Agent 兩部分及數據庫(MySQL)。它主要做三件事件:
- 管理監控集群主機,包含自己。
- 統一管理配置,提供 web 端。
- 管理維護 Hadoop 平台系統。
- 實現采用 C/S 架構,Agent 為客戶端,負責執行服務端發來的命令,執行方式一般為使用 python調用相應的服務 shell 腳本。Server 端為 Java REST 服務,提供 REST API,Web 管理端通過 REST API調用 Server 端功能,Web 界面使用富客戶端技術(Knockout)。
- Server 端主體使用 Java 實現。
- Agent 端主體使用 Python, 服務的啟動通過調用相應的 shell 腳本進行啟動,如果啟動失敗會重復 4 次調用啟動腳本。
- Agent 與 Server 保持心跳,使用 Thrift RPC 框架。
2. CM中的常用命令
service cloudera-scm-server start|stop|restart|status
service cloudera-scm-agent start|stop|restart|status
查看進程:jps / jps -l /jps –m
注意:
當使用jps命令時,出現如下情景:
1101 -- process information unavailable
但ps -ef|grep 1101 找不到該進程,那么就是殘留文件,
此時cd /tmp/hsperfdata_hdfs/等類似文件夾中,找到 1101文件,刪除即可。
3. CDH集群正確啟動和停止順序
3.1. 啟動
1.su – mysqladmin service mysql start
2.service cloudera-scm-server start
3.service cloudera-scm-agent start (每台)
4.web: cms
5.web: cluster1
3.2. 停止
1.web: cluster1
2.web: cms
3.service cloudera-scm-agent stop (每台)
4.service cloudera-scm-server stop
5.su – mysqladmin service mysql stop
3.3. 注意點
cms 和 cluster1 無論哪個關閉、啟動等等操作,會造成web界面的圖表的 不繪制情景,此時可以采取如下操作:
1.cms 和 cluster1 都要啟動 ,稍微等待 ,正在恢復中(30s)
2.先cluster1關閉,再重啟cms服務
4. CDH配置QQ預警郵箱
4.1. 開啟QQ郵箱的SMTP
這里使用了QQ郵箱的SMTP,需要獲取QQ郵箱的授權碼:
4.2. 安裝並開啟和關閉centos7對應的郵箱服務
# 卸載原有郵箱服務,並安裝新的郵箱服務
yum remove postfix
yum install postfix
# 關閉機器的sendmail服務
systemctl stop sendmail.service
systemctl disable sendmail
# 開啟postfix服務
systemctl start postfix.service
systemctl enable postfix
4.3. 創建證書文件
mkdir -p /root/.certs/
echo -n | openssl s_client -connect smtp.qq.com:465 | sed -ne '/-BEGINCERTIFICATE-/,/-END CERTIFICATE-/p' > ~/.certs/qq.crt
certutil -A -n "GeoTrust SSL CA" -t "C,," -d ~/.certs -i ~/.certs/qq.crt
certutil -A -n "GeoTrust Global CA" -t "C,," -d ~/.certs -i ~/.certs/qq.crt
certutil -L -d /root/.certs
cd /root/.certs
certutil -A -n "GeoTrust SSL CA - G3" -t "Pu,Pu,Pu" -d ./ -i qq.crt
4.4. 在/etc/mail.rc文件末尾添加以下授權碼
set from=1043797615@qq.com
set smtp=smtp.qq.com
set smtp-auth-user=1043797615
#授權碼
set smtp-auth-password=cgnrvyvbbsufbcbd
set smtp-auth=login
set smtp-use-starttls
set ssl-verify=ignore
set nss-config-dir=/root/.certs
4.5. 命令行驗證郵箱服務
echo hello word | mail -s " title" 1028344078@qq.com
# 此時1028344078@qq.com 會收到一封郵件
4.6. CDH配置郵件測試
#查看 Alert 服務的 log
tail -F /var/log/cloudera-scm-alertpublisher/mgmt-cmf-mgmt-ALERTPUBLISHER-hadoop35.log.out
# 實時查看Linux中的郵件日志
tail -f /var/log/maillog
選擇警報,再選擇編輯收件人:
點擊發送測試警報,對應的郵箱會收到測試郵件。
4.7. 預警郵件中的坑
在Alert Publisher服務中,默認的郵件發件人地址如下,當郵件發送過多時,郵件的服務商會默認設置此地址為騷擾郵件,之后就不能接收到警告郵件了,此時可以在郵件網頁中,點擊回復,給此地址回復一封郵件,建立信任關系,就可以繼續收到此地址發送的郵件了。
5. CDH集群不能運行時的一些問題匯總
在CDH中有如下服務:
db(mysql)
server (cmf)
agent 本次被刪除了
cms(5個進程,amon )
HDFS/yarn/zk/hive 元數據
5.1. 數據庫服務沒有啟動
CDH集群中,CM的server需要引用數據庫中的cmf庫,cms(Cloudera Management Service)需要引用數據庫中的amon庫,所以當數據庫不能使用時,CDH集群啟動不了,CDH中的數據庫配置在/etc/cloudera-scm-server/db.properties路徑中。(在cms中,一共有5個子服務)
5.2. 一個節點中agent完全崩潰
1.此時先檢查節點中agent的狀態,將agent的遺留文件刪除。
2.進入/var/www/html/cm5/redhat/7/x86_64/cm/5.12.0/RPMS/x86_64文件夾中,安裝agent服務,安裝命令:yum install cloudera-manager-agent-5.12.0-1.cm5120.p0.120.el7.x86_64.rpm。
3.進入/etc/cloudera-scm-agent文件夾中,配置config.ini配置文件。
4.修改其中的server_host為cm的server安裝機器的IP地址(可以查看其他能運行的節點的該配置文件的IP地址)。
5.使用service cloudera-scm-agent start命令啟動該節點的agent,再去web界面重啟CMS。
上述問題說明CMS也是通過agent來啟動和管理的。
5.3. 地址已被使用問題
當CDH的啟動異常,並報如下錯誤時有幾種解決方法:
Caused by: java.net.BindException: Address already in use
1、此時為地址被占用,使用ps/netstat查看該進程號,並kill掉該進程即可。
例:
ps -ef | grep alert #查看alert的進程號
netstat -nlp |grep 12704 #查看該進程的端口號
kill -9 12704 #kill掉該進程,然后再查看端口號即可
2、可以在web界面將有問題的服務刪除,在添加該實例:
3、可以將cloudera-scm-agent服務停止,在kill父進程super(ps –ef|grep super),然后再啟動cloudera-scm-agent服務,再去web界面重啟。
4、實在不行重啟服務器
6. CDH中的日志介紹
stdout/stderr/role log
查看順序:role log -> stderr -> stdout