1. 安裝CDH的準備工作(所有節點都要執行)
1.1 準備環境
角色 | IP |
k8s-master | 192.168.181.129 |
k8s-node1 | 192.168.181.130 |
k8s-node2 | 192.168.181.131 |
1.2 安裝JDK
# https://www.oracle.com/java/technologies/downloads/#java11
wget
rpm -ivh jdk-11.0.21_linux-x64_bin.rpm$. vi /etc/profile
JAVA_HOME=/usr/java/jdk-11/
CLASSPATH=.:$JAVA_HOME/lib/jrt-fs.jar
PATH=$JAVA_HOME/bin:$HOME/bin:$HOME/.local/bin:$PATH
1.3 更改主機名和hosts
# 更改3臺主機hostname,每個主機上按ip遞增的順序,分別執行下面一條命令:# echo "bigdata01.dpcg.com" > /etc/hostname
# echo "bigdata02.dpcg.com" > /etc/hostname
# echo "bigdata03.dpcg.com" > /etc/hostname# ===================================================== #
# 在3臺機器中分別執行如下命令:
# echo "10.101.15.229 bigdata01.dpcg.com bigdata01" >> /etc/hosts
# echo "10.101.15.230 bigdata02.dpcg.com bigdata02" >> /etc/hosts
# echo "10.101.15.231 bigdata03.dpcg.com bigdata03" >> /etc/hosts# use
cat >> /etc/hosts << EOF
192.168.31.52 cdh-master-52 cdh-master-52.com
192.168.31.53 cdh-node1-53 cdh-node1-53.com
192.168.31.54 cdh-node2-54 cdh-node2-54.com
192.168.31.55 cdh-node3-55 cdh-node3-55.com
EOF
1.4 關閉防火墻
并重啟服務器使hostname和selinux的配置生效
$. systemctl stop firewalld
$. systemctl disable firewalld
$. systemctl status firewalld
$. sed -i "s/SELINUX=enforcing/SELINUX=disabled/" /etc/selinux/config$. getenforce
$. sestatus -v
1.5 安裝NTP服務
#在所有節點
$. yum -y install ntp# 在master節點,注釋掉原有的server指向把時間服務器的域名地址指向一個靠譜可連的時間服務器,
# 我選擇的是ntp.api.bz.
$. vi /etc/ntp.conf……# 添加修改上層時間服務器,如果能聯通外網,則不需要修改server 0.centos.pool.ntp.org iburstserver 1.centos.pool.ntp.org iburstserver 2.centos.pool.ntp.org iburstserver 3.centos.pool.ntp.org iburst# server ntp.api.gz iburst
......# 在其余的節點上,把時間服務器的server指向master namenode節點
$. vi /etc/ntp.conf……#server 0.centos.pool.ntp.org iburst#server 1.centos.pool.ntp.org iburst#server 2.centos.pool.ntp.org iburst#server 3.centos.pool.ntp.org iburstserver 172.17.28.1 iburst
......# 在所有節點
systemctl enable ntpd --now
systemctl status ntpd
systemctl start ntpd
systemctl restart ntpd#查詢上級服務時間
[root@localhost etc]# ntpq -p#查看時間同步狀態
[root@localhost etc]# ntpstat
1.6 關閉透明大頁
echo "echo never > /sys/kernel/mm/transparent_hugepage/enabled" >> /etc/rc.local
echo "echo never > /sys/kernel/mm/transparent_hugepage/defrag" >> /etc/rc.local
1.7 磁盤寫進fstab
lsblk -f | egrep '\/[a-z]+' | awk '{print "UUID="$(NF-1)"\t"$NF"\t"$(NF-2)"\t""defaults,noatime""\t""0 0"}'| sort -k2 >> /etc/fstab
1.8 其它調優
1. 設置最大可大開文件數* soft nofile 10240* hard nofile 10240* soft nproc 65565* hard nproc 655652. TCP連接優化# 查看連接數(一般默認1024)netstat -an|wc -l# 查看連接數范圍cat /proc/sys/net/ipv4/ip_local_port_range# 打開 vi /etc/sysctl.conf 文件后在文件末尾加上如下配置: $. vi /etc/sysctl.confnet.ipv4.tcp_syncookies = 1net.ipv4.tcp_tw_reuse = 1net.ipv4.tcp_tw_recycle = 1net.ipv4.tcp_fin_timeout = 30# 端口范圍net.ipv4.ip_local_port_range = 1024 65000或者執行:echo net.ipv4.ip_local_port_range = 1024 65000 >> /etc/sysctl.confecho "net.ipv4.ip_forward=1" >>/etc/sysctl.conf# 驗證, 輸入命令: sysctl net.ipv4.ip_forward, 返回為1即可# 通過命令行設置: sysctl -w net.ipv4.ip_forward=1net.ipv4.ip_forward = 1# 執行生效即可 sysctl -p# ============================================================ #
# 永久關閉Swap步驟:
1. swapoff -a # 臨時關閉
2. 永久關閉編輯/etc/fstab文件, 使用文本編輯器打開該文件: vi /etc/fstab在文件中找到含有swap的行, 并在行首添加#注釋符, 以將其注釋掉。例如: # /dev/mapper/centos-swap swap swap defaults 0 0或者是# UUID=<swap分區的UUID> none swap sw 0 0保存并關閉文件。重新啟動系統。reboot3. 執行以下命令來驗證Swap是否已經被禁用: free -h現在, Swap已經被永久關閉了。
2. CDH版本選擇
old:
CDH版本選擇:建議5.4.8和5.8.0版本,如需要版本較高可以選擇5.12版本,目前6.x版本還沒有使用過,請注意,千萬不要選擇5.11.0版本。
這里選擇最新版本6.3.2。
在CDH5版本中,JDK一般安裝為JDK8,還需要安裝python環境,可以選擇python2.6.X或者python2.7.x都可以。
now:
最新版本為:Index of cm6/6.3.1/redhat7/yum/RPMS/x86_64/
https://www.cloudera.com/downloads.html
3. CDH的安裝方式選擇
方式一: rpm包安裝:
- 先離線下載rpm文件,再進行安裝,安裝過程中會下載相應的依賴,比較穩定,但安裝要求較高。
- 此安裝方式開始配置時較麻煩,但之后安裝很方便,建議使用,具體安裝方式請參考上述相關文章鏈接中的第五章CDH的安裝和部署。
方式二: bin文件安裝:
- 通過bin文件安裝一般用于在線安裝,對網絡要求比較高,如果現在過程中網絡中斷會造成安裝失敗,但此方法安裝簡單,全程傻瓜式安裝。
- bin文件安裝參考網址:https://www.cnblogs.com/ljy2013/p/4662191.html https://www.cnblogs.com/leocook/p/cdh_management.html
- 此方法為去http://archive.cloudera.com/cm5/installer/latest/cloudera-manager-installer.bin 中下載bin文件,再執行bin文件進行安裝。
方式三: tar包安裝
不是很了解tar包的安裝方式,但使用tar包安裝會有依賴未安裝而造成安裝失敗的異常,不建議使用。
4. CDH的下載
4.1. cm的tar包下載
cm6.3.1下載地址:https://archive.cloudera.com/cm6/6.3.1/repo-as-tarball/
下載allkeys.asc文件:
4.2. parcels包下載
cdh6.3.2下載地址:https://archive.cloudera.com/cdh6/6.3.2/parcels/
請選擇對應的版本,el7,并將后綴.sha1更改為.sha。
5. 配置CDH的離線安裝
目的:將上述下載的4個文件上傳到centos7服務器中,并配置好離線服務,安裝時即可以從該離線服務中下載,不需要再從官網中去下載,防止網絡錯誤。
5.1 在master節點上安裝httpd
# 查看該centos7是否存在httpd服務
rpm -qa|grep httpd# 如果不存在該服務就安裝
yum install -y httpd# 啟動該服務
systemctl start httpd.service #啟動
systemctl stop httpd.service #停止
systemctl restart httpd.service #重啟# 設置該服務是否開機啟動
systemctl enable httpd.service #開機啟動
systemctl disable httpd.service #開機不啟動# 查看該服務的狀態
systemctl status httpd.service
當訪問該服務器的80端口出現如下畫面即為安裝和啟動成功
5.2 創建 parcels文件
# 在/var/www/html下創建一個parcels文件夾,并將上述下載的3個文件上傳到該目錄下
cd /var/www/html/
mkdir cdh6.3.2/parcels -p
# 上傳如下3個文件
CDH-6.3.2-1.cdh6.3.2.p0.1605554-el7.parcel
CDH-6.3.2-1.cdh6.3.2.p0.1605554-el7.parcel.sha
manifest.json# 校驗文件下載未損壞
/usr/bin/sha1sum CDH-6.3.2-1.cdh6.3.2.p0.1605554-el7.parcel
cat CDH-6.3.2-1.cdh6.3.2.p0.1605554-el7.parcel.sha
如果2個驗證碼一樣,證明該文件未損壞,可以使用:
在瀏覽器中能打開如下網址,證明配置成功:
http://10.101.15.229/cdh6.3.2/parcels/
5.3 創建cm文件
# 在/var/www/html創建cm5/redhat/7/x86_64/文件夾(和官網一樣的路徑)
cd /var/www/html/
mkdir -p cm6/redhat/7/x86_64/cm # 上傳cm6.3.1-redhat7.tar.gz包到/var/www/html目錄下,并解壓
tar -xf cm6.3.1-redhat7.tar.gz
mv cm6.3.1 6.3.1# 將解壓好的文件夾移動到上述創建的文件夾下
mv 6.3.1 /var/www/html/cm6/redhat/7/x86_64/cm!上傳allkeys.asc文件到/var/www/html/cm6/redhat/7/x86_64/cm/6.3.1 文件夾下# 配置本地的yum源,cdh集群在安裝時會就從本地down包,不會從官網了,
# 注意: 所有節點都要執行!!!
vim /etc/yum.repos.d/cloudera-manager.repo#在該文件下插入如下數據
[cloudera-manager]
name=Cloudera Manager
baseurl= http://10.101.15.229/cm6/redhat/7/x86_64/cm/6.3.1/
gpgkey = http://10.101.15.229/cm6/redhat/7/x86_64/cm/6.3.1/RPM-GPG-KEY-cloudera
gpgcheck = 1
在瀏覽器中出現如下界面:
http://10.101.15.229/cm6/redhat/7/x86_64/cm/6.3.1/
5.4 安裝CM的server+agent
# 進入上述創建的CM的文件目錄下
# cd /var/www/html/cm5/redhat/7/x86_64/cm/5.7.0/RPMS/x86_64/
cd /var/www/html/cm6/redhat/7/x86_64/cm/6.3.1/RPMS/x86_64/# 安裝cloudera-manager-daemons-6.3.1-1466458.el7.x86_64.rpm
yum install cloudera-manager-daemons-6.3.1-1466458.el7.x86_64.rpm# 安裝cloudera-manager-server-6.3.1-1466458.el7.x86_64.rpm,
# 請注意,不用安裝db版本的,那是使用默認數據庫的,在生產環境中一般不使用,
# 生產環境中是使用MySQL數據庫的
yum -y install cloudera-manager-server-6.3.1-1466458.el7.x86_64.rpm
5.5 配置Postgresql數據庫
在master節點上安裝postgre數據庫,安裝過程參考:centos7系統下postgresql11離線安裝,卸載
數據庫安裝完成后,創建名稱為cdh的數據庫實例。
修改 /etc/cloudera-scm-server/db.properties
內容如下:
com.cloudera.cmf.db.type=postgresql
com.cloudera.cmf.db.host=10.101.15.229:5432
com.cloudera.cmf.db.name=cdh
com.cloudera.cmf.db.user=postgres
com.cloudera.cmf.db.password=123456
#com.cloudera.cmf.db.setupType=EXTERNAL #注意:最后一行要注釋掉,否則會報INVALID value is specified for db.setupType的異常
5.6 啟動cloudera-scm-server服務并查看日志
#啟動
service cloudera-scm-server start
service cloudera-scm-server statusservice cloudera-scm-server restart# 在啟動時有可能碰到The server time zone value 'EDT' is unrecognized異常,
# 這是mysql的時區和系統的時區不匹配,可以參考如下網站解決
https://blog.csdn.net/u010003835/article/details/88974898#查看日志
cd /var/log/cloudera-scm-server/
tail -f cloudera-scm-server.log
# 出現如下7180即證明啟動成功
WebServerImpl:org.mortbay.log: Started SelectChannelConnector@0.0.0.0:7180
成功圖片如下所示:
此時查看Postgre數據庫,會發現cmf數據庫下回自動創建表:
5.7 在瀏覽器的web頁面上安裝CM
當service cloudera-scm-server start
啟動成功后,即可以在瀏覽器上服務7180
端口(需開放防火墻)。
登錄CM的web界面
在瀏覽器中輸入http://10.101.15.229:7180/cmf/login
,登錄CM的web界面,賬號和密碼均為admin
:
點擊同意許可:
點擊繼續:
選擇CM的版本:
歡迎頁面,點擊繼續:
設置集群名稱:
使用搜索模式,搜索需要安裝CDH的主機:
5.8 在瀏覽器的web頁面上安裝CDH集群
選擇存儲庫
點擊更多選項,將其他遠程Parcel刪除,并輸入先前配置好的Parcel:
http://10.101.15.229/cm6/redhat/7/x86_64/cm/6.3.1/
http://10.101.15.229/cdh6.3.2/parcels/
是否需要安裝JDK
默認不進行安裝,直接下一步:
提供 SSH 登錄憑據
提供 SSH 登錄憑據,可以自由選擇,這里直接使用root用戶:
點擊繼續
安裝選定Parcel
先前配置的Parcel就作用于此處,如果不進行此配置會去官網進行下載,對網絡要求很高,并網絡中斷后會重新下載,較麻煩,使用此配置可以直接下載成功,并速度很快:
完成安裝
5.8 集群設置
5.8.1 選擇服務
5.8.2 自定義角色分配
自定義角色分配,一般將主色分配到master節點,所以該節點內存要大,zookeeper需要安裝奇數臺,這里是只安裝了一臺,不合理,請安裝3臺以上的奇數臺:
5.8.3 數據庫設置
進行數據庫設置,這里使用Postgre數據庫:
5.8.4 審核更改
此步驟中不管是開發測試還是生產環境,均不需要更改,直接點擊繼續,進行下一步:
5.8.5 審核更改
首次運行,會自動運行,運行之后點擊繼續按鈕即可:
6. 安裝成功:
此狀態為主機配置較低,運行不良,對集群無影響,可以正常工作。
7. 安裝kerberos(選裝)
(一般人不需要安這個玩意兒,到此cdh安裝就結束了)
# 安裝kerberos,注意要安裝1.15.1-50.el7版本左右的,不能太低,不然CDH開啟kerberos報錯
# kerberos 1.15.1-50.el7版本在CentOS-7-x86_64-DVD-2009.iso鏡像的yum源里就有
# 選擇一個節點安裝kerberos服務端
yum -y install krb5-server openldap-clients# 所有節點安裝客戶端及相關庫
yum install -y krb5-workstation krb5-libs# 所有節點修改krb5.conf
sudo vi /etc/krb5.conf# krb5.conf示例內容如下:
# Configuration snippets may be placed in this directory as well
includedir /etc/krb5.conf.d/
[logging]default = FILE:/var/log/krb5libs.logkdc = FILE:/var/log/krb5kdc.logadmin_server = FILE:/var/log/kadmind.log
[libdefaults]dns_lookup_realm = falseticket_lifetime = 24hrenew_lifetime = 7dforwardable = truerdns = falsepkinit_anchors = FILE:/etc/pki/tls/certs/ca-bundle.crtdefault_realm = kunlun.test
# default_ccache_name = KEYRING:persistent:%{uid}
[realms]kunlun.test = {kdc = bjzj1-vbig-tmp02admin_server = bjzj1-vbig-tmp02}[domain_realm].bjzj1-vbig-tmp02 = kunlun.testbjzj1-vbig-tmp02 = kunlun.test# kerberos服務節點修改kdc.conf
sudo vi /var/kerberos/krb5kdc/kdc.conf# kdc.conf示例內容如下:
[kdcdefaults]kdc_ports = 88kdc_tcp_ports = 88
[realms]kunlun.test = {#master_key_type = aes256-ctsmax_renewable_life = 7d 0h 0m 0sdefault_principal_flags = +renewableacl_file = /var/kerberos/krb5kdc/kadm5.acldict_file = /usr/share/dict/wordsadmin_keytab = /var/kerberos/krb5kdc/kadm5.keytabsupported_enctypes = aes256-cts:normal aes128-cts:normal des3-hmac-sha1:normal arcfour-hmac:normal camellia256-cts:normal camellia128-cts:normal des-hmac-sha1:normal des-cbc-md5:normal des-cbc-crc:normal}max_life = 24h# kerberos服務節點修改kadm5.acl
sudo vi /var/kerberos/krb5kdc/kadm5.acl# kadm5.acl示例內容如下:
*/admin@kunlun.test *#創建數據庫
kdb5_util create -r kunlun.test -s# 開啟kdc、kadmin服務
sudo systemctl start krb5kdc
sudo systemctl start kadmin
systemctl enable krb5kdc
systemctl enable kadmin# 創建管理員賬戶,用于CDH開啟kerberos時自動創建principal
kadmin.local:addprinc admin/admin
# 記得創建完后測試下該用戶