文章目錄
- @[toc]
- 一、CM簡介
- 1、ClouderaManager的概念
- 2、ClouderaManager的功能
- 3、ClouderaManager的架構
- 二、準備清單
- 1、部署步驟
- 2、集群規劃
- 3、軟件環境準備
- 三、安裝清單
- 1、操作系統iso包
- 2、JDK包
- 3、MySQL包
- 4、CM和CDH包
- 5、部署ansible
- 四、基礎環境準備
- 1、配置網絡
- 2、配置host解析
- 3、關閉防火墻
- 4、配置swap
- 5、關閉透明大頁
- 6、 配置最大進程數和最大文件句柄數
- 7、禁用atime(暫時不操作)
- 8、搭建私有源
- 1)配置centos源(h1)
- 2)安裝httpd
- 3)centos源配置為http方式獲取
- 4)部署離線parcel源
- 5)生成repodata文件
- 6)配置cm服務端源
- 7)配置cm客戶端源
- 8)配置cdh服務端源
- 9)配置cdh客戶端源
- 11、配置chronyd
- 1)時區設置為本地時區
- 1)配置chrony服務端
- 2)配置chronyd客戶端
- 12、安裝jdk
- 13、安裝MySQL
- 1)下載安裝
- 2)安全加固
- 3)登錄查看
- 4)配置遠程登錄
- 5)卸載MySQL
- 五、CM6.3.1安裝步驟
- 1、配置JDBC驅動包
- 2、修改MySQL配置文件
- 3、創建cm所數據庫
- 1)創建所需數據
- 2)按照官方創建數據庫
- 3、安裝服務端
- 4、安裝客戶端
- 5、初始化scm庫
- 1)MySQL和服務同機
- 2)MySQL和服務不同機
- 3)CM的數據庫配置文件已經修改
- 4)啟動server
- 5)配置本地的parcel文件
- 6)修改config.ini
- 7)上傳allkeys.asc
- 6、訪問
- 六、配置集群
- 1、登錄配置
- 2、設置集群名
- 3、選擇集群主機
- 4、配置CDH安裝包
- 5、配置CDH parcel的位置
- 6、安裝Agent
- 7、安裝parcels
- 8、檢查集群
- 9、選擇服務
- 1)選擇安裝的內容和服務
- 2)自定義角色分配
- 3)數據庫配置
- 4)CM管理頁面
文章目錄
- @[toc]
- 一、CM簡介
- 1、ClouderaManager的概念
- 2、ClouderaManager的功能
- 3、ClouderaManager的架構
- 二、準備清單
- 1、部署步驟
- 2、集群規劃
- 3、軟件環境準備
- 三、安裝清單
- 1、操作系統iso包
- 2、JDK包
- 3、MySQL包
- 4、CM和CDH包
- 5、部署ansible
- 四、基礎環境準備
- 1、配置網絡
- 2、配置host解析
- 3、關閉防火墻
- 4、配置swap
- 5、關閉透明大頁
- 6、 配置最大進程數和最大文件句柄數
- 7、禁用atime(暫時不操作)
- 8、搭建私有源
- 1)配置centos源(h1)
- 2)安裝httpd
- 3)centos源配置為http方式獲取
- 4)部署離線parcel源
- 5)生成repodata文件
- 6)配置cm服務端源
- 7)配置cm客戶端源
- 8)配置cdh服務端源
- 9)配置cdh客戶端源
- 11、配置chronyd
- 1)時區設置為本地時區
- 1)配置chrony服務端
- 2)配置chronyd客戶端
- 12、安裝jdk
- 13、安裝MySQL
- 1)下載安裝
- 2)安全加固
- 3)登錄查看
- 4)配置遠程登錄
- 5)卸載MySQL
- 五、CM6.3.1安裝步驟
- 1、配置JDBC驅動包
- 2、修改MySQL配置文件
- 3、創建cm所數據庫
- 1)創建所需數據
- 2)按照官方創建數據庫
- 3、安裝服務端
- 4、安裝客戶端
- 5、初始化scm庫
- 1)MySQL和服務同機
- 2)MySQL和服務不同機
- 3)CM的數據庫配置文件已經修改
- 4)啟動server
- 5)配置本地的parcel文件
- 6)修改config.ini
- 7)上傳allkeys.asc
- 6、訪問
- 六、配置集群
- 1、登錄配置
- 2、設置集群名
- 3、選擇集群主機
- 4、配置CDH安裝包
- 5、配置CDH parcel的位置
- 6、安裝Agent
- 7、安裝parcels
- 8、檢查集群
- 9、選擇服務
- 1)選擇安裝的內容和服務
- 2)自定義角色分配
- 3)數據庫配置
- 4)CM管理頁面
一、CM簡介
1、ClouderaManager的概念
?簡單來說,Cloudera Manager是一個擁有集群自動化安裝、中心化管理、集群監控、報警功能的一個工具(軟件),使得安裝集群從幾天的時間縮短在幾個小時內,運維人員從數十人降低到幾人以內,極大的提高集群管理的效率。
2、ClouderaManager的功能
- 1)、管理:對集群進行管理,如添加、刪除節點等操作。
- 2)、監控:監控集群的健康情況,對設置的各種指標和系統運行情況進行全面監控。
- 3)、診斷:對集群出現的問題進行診斷,對出現的問題給出建議解決方案。
- 4)、集成:多組件進行整合。
3、ClouderaManager的架構
- 1)、Server:負責軟件安裝、配置,啟動和停止服務,管理服務運行的群集。
- 2)、Agent:安裝在每臺主機上。負責啟動和停止的過程,配置,監控主機。
- 3)、Management Service:由一組執行各種監控,警報和報告功能角色的服務。
- 4)、Database:存儲配置和監視信息。
- 5)、Cloudera Repository:軟件由Cloudera 管理分布存儲庫。(有點類似Maven的中心倉庫)
- 6)、Clients:是用于與服務器進行交互的接口(API和Admin Console)
CM6.3.1+CDH6.3.2 組件版本如下:
組件 | 版本 | 發行版 | CDH |
---|---|---|---|
版本Supervisord | 3 | 不可用 | 不適用 |
Cloudera Manager Agent | 6.3.1 | 1466458.el7 | 不適用 |
Cloudera Manager Management Daemon | 6.3.1 | 1466458.el7 | 不適用 |
Flume NG | 1.9.0+cdh6.3.2 | 1605554 | CDH 6.3.2 |
Hadoop | 3.0.0+cdh | 6.3.2 | 1605554 |
HDFS | 3.0.0+cdh | 6.3.2 | 1605554 |
HttpFS | 3.0.0+cdh | 6.3.2 | 1605554 |
hadoop-kms | 3.0.0+cdh6.3.2 | 1605554 | CDH 6.3.2 |
MapReduce 2 | 3.0.0+cdh6.3.2 | 1605554 | CDH 6.3.2 |
YARN | 3.0.0+cdh6.3.2 | 1605554 | CDH 6.3.2 |
HBase | 2.1.0+cdh6.3.2 | 1605554 | CDH 6.3.2 |
Lily HBase Indexer | 1.5+cdh6.3.2 | 1605554 | CDH 6.3.2 |
Hive | 2.1.1+cdh6.3.2 | 1605554 | CDH 6.3.2 |
HCatalog | 2.1.1+cdh6.3.2 | 1605554 | CDH 6.3.2 |
Hue | 4.2.0+cdh6.3.21605554 | CDH 6.3.2 | |
Impala | 3.2.0+cdh6.3.2 | 1605554 | CDH 6.3.2 |
Java 8 | java version 1.8.0_131 | 不可用 | 不適用 |
Kafka | 2.2.1+cdh6.3.2 | 1605554 | CDH 6.3.2 |
Kite(僅限 CDH 5 ) | 1.0.0+cdh6.3.2 | 1605554 | CDH 6.3.2 |
kudu | 1.10.0+cdh6.3.2 | 1605554 | CDH 6.3.2 |
Oozie | 5.1.0+cdh6.3.2 | 1605554 | CDH 6.3.2 |
Parquet | 1.9.0+cdh6.3.2 | 1605554 | CDH 6.3.2 |
Pig | 0.17.0+cdh6.3.2 | 1605554 | CDH 6.3.2 |
sentry | 2.1.0+cdh6.3.2 | 1605554 | CDH 6.3.2 |
Solr | 7.4.0+cdh6.3.2 | 1605554 | CDH 6.3.2 |
spark | 2.4.0+cdh6.3.2 | 1605554 | CDH 6.3.2 |
Sqoop | 1.4.7+cdh6.3.2 | 1605554 | CDH 6.3.2 |
ZooKeeper | 3.4.5+cdh6.3.2 | 1605554 | CDH 6.3.2 |
二、準備清單
1、部署步驟
- 網絡配置(所有節點)
- hosts配置
- 關閉防火墻(所有節點)
- 免密(所有節點)
- ntpd同步
- 安裝jdk-u8-131(所有節點)
- 安裝MySQL(主節點)
- 初始化MySQL(主節點)
- 部署/啟動CM Server(主節點)
- 部署/啟動CM Agent(從節點)
- 配置CDH
其他
- 停止集群步驟
- 啟動集群步驟
2、集群規劃
節點名稱 | IP | CentoS | CPU | 內存 | 磁盤 | 組件 |
---|---|---|---|---|---|---|
h1 | 192.168.6.61 | 7.9 | 2 | 10G | /dev/sda3 250G | mysql5.7,http,ntp,jdk-8u131 |
h2 | 192.168.6.62 | 7.9 | 2 | 8G | /dev/sda3 250G | ntp,jdk-8u131 |
h3 | 192.168.6.63 | 7.9 | 2 | 8G | /dev/sda3 250G | ntp,jdk-8u131 |
h4 | 192.168.6.64 | 7.9 | 2 | 8G | /dev/sda3 250G | ntp,jdk-8u131 |
3、軟件環境準備
序號 | 軟件名稱 | 版本信息 | 備注 |
---|---|---|---|
1 | Centos操作系統發行版 | CentOS Linux release 7.9.2009 x86_64 | CDH要求7.2或更高 |
2 | MySQL數據庫 | 5.7.43 x86_64 | CDH6推薦5.7或更高,務必使用utf8編碼而非utf8mb4編碼 |
3 | JDK | 1.8.0_181 x86_64 | CDH6將不再支持JDK1.7推薦1.8u181 |
4 | python | 2.7.5 | |
5 | CDH | 6.3.2 | |
6 | CM | 6.3.1 |
三、安裝清單
1、操作系統iso包
- 本地鏡像yum源包:CentOS-7-x86_64-Everything-2003.iso
- 下載地址:https://developer.aliyun.com/mirror/
2、JDK包
- JDK包:jdk-8u281-linux-x64.tar.gz
- 下載地址:https://www.oracle.com/java/technologies/downloads/archive/
3、MySQL包
- MySQL包:mysql-5.7.36-linux-glibc2.12-x86_64.tar.gz
- MySQL驅動包:mysql-connector-java-5.1.49.jar
- 下載地址:https://downloads.mysql.com/archives/community/
4、CM和CDH包
CM包:
allkeys.asc
cloudera-manager-agent-6.3.1-1466458.el7.x86_64.rpm
cloudera-manager-agent-6.3.1-1466458.el7.x86_64.rpm
cloudera-manager-daemons-6.3.1-1466458.el7.x86_64.rpm
cloudera-manager-server-6.3.1-1466458.el7.x86_64.rpm
cloudera-manager-server-db-2-6.3.1-1466458.el7.x86_64.rpm
enterprise-debuginfo-6.3.1-1466458.el7.x86_64.rpm
oracle-j2sdk1.8-1.8.0+update181-1.x86_64.rpm
CDH包:
CDH-6.3.2-1.cdh6.3.2.p0.1605554-el7.parcel
CDH-6.3.2-1.cdh6.3.2.p0.1605554-el7.parcel.sha1
CDH-6.3.2-1.cdh6.3.2.p0.1605554-el7.parcel.sha256
manifest.json
5、部署ansible
安裝方式二
#登錄后復制
cd /tmp
wget -c https://github.com/ghl1024/ansible-offline-install/releases/download/V1/ansible-offline-install.tar.gz
tar xf ansible-offline-install.tar.gz
cd ansible
sh install.sh
#設置參數為不檢查key
sed -i "s/#host_key_checking = False/host_key_checking = False/g" /etc/ansible/ansible.cfg#如果有提示安裝則安裝
yum install -y sshpass
cat >/etc/ansible/hosts <<EOF
[all:vars]
ansible_ssh_user='root'
ansible_ssh_port=7009
ansible_ssh_pass='Abcd@123456'
[k8s]
192.168.6.61
192.168.6.62
192.168.6.63
192.168.6.64
EOFansible all -m raw -a " df -h"
四、基礎環境準備
1、配置網絡
?Centos7靜態網絡配置文件是/etc/sysconfig/network-scripts/ifcfg-,我本機網絡接口名稱為p2p1,修改所有節點網絡配
[root@localhost ~]# cat /etc/sysconfig/network-scripts/ifcfg-ens160
TYPE=Ethernet
BOOTPROTO=static
DEFROUTE=yes
NAME=ens160
DEVICE=ens160
ONBOOT=yes
IPADDR=192.168.6.61 #改為對應節點IP
GATEWAY=192.168.6.1
NETMASK=255.255.255.0
DNS1=61.139.2.69
DNS2=8.8.8.8#重啟網絡可立即生效
systemctl restart network
2、配置host解析
- 所有節點操作
#修改所有節點的hostname,重啟節點立即生效
ansible 192.168.6.61 -m raw -a "hostnamectl set-hostname h1"
ansible 192.168.6.62 -m raw -a "hostnamectl set-hostname h2"
ansible 192.168.6.63 -m raw -a "hostnamectl set-hostname h3"
ansible 192.168.6.64 -m raw -a "hostnamectl set-hostname h4"
- 所有節點操作
ansible all -m raw -a "echo '192.168.6.61 h1' >>/etc/hosts"
ansible all -m raw -a "echo '192.168.6.62 h2' >>/etc/hosts"
ansible all -m raw -a "echo '192.168.6.63 h3' >>/etc/hosts"
ansible all -m raw -a "echo '192.168.6.64 h4' >>/etc/hosts"
3、關閉防火墻
- 所有節點操作
ansible all -m raw -a "systemctl stop firewalld"
ansible all -m raw -a "systemctl disable firewalld" #關閉seliunx
ansible all -m raw -a "sed -i 's#SELINUX=enforcing#SELINUX=disabled#g' /etc/selinux/config"
ansible all -m raw -a "setenforce 0"
4、配置swap
?內核參數swappiness用于控制系統在內存緊張時將內存中的數據交換到硬盤交換空間(swap)中 ,一般而言,swappiness值可以設置在 0 到 100 之間。內核版本3.5及以上、Red Hat內核版本2.6.32-303及以上推薦設置一個比較小的值,而不要禁用交換。
ansible all -m raw -a "echo \"vm.swappiness=10\">> /etc/sysctl.conf"DD
#ansible all -m raw -a "echo \"net.ipv6.conf.all.disable_ipv6 = 1\">> /etc/sysctl.conf"
ansible all -m raw -a "sysctl -p"
- Cloudera建議將交換空間設置為0,過多的交換空間會引起GC耗時的激增。
5、關閉透明大頁
#臨時關閉
ansible all -m raw -a "echo never > /sys/kernel/mm/transparent_hugepage/defrag"
ansible all -m raw -a "echo never > /sys/kernel/mm/transparent_hugepage/enabled"#永久關閉,每個節點添加
cat >>/etc/rc.d/rc.local<<EOF
if test -f /sys/kernel/mm/transparent_hugepage/enabled; thenecho never > /sys/kernel/mm/transparent_hugepage/enabled
fi
if test -f /sys/kernel/mm/transparent_hugepage/defrag; thenecho never > /sys/kernel/mm/transparent_hugepage/defrag
fi
EOF#驗證查看,如果是never則表示成功。
ansible all -m raw -a "cat /sys/kernel/mm/transparent_hugepage/defrag;cat /sys/kernel/mm/transparent_hugepage/enabled"#授權
ansible all -m raw -a "chmod +x /etc/rc.local"
6、 配置最大進程數和最大文件句柄數
?用戶的進程和文件句柄數配置文件是/etc/security/limits.conf,類型包括硬限制(hard)和軟限制(soft),*表示所有用戶,nproc表示打開最大進程數,nofile表示最大文件句柄數。Cloudera推薦最大進程數nproc為65536或26214。
- pssh批量修改所有用戶的進程和文件句柄最大限制
ansible all -m raw -a"echo '* soft nproc 65535' >> /etc/security/limits.conf"
ansible all -m raw -a "echo '* hard nproc 65535' >> /etc/security/limits.conf"
ansible all -m raw -a "echo '* soft nofile 65535' >> /etc/security/limits.conf"
ansible all -m raw -a "echo '* hard nofile 65535' >> /etc/security/limits.conf"
#查看是否生效
ansible all -m raw -a "ulimit -a"
- -a:顯示目前資源限制的設定;
- -c <core文件上限>:設定core文件的最大值,單位為區塊;
- -d <數據節區大小>:程序數據節區的最大值,單位為KB;
- -f <文件大小>:shell所能建立的最大文件,單位為區塊;
- -H:設定資源的硬性限制,也就是管理員所設下的限制;
- -m <內存大小>:指定可使用內存的上限,單位為KB;
- -n <文件數目>:指定同一時間最多可開啟的文件數;
- -p <緩沖區大小>:指定管道緩沖區的大小,單位512字節;
- -s <堆疊大小>:指定堆疊的上限,單位為KB;
- -S:設定資源的彈性限制;
- -t <CPU時間>:指定CPU使用時間的上限,單位為秒;
- -u <程序數目>:用戶最多可開啟的程序數目;
- -v <虛擬內存大小>:指定可使用的虛擬內存上限,單位為KB。
7、禁用atime(暫時不操作)
?Linux文件系統會保留記錄每個文件訪問時間的元數據,這可能會導致即使是讀取操作也會導致磁盤寫入。為了提高文件讀取性能,Cloudera建議在/etc/fstab配置文件中使用noatime掛載選項來禁用atime選項。
- pssh批量禁用文件最后訪問時間,本機的掛載數據目錄是/data
# 數據目錄添加noatime
ansible all -m raw -a "sed -i 's/\/data ext4 defaults/\/data ext4 defaults,noatime/' /etc/fstab"# 重新掛載不需要重啟節點
#mount -o remount /data
8、搭建私有源
- 鏡像源作用范圍:只能在機器h1使用。
- 目的:為了安裝httpd服務和createrepo服務。
1)配置centos源(h1)
【阿里下載地址】http://mirrors.aliyun.com/centos/7.9.2009/isos/x86_64/
#上傳
mkdir -p /data/isos
cd /data/isos
rz#掛載centos7鏡像
mkdir /mnt/cdrom
chmod o+x CentOS-7-x86_64-Everything-2003.iso
mount -t iso9660 /data/isos/CentOS-7-x86_64-Everything-2003.iso /mnt/cdrom
lsblk |grep /mnt/cdrom#移除自帶的源
mkdir -p /etc/yum.repos.d/backup
mv /etc/yum.repos.d/* /etc/yum.repos.d/backup#新建一個本地yum源
cat > /etc/yum.repos.d/local.repo << EOF
[c6-media]
name=CentOS-$releasever - Media
baseurl=file:///mnt/cdrom
gpgcheck=0
enabled=1
EOF#更新源和緩存
yum clean all && yum makecache#驗證
yum repolist|grep Centos#檢測源
yum remove tree -y
yum install tree -y
2)安裝httpd
- h1節點安裝Apache httpd服務,用于后續通過Http方式訪問和下載CDH和CM安裝包
# 安裝httpd
yum -y install httpd
# 啟動
systemctl start httpd
# 開機啟動
systemctl enable httpd
3)centos源配置為http方式獲取
- h1節點
#在http服務的靜態資源目錄創建centos目錄
mkdir -p /var/www/html/cdh6.3.1
mkdir /var/www/html/cdh6.3.1/centos
#將centos的鏡像文件復制到centos目錄
\cp -rf /mnt/cdrom/* /var/www/html/cdh6.3.1/centos#修改cdh-1的本地centos源的配置
sed -i 's#baseurl=file:///mnt/cdrom#baseurl=file:///var/www/html/cdh6.3.1/centos#g' /etc/yum.repos.d/local.repo#取消掛載
umount /mnt/cdrom/#更新h1的源
##刷新源
yum clean all && yum makecache#驗證
yum repolist#重啟http
systemctl restart httpd
可以通過http訪問了:http://192.168.6.61/cdh6.3.1/centos/
- 其他節點
#移除自帶的源
mkdir -p /etc/yum.repos.d/backup
mv /etc/yum.repos.d/* /etc/yum.repos.d/backup#添加共享源
cat >/etc/yum.repos.d/local.repo << EOF
[c6-media]
name=CentOS-$releasever - Media
baseurl=http://h1/cdh6.3.1/centos/
gpgcheck=0
enabled=1
EOF#刷新源
yum clean all && yum makecache驗證
yum repolist#測試源
yum remove -y lsof #安裝
yum install -y lsof
4)部署離線parcel源
- 移動文件安裝包文件到http服務器靜態文件目錄(h1)
#在/var/www/html創建存放cm包的文件夾和cdh安裝包的文件夾
mkdir /var/www/html/cdh6.3.1/{cm,cdh}#上傳CDH6.3.2
rz
unzip CDH6.3.2 -d /opt/
tar -xf /opt/CDH6.3.2/cm6.3.1-redhat7.tar.gz -C /opt/#移動cdh安裝包和元數據文件
cd /opt/CDH6.3.2/
mv CDH-6.3.2-1.cdh6.3.2.p0.1605554-el7.parcel manifest.json CDH-6.3.2-1.cdh6.3.2.p0.1605554-el7.parcel.sha1 /var/www/html/cdh6.3.1/cdh/
mv /var/www/html/cdh6.3.1/cdh/CDH-6.3.2-1.cdh6.3.2.p0.1605554-el7.parcel.sha1 /var/www/html/cdh6.3.1/cdh/CDH-6.3.2-1.cdh6.3.2.p0.1605554-el7.parcel.sha
mv /opt/CDH6.3.2/CDH-6.3.2-1.cdh6.3.2.p0.1605554-el7.parcel.sha256 /var/www/html/cdh6.3.1/cdh/#解壓移動cm安裝包
tar -xf /opt/CDH6.3.2/cm6.3.1-redhat7.tar.gz -C /opt/
mv /opt/cm6.3.1/RPMS/x86_64/* /var/www/html/cdh6.3.1/cm/#授權
chmod 755 /var/www/html/cdh6.3.1/cm
chmod 755 /var/www/html/cdh6.3.1/cdh
- 移動 sha1 名稱?件時,需要重命名,去掉最后的1,不然在部署過程中,CM 會認為如上?件下載不完整,會重新下載。
#查看
[root@h1 html]# ls -l /var/www/html/cdh6.3.1/
total 4
drwxr-xr-x. 2 root root 77 Sep 11 21:14 cdh
drwxr-xr-x. 8 root root 220 Sep 11 21:02 centos
drwxr-xr-x. 2 root root 4096 Sep 11 21:18 cm[root@h1 html]# ls -l /var/www/html/cdh6.3.1/cm
total 1380420
-rw-r--r--. 1 2001 2001 10483568 Sep 25 2019 cloudera-manager-agent-6.3.1-1466458.el7.x86_64.rpm
-rw-r--r--. 1 2001 2001 1203832464 Sep 25 2019 cloudera-manager-daemons-6.3.1-1466458.el7.x86_64.rpm
-rw-r--r--. 1 2001 2001 11488 Sep 25 2019 cloudera-manager-server-6.3.1-1466458.el7.x86_64.rpm
-rw-r--r--. 1 2001 2001 10996 Sep 25 2019 cloudera-manager-server-db-2-6.3.1-1466458.el7.x86_64.rpm
-rw-r--r--. 1 2001 2001 14209868 Sep 25 2019 enterprise-debuginfo-6.3.1-1466458.el7.x86_64.rpm
-rw-rw-r--. 1 2001 2001 184988341 Sep 25 2019 oracle-j2sdk1.8-1.8.0+update181-1.x86_64.rpm[root@localhost CDH6.3.2]# ls -l /var/www/html/cdh6.3.1/cdh/
total 2033432
-rw-r--r--. 1 root root 2082186246 Jan 8 2021 CDH-6.3.2-1.cdh6.3.2.p0.1605554-el7.parcel
-rw-r--r--. 1 root root 40 Jan 11 2021 CDH-6.3.2-1.cdh6.3.2.p0.1605554-el7.parcel.sha
-rw-r--r--. 1 root root 64 Jan 11 2021 CDH-6.3.2-1.cdh6.3.2.p0.1605554-el7.parcel.sha256
-rw-r--r--. 1 root root 33887 Jan 11 2021 manifest.json
5)生成repodata文件
- 制作cm和cdh源生成repodata文件,需要用到createrepo這個包(h1)
#查看
yum install tree -y
tree /var/www/html/
# 生成repodata文件夾
mv /etc/yum.repos.d/backup/CentOS-Base.repo /etc/yum.repos.d/
yum clean all && yum makecache
yum install -y createrepo
cd /var/www/html/cdh6.3.1/cm/
createrepo .
cd /var/www/html/cdh6.3.1/cdh/
createrepo .
systemctl restart httpd
訪問瀏覽器:http://192.168.6.61/cdh6.3.1/cm/
6)配置cm服務端源
cat >/etc/yum.repos.d/cloudera-manager.repo<<EOF
[base-local]
name=cm-local
baseurl=file:///var/www/html/cdh6.3.1/cm
enabled=1
gpgcheck=0
EOF#刷新源
yum clean all && yum makecache#檢測本地源是否配置成功
yum repolist|grep cm-local
7)配置cm客戶端源
cat >/etc/yum.repos.d/cloudera-manager.repo<<EOF
[base-local]
name=cm-local
baseurl=http://h1/cdh6.3.1/cm
enabled=1
gpgcheck=0
EOF#刷新源
yum clean all && yum makecache#檢測本地源是否配置成功
yum repolist|grep cm-local
8)配置cdh服務端源
cat >/etc/yum.repos.d/cdh-local.repo<<EOF
[cdh-local]
name=cdh-local
baseurl=file:///var/www/html/cdh6.3.1/cdh
enabled=1
gpgcheck=0
EOF#刷新源
yum clean all && yum makecache#檢測本地源是否配置成功
yum repolist|grep cdh-local
9)配置cdh客戶端源
cat >/etc/yum.repos.d/cdh-local.repo<<EOF
[cdh-local]
name=cdh-local
baseurl=http://h1/cdh6.3.1/cdh
enabled=1
gpgcheck=0
EOF#刷新源
yum clean all && yum makecache
- [base-local] #本源的名字,不能和其他的重復(隨便,不重復)
- name=CentOS-local #名字(隨意)
- baseurl=file:///mnt/ #上方步驟一掛載鏡像創建的目錄(必須同步)
- enabled=1 #yum源是否啟用 1-啟用 0-不啟用
- gpgcheck=1 #安全檢測 1-開啟 0-不開啟
- gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
11、配置chronyd
?Centos7默認使用Chrony工具而非NTP進行時間同步,Chrony和NTP兩者有沖突只能選其一,CDH6推薦使用Chrony。
?chrony-2.2.1.tar.gz 下載地址:https://download.tuxfamily.org/chrony/
1)時區設置為本地時區
#硬件時鐘設置為UTC
ansible all -m raw -a"timedatectl set-local-rtc 0"#設置本地時區,顯示本地時間
ansible all -m raw -a"timedatectl set-timezone Asia/Shanghai"#手動加載RTC設置
ansible all -m raw -a"hwclock --systohc"#查看時間
ansible all -m raw -a"timedatectl"
1)配置chrony服務端
#安裝
ansible all -m raw -a"yum -y install chrony"
ansible all -m raw -a"systemctl start chronyd"#修改服務器配置?件
cp /etc/chrony.conf /etc/chrony.$(date +'%s')
cat > /etc/chrony.conf <<EOF
#編輯該行,設置ntp服務器地址,pool.ntp.org 替換為ntp服務器地址,注:保留1個即可,其他NTP服務器地址注銷
pool pool.ntp.org iburst
driftfile /var/lib/chrony/drift
makestep 1.0 3
rtcsync
allow 0.0.0.0/0
local stratum 10
logdir /var/log/chrony
EOF#看正確時間,進行修改
date -s 09:57:00
#同步到硬件時間
clock -w
#啟動chronyd
systemctl restart chronyd
systemctl enable chronyd
2)配置chronyd客戶端
#安裝
yum -y install chrony# 修改服務器配置文件,以阿里云時間服務器為上游服務器
cp /etc/chrony.conf /etc/chrony.$(date +'%s')
cat > /etc/chrony.conf <<EOF
server 192.168.6.61 iburst
driftfile /var/lib/chrony/drift
makestep 1.0 3
rtcsync
logdir /var/log/chrony
EOF# 啟動 chronyd服務
systemctl restart chronyd
systemctl enable chronyd#重啟后等幾分鐘,讓系統識別到時間服務器,期間可多次執行chronyc sources或chronyc sources -v查詢狀態。
[root@localhost yum.repos.d]# chronyc sources
210 Number of sources = 1
MS Name/IP address Stratum Poll Reach LastRx Last sample
===============================================================================
^* h1 3 6 377 4 +874us[+1148us] +/- 49ms[root@localhost ~]# timedatectlLocal time: Mon 2023-12-11 10:05:51 CSTUniversal time: Mon 2023-12-11 02:05:51 UTCRTC time: Mon 2023-12-11 02:05:51Time zone: Asia/Shanghai (CST, +0800)NTP enabled: yes
NTP synchronized: yesRTC in local TZ: noDST active: n/a
12、安裝jdk
- 參考網址:https://blog.csdn.net/BlogPan/article/details/132384949
- 每個節點安裝java環境
#上傳到ansible管理節點
rz #jdk-8u131-linux-x64.tar.gz #拷貝到各個節點
ansible all -m copy -a "src=jdk-8u131-linux-x64.tar.gz dest=/root/jdk-8u131-linux-x64.tar.gz"
#安裝jdk
tar -xzf /root/jdk-8u131-linux-x64.tar.gz
mkdir -p /usr/java/
mv jdk1.8.0_131/ /usr/java/
#、配置JAVA環境變量,/etc/profile配置文件中末尾加入如下代碼
cp /etc/profile /etc/profile.bak
cat >>/etc/profile<<EOF
#################################################################
export JAVA_HOME=/usr/java/jdk1.8.0_131
export CLASSPATH=\$CLASSPATH:\$JAVA_HOME/lib:\$JAVA_HOME/jre/lib
export PATH=\$JAVA_HOME/bin:\$JAVA_HOME/jre/bin:\$PATH:\$HOMR/bin
##################################################################
EOF
#執行如下代碼使其環境變量,并查看環境變量,命令如下:
source /etc/profile
java -version
13、安裝MySQL
1)下載安裝
- 參考地址:https://blog.csdn.net/BlogPan/article/details/132393695
- h1安裝MySQL
- 注意連接網絡源才能下載,否則需要使用二進制部署。
#檢測mysql,有則卸載
rpm -qa | grep -i mysql
rpm -qa|grep mariadb
#yum list installed | grep mariadb
#rpm -e --nodeps mariadb-libs-xxx
#rm -rf /etc/my.cnf
#查找指令rpm方式:rpm -qa|grep mysql
#查找指令yum方式:yum list installed | grep mysql
#find查看指令:find / -name mysql
#whereis查看指令:whereis mysql
#刪除指令:rm -rf /etc/selinux/targeted/active/modules/100/mysql
#刪除指令:rm -rf /usr/lib64/mysql#noarch表示該軟件包不依賴特定Linux發行版
wget -c https://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm --no-check-certificate
rpm -ivh mysql57-community-release-el7-11.noarch.rpm ##安裝Yum源配置文件
yum -y install mysql-community-server --nogpgcheck #安裝MySQL服務器, --nogpgcheck跳過源認證。
systemctl start mysqld&&systemctl enable mysqld&&systemctl status mysqld #啟動MySQL服務器
grep "password" /var/log/mysqld.log #獲取臨時密碼
2)安全加固
- 執行安全腳本,加固MySQL安全性,設置新的root密碼
#登錄改密碼
[root@h1 ~]# grep "password" /var/log/mysqld.log #獲取臨時密碼
2023-04-18T07:39:06.811617Z 1 [Note] A temporary password is generated for root@localhost: eR-UFk;F<8UD[root@h1 ~]# mysql_secure_installation
Securing the MySQL server deployment.
Enter password for user root: #輸入密碼:eR-UFk;F<8UDThe existing password for the user account root has expired. Please set a new password.
New password: Abcd$12356A
Re-enter new password: Abcd$12356A
- 輸入要求的密碼后可繼續如下配置
# 移除匿名用戶
Remove anonymous users? (Press y|Y for Yes, any other key for No) : y
Success. Normally, root should only be allowed to connect from
'localhost'. This ensures that someone cannot guess at
the root password from the network.# 禁用遠程root登錄
Disallow root login remotely? (Press y|Y for Yes, any other key for No) : y
Success.By default, MySQL comes with a database named 'test' that
anyone can access. This is also intended only for testing,
and should be removed before moving into a production
environment.# 刪除測試數據庫及權限
Remove test database and access to it? (Press y|Y for Yes, any other key for No) : y- Dropping test database...
Success.- Removing privileges on test database...
Success.Reloading the privilege tables will ensure that all changes
made so far will take effect immediately.# 重新加載授權表
Reload privilege tables now? (Press y|Y for Yes, any other key for No) : y
Success.All done!
3)登錄查看
#登錄
mysql -uroot -p
輸入密碼:Abcd$12356A#設置開機啟動和重啟
systemctl enable mysqld&&systemctl restart mysqld
4)配置遠程登錄
- 登錄本機,針對root用戶賦權和設置密碼
# 授權,all表示所有ddl和dml操作權限,*.*表示針對所有數據庫所有表,%表示本機和遠程主機均能訪問
grant all privileges on *.* to 'root'@'%' identified by 'Abcd$12356A' with grant option;# 刷新權限
flush privileges;#退出
exit
#測試遠程訪問
yum install mysql -y
mysql -P 3306 -h 192.168.6.61 -uroot -p
輸入密碼:Abcd$12356A
5)卸載MySQL
- 不操作
#卸載MySQL之前,首先需要停止MySQL服務
systemctl stop mysqld#卸載MySQL軟件包
yum -y remove mysql-server mysql-client mysql-common mysql-libs#刪除配置文件
rm -rf /var/lib/mysql
rm -rf /etc/my.cnf#卸載Yum源配置文件
rpm -e mysql57-community-release-el7-11.noarch#清理MySQL用戶和組
userdel mysql
groupdel mysql#清理MySQL日志文件和臨時文件
rm -rf /var/log/mysql
rm -rf /tmp/mysql*
五、CM6.3.1安裝步驟
1、配置JDBC驅動包
- ansible節點操作
#配置JDBC驅動包
cd /root/
wget -c https://dev.mysql.com/get/Downloads/Connector-J/mysql-connector-java-5.1.46.tar.gz --no-check-certificate
tar -xf mysql-connector-java-5.1.46.tar.gz
mv mysql-connector-java-5.1.46/mysql-connector-java-5.1.46.jar /root/mysql-connector-java.jar#創建目錄
ansible all -m raw -a 'mkdir -p /usr/share/java/'# 復制到各個節點
ansible all -m copy -a 'src=/root/mysql-connector-java.jar dest=/usr/share/java/'# 修改權限
ansible all -m raw -a 'cd /usr/share/java;chmod 775 mysql-connector-java.jar'# 驗證是否創建成功
ansible all -m raw -a 'ls -l /usr/share/java'
2、修改MySQL配置文件
- https://zhuanlan.zhihu.com/p/140873987?utm_id=0
WARN: Establishing SSL connection without server’s identity verification is not recommended. According to MySQL 5.5.45+, 5.6.26+ and 5.7.6+ requirements SSL connection must be established by default if explicit option isn’t set. For compliance with existing applications not using SSL the verifyServerCertificate property is set to ‘false’. You need either to explicitly disable SSL by setting useSSL=false, or set useSSL=true and provide truststore for server certificate verification.
注意此處有坑:對于MySQL5.7高版本,啟動CM Server連接MySQL時可能會報com.mysql.jdbc.exceptions.jdbc4.CommunicationsException異常,原因是默認開啟了SSL認證,相當于useSSL=true,解決方法就是在配置中添加skip-ssl重啟MySQL服務,另外[mysqld_safe]配置項已廢棄不用,以下的配置均已經過驗證。
[mysqld]
# 務必禁用掉ssl,相當于useSSL=false
skip-ssl #和重啟
systemctl restart mysqld
3、創建cm所數據庫
1)創建所需數據
#登錄
mysql -uroot -p
輸入密碼:Abcd$12356A#創建
CREATE DATABASE scm DEFAULT CHARACTER SET UTF8;
CREATE USER scm@'%' IDENTIFIED WITH mysql_native_password BY 'Abcd$12356A';
GRANT ALL PRIVILEGES ON scm.* TO scm@'%';CREATE DATABASE hive DEFAULT CHARACTER SET UTF8;
CREATE USER hive@'%' IDENTIFIED WITH mysql_native_password BY 'Abcd$12356A';
GRANT ALL PRIVILEGES ON hive.* TO hive@'%';FLUSH PRIVILEGES;
SELECT user,host,plugin FROM mysql.user;
exit
2)按照官方創建數據庫
- Cloudera官網要求初始化的數據庫及用戶如下:
# scm
CREATE DATABASE scm DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
GRANT ALL ON scm.* TO 'scm'@'%' IDENTIFIED BY 'Abcd$12356A';# amon
CREATE DATABASE amon DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
GRANT ALL ON amon.* TO 'amon'@'%' IDENTIFIED BY 'Abcd$12356A';# rman
CREATE DATABASE rman DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
GRANT ALL ON rman.* TO 'rman'@'%' IDENTIFIED BY 'Abcd$12356A';# hue
CREATE DATABASE hue DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
GRANT ALL ON hue.* TO 'hue'@'%' IDENTIFIED BY 'Abcd$12356A';# hive
CREATE DATABASE metastore DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
GRANT ALL ON metastore.* TO 'hive'@'%' IDENTIFIED BY 'Abcd$12356A';# sentry
CREATE DATABASE sentry DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
GRANT ALL ON sentry.* TO 'sentry'@'%' IDENTIFIED BY 'Abcd$12356A';# nav
CREATE DATABASE nav DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
GRANT ALL ON nav.* TO 'nav'@'%' IDENTIFIED BY 'Abcd$12356A';# navms
CREATE DATABASE navms DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
GRANT ALL ON navms.* TO 'navms'@'%' IDENTIFIED BY 'Abcd$12356A';# oozie
CREATE DATABASE oozie DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
GRANT ALL ON oozie.* TO 'oozie'@'%' IDENTIFIED BY 'Abcd$12356A';# 最后刷新一下權限
flush privileges;# 檢查
show databases;
3、安裝服務端
- 只需要在h1節點上安裝
yum install mysql-community-libs-compat-5.7.44-1.el7.x86_64 -y --nogpgcheck
#h1安裝server和agent
yum -y install cloudera-manager-daemons cloudera-manager-agent cloudera-manager-server
#安裝報錯,使用網絡源
cd /etc/yum.repos.d
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
yum clean all&&yum makecache#MySQL報錯 Failing package is: mysql-community-libs-compat-5.7.44-1.el7.x86_64
yum install mysql-community-libs-compat-5.7.44-1.el7.x86_64 -y --nogpgcheck
4、安裝客戶端
- 只需要在h2、h3、h4節點上安裝
#h2安裝agent
yum -y install cloudera-manager-agent cloudera-manager-daemons#h3安裝agent
yum -y install cloudera-manager-agent cloudera-manager-daemons#h4安裝agent
yum -y install cloudera-manager-agent cloudera-manager-daemons
5、初始化scm庫
1)MySQL和服務同機
/opt/cloudera/cm/schema/scm_prepare_database.sh mysql scm scm
輸入密碼:Abcd$12356A
2)MySQL和服務不同機
- 初始化指令格式:/opt/cloudera/cm/schema/scm_prepare_database.sh mysql -h 數據庫ip --scm-host scm的ip scm scm Abcd$12356A
#/opt/cloudera/cm/schema/scm_prepare_database.sh mysql -h 192.168.6.65 --scm-host 192.168.6.61 scm scm Abcd$12356A
3)CM的數據庫配置文件已經修改
- 初始化成功自動生成下面數據,修改文件。
#替換
sed -i s'#com.cloudera.cmf.db.host=localhost#com.cloudera.cmf.db.host=h1#'g /etc/cloudera-scm-server/db.properties
#查看
[root@h1 ~]# cat /etc/cloudera-scm-server/db.properties
com.cloudera.cmf.db.type=mysql
com.cloudera.cmf.db.host=h1
com.cloudera.cmf.db.name=scm
com.cloudera.cmf.db.user=scm
com.cloudera.cmf.db.setupType=EXTERNAL
com.cloudera.cmf.db.password=Abcd$12356A
4)啟動server
- 在主節點啟動Cloudera Manager
systemctl restart cloudera-scm-server
systemctl status cloudera-scm-server -l
netstat -tnlp|grep 7180
tail -f /var/log/cloudera-scm-server/cloudera-scm-server.log
5)配置本地的parcel文件
cp -r /var/www/html/cdh6.3.1/cdh/* /opt/cloudera/parcel-repo/
groupadd cloudera-scm&&useradd -r -g cloudera-scm cloudera-scm
chown -R cloudera-scm:cloudera-scm /opt/cloudera
6)修改config.ini
- agent節點上修改cm agent的配置,指向server節點為:h1
ansible all -m raw -a "sed -i 's/server_host=localhost/server_host= h1/g' /etc/cloudera-scm-agent/config.ini"
7)上傳allkeys.asc
cd /var/www/html/cdh6.3.1/cm
rz
allkeys.asc
6、訪問
- 訪問地址:http://192.168.6.61:7180/cmf/login
- 登陸-默認賬號/密碼:admin/admin
六、配置集群
1、登錄配置
2、設置集群名
- 編輯集群名稱,填入:cdh6.3.2,安裝成功后可以重命名集群,點擊“繼續”。
3、選擇集群主機
- 使用模式輸入主機名稱(h[1-4])或者IP地址(192.168.6.[61-63]),點擊“搜索”找到主機后勾選節點,點擊“繼續”。
4、配置CDH安裝包
- Cloudera Manager Agent的自定義存儲庫輸入CM倉庫地址:http://192.168.6.61/cdh6.3.1/cm
5、配置CDH parcel的位置
- CDH and other software選擇“使用 Parcel (建議)”,點擊“更多選項”進入Parcel存儲庫設置頁面。“Parcel目錄”和“本地Parcel存儲庫路徑”不用編輯選擇默認目錄就好,編輯“遠程Parcel存儲庫URL”,輸入CDH倉庫地址: http://192.168.6.61/cdh6.3.1/cdh/,點擊“-”刪除其它URL,點擊“保存更改”。
6、安裝Agent
【提示】
/tmp/scm_prepare_node.4jhFYJdo
http://192.168.101.105/cdh6/6.3.1/parcels/allkeys.asc
【解決】
上傳allkeys.asc到cm的目錄下
7、安裝parcels
如果出現"主機運行狀況不良"
- 進入 /var/lib/cloudera-scm-agent下,把cm_guid文件 刪除。然后重啟代理服務節點
- 命令: service cloudera-scm-agent restart
- 重啟之后 cloudera manager 等待片刻自動安裝
【報錯】
Parcel not distributed but have active state ACTIVATING
[root@localhost ~]# curl -u admin:admin "http://h1:7180/api/v18/clusters"[root@h1 ~]# curl -u admin:admin -X POST http://192.168.6.61:7180/api/v18/clusters/Cluster1/parcels/products/CDH6/versions/6.3.2-1.cdh6.3.2.p0.1605554/commands/deactivate
【解決】
https://blog.51cto.com/u_14049791/5701635
【報錯】
cdh6安裝過程報錯 failure due to stall on seeded torrent
【解決】
#找到報錯節點重啟
systemctl restart cloudera-scm-agent.service
8、檢查集群
先點擊 Inspect Network Performance 再點擊 Inspect Hosts
注意:沒有黃色提示才能繼續下一步,否則需要解決。
9、選擇服務
1)選擇安裝的內容和服務
- 安裝的內容包括HDFS,YARN,ZooKeeper,Oozie,Hive,Hue,Spark,Impala,Hbase。
2)自定義角色分配
- 具體角色配置可查看CM
3)數據庫配置
- 選擇各個數據庫,用戶名,密碼,并進行測試
- 審核更改,默認設置(配置各個參數),命令詳細信息
- 如果集群資源不夠,可以先申請一個集群,然后依次添加服務;
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| amon |
| hive |
| hue |
| metastore |
| mysql |
| nav |
| navms |
| oozie |
| performance_schema |
| rman |
| scm |
| sentry |
| sys |
+--------------------+
4)CM管理頁面
- 之后出現的任何告警等,都可以進行自定義配置和解決
- 安裝的各個服務的版本,可通過cdh的mansion.json文件查看