cdh 架構(gòu)圖
環(huán)境準(zhǔn)備
根據(jù)官方文檔選定linux系統(tǒng)版本所支持的CDH 版本 cloudera-manager-6.0.1
查看當(dāng)前機(jī)器的信息
查看linux版本,例如:
cat /etc/redhat-release
centos Linux release 7.5.1804
查看機(jī)器型號(hào)
dmesg | grep -i virtual,例如查詢到是kvm 虛擬機(jī)
查看cpu和內(nèi)存使用情況Top
磁盤使用率 df -h
機(jī)器分配
根據(jù)機(jī)器配置情況,支持安裝CDH6.0 集群
創(chuàng)建yum源
下載yum源
wget https://archive.cloudera.com/cm6/6.0.0/redhat7/yum/cloudera-manager.repo -P /etc/yum.repos.d/
如下圖,可以選擇指定版本的yum源
導(dǎo)入GPG key
rpm --import https://archive.cloudera.com/cm6/6.0.0/redhat7/yum/RPM-GPG-KEY-cloudera
修改yum 緩存配置
vim /etc/yum.conf
設(shè)置keepcache=1,表示rpm 包在本地長期保存,這樣的好處是一個(gè)節(jié)點(diǎn)下載好了后,其他節(jié)點(diǎn)可以從此節(jié)點(diǎn)上拷貝,不用重復(fù)下載。
修改hosts
修改每臺(tái)機(jī)器的hostname
cat /etc/hostname查看hostname
hostname master臨時(shí)修改hostname
vim /etc/hostname永久修改hostname
修改所有機(jī)器的host(所有機(jī)器執(zhí)行)
所有機(jī)器的hostname中都需要設(shè)置到每臺(tái)機(jī)器的host中
如果一臺(tái)機(jī)器的ip 有多個(gè)host ,host 需放到一行,否則后面搭建集群前的環(huán)境校驗(yàn)會(huì)異常。如
192.168.52.52master name1 name2 name3
關(guān)閉防火墻
systemctl status firewalld查看防火墻狀態(tài)
systemctl stop firewalld關(guān)閉防火墻(所有機(jī)器執(zhí)行)
systemctl disable firewalld禁止開機(jī)啟動(dòng)防火墻(所有機(jī)器執(zhí)行)
配置ssh 免密登錄
a. 生成秘鑰:ssh-keygen -t rsa
b. 復(fù)制公鑰到遠(yuǎn)程機(jī):ssh-keygen -t rsa
注意:
某些集群組件中的主節(jié)點(diǎn)需要遠(yuǎn)程維護(hù)數(shù)據(jù)節(jié)點(diǎn)的狀態(tài),因此需要遠(yuǎn)程免密登錄。比如,啟動(dòng) Hadoop 集群的start-all.sh ,過程中會(huì)ssh 到datanode 啟動(dòng)相應(yīng)的服務(wù)。由于有的機(jī)器上可能不只是安裝數(shù)據(jù)(計(jì)算)角色,可能也會(huì)存在master 服務(wù)調(diào)用角色,因此為避免麻煩集群機(jī)器之間都設(shè)置成免密登錄(對(duì)于主機(jī)少的情況可以這樣做,至于主機(jī)多的情況需要根據(jù)需求進(jìn)行免密配置)。
在所有主機(jī)上以此執(zhí)行a—>b 步驟
安裝NTP時(shí)間同步器(所有機(jī)器執(zhí)行)
yum install -y ntp
修改配置文件
vim /etc/ntp.conf
將此處的server 設(shè)置主節(jié)點(diǎn)的地址
例如:
server master iburst
注意:
實(shí)際操作時(shí),設(shè)置成server master iburst 后CM minitor service monitor 一直提示NTP無法連接遠(yuǎn)程服務(wù)器,好吧索性不改了,就使用默認(rèn)的0.centos.pool.ntp.org
安裝nfs網(wǎng)絡(luò)文件系統(tǒng)
Nfs文件系統(tǒng)相當(dāng)于機(jī)器之間的共享目錄,避免機(jī)器之間通過scp 轉(zhuǎn)移文件繁瑣。
比如,后續(xù)會(huì)用到的MySQL-connector-JAVA.jar 共享文件就可以放在這里。
服務(wù)端:(任意一臺(tái)機(jī)器)
安裝nfs
yum -y install nfs-utils rpcbind
創(chuàng)建共享目錄,并且授權(quán):
mkdir /opt/share
chmod -R 666 /opt/share
修改配置:
/opt/share *(rw,no_root_squash,no_all_squash,sync)
exportfs -r 使配置生效
啟動(dòng)服務(wù):
systemctl start nfs
systemctl start rpcbind
客戶端
安裝nfs:
yum -y install nfs-utils rpcbind
創(chuàng)建掛載點(diǎn):
mkdir /opt/share
掛載:
showmount -e master//查看nfs文件系統(tǒng)服務(wù)端的掛路徑
mount -t nfs master:/opt/share /opt/share -o proto=tcp -o nolock(掛載)
安裝jdk(所有機(jī)器執(zhí)行)
CDH 安裝過程中檢測系統(tǒng)環(huán)境時(shí)默認(rèn)會(huì)讀取/usr/java下的jdk路徑,也可以通過CDM 在主機(jī)下配置
mkdir -p /usr/java
jdk-8u141-linux-x64.rpm上傳
rpm -ivh jdk-8u141-linux-x64.rpm安裝
vim /etc/profile設(shè)置環(huán)境變量
source /etc/profile
修改swapiness 和huge page(所有機(jī)器執(zhí)行)
huge page
Hadoop是個(gè)高密集型內(nèi)存運(yùn)算系統(tǒng),Cloudera官方關(guān)閉THP
參考文檔:
echo never > /sys/kernel/mm/transparent_hugepage/enabled
echo never > /sys/kernel/mm/transparent_hugepage/defrag
swAppiness
swappiness的值的大小對(duì)如何使用swap分區(qū)是有著很大的聯(lián)系的。swappiness=0的時(shí)候表示最大限度使用物理內(nèi)存,然后才是 swap空間,swappiness=100的時(shí)候表示積極的使用swap分區(qū),并且把內(nèi)存上的數(shù)據(jù)及時(shí)的搬運(yùn)到swap空間里面。兩個(gè)極端,對(duì)于ubuntu的默認(rèn)設(shè)置,這個(gè)值等于60,建議修改為10
cat /proc/sys/vm/swappiness查看swapiness
sysctl vm.swappiness=10臨時(shí)設(shè)置
vim /etc/sysctl.conf永久修改,重啟后生效
vm.swappiness=10
安裝mysql(一般主節(jié)點(diǎn)或非集群節(jié)點(diǎn)上安裝)
安裝mysql
Cloudera-Manager安裝cdh時(shí),通默認(rèn)使用內(nèi)嵌的PostgreSQL數(shù)據(jù)庫,更多應(yīng)用場景下使用的是mysql
rpm -qa|grep mysql
yum install mysql
systemctl start mysql啟動(dòng)
systemctl enable mysql設(shè)為開機(jī)啟動(dòng)
創(chuàng)建scm、hive、hue、oozie、monitor數(shù)據(jù)庫(集群搭建前期只要?jiǎng)?chuàng)建cloudera manager基礎(chǔ)數(shù)據(jù)庫scm就行,也可后期根據(jù)需要安裝的插件再創(chuàng)建對(duì)應(yīng)的元數(shù)據(jù)庫)
CREATE DATABASE `scm` /*!40100 DEFAULT CHARACTER SET utf8 */
CREATE DATABASE `hue` /*!40100 DEFAULT CHARACTER SET utf8 */
CREATE DATABASE `oozie` /*!40100 DEFAULT CHARACTER SET utf8 */
CREATE DATABASE `monitor` /*!40100 DEFAULT CHARACTER SET utf8 */
CREATE DATABASE `hive` /*!40100 DEFAULT CHARACTER SET utf8 */
下載mysql-connector-java.jar并拷貝到/usr/share/java 目錄(所有機(jī)器上執(zhí)行)
創(chuàng)建用戶
create user scm@"%" identified by "scm"創(chuàng)建scm用戶
grant all on *.* to scm@"scm" identified by "scm"授權(quán)
flush privileges刷新權(quán)限
systemctl restart mysql重啟
安裝CM
主節(jié)點(diǎn)
yum install cloudera-manager-daemons cloudera-manager-agent cloudera-manager-server
(當(dāng)前機(jī)器上已經(jīng)安裝,所以顯示的是installed)
===================== 等待安裝 ====================
其他節(jié)點(diǎn)
安裝完成后將
/var/cache/yum/x86_64/7/cloudera-manager/packages 下的緩存的daemons 和agent rpm 包拷貝到其他節(jié)點(diǎn) /var/cache/yum/x86_64/7/cloudera-manager/packages
執(zhí)行安裝(除主節(jié)點(diǎn)外所有機(jī)器)
yum install cloudera-manager-daemons cloudera-manager-agent
配置CM Server(除主節(jié)點(diǎn)外所有機(jī)器)
vim /etc/cloudera-scm-agent/config.ini
修改此處的server_host為CMmaster 地址
初始化CM配置
數(shù)據(jù)庫和CM在一臺(tái)機(jī)器上
/opt/cloudera/cm/schema/scm_prepare_database.sh mysql scm scm scm
數(shù)據(jù)庫和CM不在一臺(tái)機(jī)器上
/opt/cloudera/cm/schema/scm_prepare_database.sh mysql -h dbhost --scm-host master scm scm scm
(后面scm分別是數(shù)據(jù)庫名 用戶名 密碼)
初始化成功后如下圖(借網(wǎng)上截圖)
啟動(dòng)CM server和CM agent
cloudera-scm-server
systemctl start cloudera-scm-server
查看啟動(dòng)日志
tail -f /var/log/cloudera-scm-server/cloudera-scm-server.log
CM 服務(wù)使用的是jetty 部署,看到日志正常jetty server 啟動(dòng)成功表示server服務(wù)啟動(dòng)ok
cloudera-scm-agent(注意主節(jié)點(diǎn)上也安裝了agent 所以也需要啟動(dòng))
systemctl start cloudera-scm-agent
服務(wù)啟動(dòng)OK后可以登錄管理后臺(tái)賬戶/密碼:admin/admin
安裝CDH
安裝 進(jìn)入CM 后臺(tái)后開始安裝集群
這里會(huì)檢測到每個(gè)agent 機(jī)器
此處CM server 會(huì)下載CDH parcel 包,并且分發(fā)到其他agent 節(jié)點(diǎn)并解壓安裝(借別人圖示例,實(shí)際上搭建的是3個(gè)節(jié)點(diǎn))
注意:
將離線的parcels包、sha和torrent文件拷貝到parcel-repo 路徑下,重啟server
搭建集群
選擇安裝的服務(wù),這里選擇自定義
分配角色
給組件分配對(duì)應(yīng)的元數(shù)據(jù)庫
確認(rèn)服務(wù)配置
啟動(dòng)
角色分布概覽
問題
由于后臺(tái)進(jìn)程是由supervisor 管理,當(dāng)手動(dòng)kill掉進(jìn)程后,supervisor 會(huì)將其重啟。
例如,CDH 集群和CM 都停止服務(wù)后,9000 端口仍然會(huì)被占用,是因?yàn)閟upervisor 管理的進(jìn)程沒有被kill,systemctl status supervisord
環(huán)境搭建結(jié)束
至此,CDH 集群搭建完成。集群中不只是hadoop 集群,還包含其他組件集群,例如hbase集群、spark 集群和其他客戶端組件,包括hive/impala/hue 等。
通過CM 管理的集群,CM service讓我們可以更加直觀的了解到個(gè)各個(gè)主機(jī)的運(yùn)行狀況,以及各個(gè)組件的健康狀態(tài),管理起來更加方便。
整個(gè)CDH 集群涉及到的內(nèi)容知識(shí)很多且復(fù)雜,環(huán)境搭建好了接下來就是慢慢求索,不斷整個(gè)業(yè)務(wù),不斷學(xué)習(xí)知識(shí)體系,不斷進(jìn)步吧。