CDH6.2.0安裝步驟

t18092838767發表於2020-10-13

1 檢查生產環境

1.1 檢查硬體資訊

硬體資訊一般裝系統的同學會提供,且叢集的機器也會按照我們的要求進行配置,檢驗幾個核心的系統和硬體引數:

記憶體:free -g
磁碟空間和目錄劃分:df -h
系統核數:grep "processor" | sort | uniq | wc -l

1.2 確認系統資訊

​ 保證作業系統是要求的centos系列,最低建議要求7.4,位數建議64位

檢視命令:cat /etc/redhat-release

1.3 確認伺服器內部網路是否互通

如果無法ping通內部服務,則檢查 /etc/sysconfig/network-scripts/ifcfg-ens33 檔案,確認 ONBOOT 的值如果為no需要修改為yes(Centos7.5虛擬機器安裝初始預設為no),否則網路無法連通。手動檢查各個主機上的網路設定,如果有問題則修改配置

# ONBOOT=no 改成 ONBOOT=yes(ifcfg-ens33該名稱各主機可能不一樣)修改完後重啟

vim /etc/sysconfig/network-scripts/ifcfg-ens33
reboot

1.4 配置yum源

​ 已配置好的話此步跳過,以下適用於伺服器已經配置了其他源,yum不可用的情況

cd /etc/yum.repos.d/
rename .repo .repo.bak *.repo
wget http://mirrors.aliyun.com/repo/Centos-7.repo
yum clean all
yum makecache

2 修改系統配置

2.1 修改主機名(可選)

​ 修改的主機名,和稍後需要配置hosts檔案保持一致

檢視主機名(Centos7)
less /etc/hostname
修改主機名,以下每條命令在對應的主機上執行
hostnamectl set-hostname master01
hostnamectl set-hostname hadoop01
hostnamectl set-hostname hadoop02
hostnamectl set-hostname hadoop03

2.2 更新hosts檔案

所有節點執行(重要)

所有叢集hosts配置要相同

檢視hosts: less /etc/hosts

echo "192.168.0.131 master01" >> /etc/hosts
echo "192.168.0.45 hadoop01" >> /etc/hosts
echo "192.168.0.155 hadoop02" >> /etc/hosts
echo "192.168.0.170 hadoop03" >> /etc/hosts

2.3 關閉防火牆,禁止開機自啟

所有節點執行

區域網內部安全情況下最好關閉防火牆,因為CM管理元件和CDH元件有大量的埠進行通訊,需要配置很多防火牆策略。

需要開放的埠可參考 官網說明,如果不能確保開放所有所需埠,則需要關閉防火牆

  • - systemctl stop firewalld 關閉防火牆
    - systemctl disable firewalld 禁止防火牆開機自啟
    - vim /etc/selinux/config —> SELINUX=disabled (修改)
    

2.4 各主機之間的免密登入(可以不用配置)

  • manager節點執行ssh-keygen -t rsa 一路回車到結束,在/root/.ssh/下面會生成一個公鑰檔案id_rsa.pub
  • cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys 將公鑰追加到authorized_keys
  • chmod 600 ~/.ssh/authorized_keys 修改許可權
  • 將~/.ssh從當前節點分發到其他各個節點。如:scp -r ~/.ssh/ root@node1:~/.ssh/
  • ssh 各個節點互相登陸

2.5 禁用selinux(優化項,所有節點)

所有節點

檢視是否開啟:vim /etc/selinux/config 修改:SELINUX=disable

sed -i ‘s/SELINUX=enforce/SELINUX=disabled/g’ /etc/selinux/config

2.6 禁用ipv6(優化項,所有節點)

Centos7.5預設開啟IPv6,CM元件明確說明不支援系統的IPv6功能,IPv6開啟狀態下可能會出現不可預料的錯誤,需要提前關閉。

檢視IPv6啟用狀態可以通過以下幾種方式:

  • ifconfig:檢視是否有IPv6的地址(inet6)
  • lsmod:檢視是否有ipv6關鍵字
  • disable_ipv6:檢視/proc/sys/net/ipv6/conf/all/disable_ipv6檔案內容,0為開啟,1為關閉
# 檢視IPv6當前狀態,有值則為開啟,空則為關閉
ansible all -a "lsmod | grep ipv6"

IPv6開啟的情況下如何關閉:

# 第六行新增
vim /etc/default/grub
GRUB_CMDLINE_LUNUX="ipv6.disable=1 ...."
# 重啟
ansible all -a "reboot"
# 驗證
ansible all -a "lsmod | grep ipv6"

2.7 安裝NTP

以下操作是所有節點進行

設定好後的驗證操作:

ntpdc -c loopinfo #檢視與時間同步伺服器的時間偏差
ntpq -p #檢視當前同步的時間伺服器
ntpstat #檢視狀態

1、新增dns,如果有可以不用做該操作
echo "nameserver 114.114.114.114" >> /etc/resolv.conf
echo "nameserver 8.8.8.8" >> /etc/resolv.conf
2、修改為中國標準時區
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
3、安裝ntp
yum install ntp -y
4、手動同步時間(ntpd服務關閉的情況下),避免時間差距過大導致同步失敗
ntpdate -u 0.cn.pool.ntp.org
5、有外網的情況下可直接配置外部ntp伺服器
echo "server ntp1.aliyun.com" >> /etc/ntp.conf
6、啟動ntp
systemctl start ntpd
7、設定開機自動啟動
systemctl enable ntpd

3 優化系統配置

3.1 關閉tuned (所有節點)

tuned服務會動態調整系統引數,在自定義優化後,重啟會覆蓋掉已優化的引數

1、啟動,檢查tuned狀態
systemctl start tuned
systemctl status tuned
2、顯示No current active profile時執行下命令
tuned-adm off
tuned-adm list
3、關閉tuned,禁止開機啟動
systemctl stop tuned
systemctl disable tuned

3.2 關閉透明頁 (所有節點)

檢查驗證透明頁是否開啟,never是未啟用

cat /sys/kernel/mm/transparent_hugepage/enabled
cat /sys/kernel/mm/transparent_hugepage/defrag

如果啟用啟用時,執行以下操作

1 關閉
echo never > /sys/kernel/mm/transparent_hugepage/enabled
echo never > /sys/kernel/mm/transparent_hugepage/defrag
2 設定開機關閉
echo "echo never > /sys/kernel/mm/transparent_hugepage/defrag" >> /etc/rc.local
echo "echo never > /sys/kernel/mm/transparent_hugepage/enabled" >> /etc/rc.local
chmod +x /etc/rc.d/rc.local

3 在GRUB_CMDLINE_LINUX專案後面新增一個引數:transparent_hugepage=never
vim /etc/default/grub

4 重新生成gurb.cfg檔案
grub2-mkconfig -o /boot/grub2/grub.cfg

3.3 修改swappiness引數 (所有節點)

為了避免伺服器使用swap功能而影響伺服器效能,一般都會把vm.swappiness修改為0(cloudera建議10以下)

這裡設為1,代表:vm.swappiness=1 #使用到達99%,才開始用Swap虛擬記憶體

驗證命令,檢視原始值:

cat /proc/sys/vm/swappiness

1、設定值
sysctl -w vm.swappiness=1
echo "vm.swappiness=1" >> /etc/sysctl.conf

3.4 設定會話超時時間(所有節點)

echo "TMOUT=900">>/etc/profile

3.5 安裝常用工具 (所有節點)

yum install -y expect bc net-tools iotop zip unzip telnet wget iperf3 fio ntfs-3g lzo iftop vim

3.6 系統核心優化

echo -e "\nnet.ipv4.tcp_tw_reuse = 1
 \nnet.ipv4.tcp_tw_recycle = 1
 \nnet.ipv4.tcp_keepalive_time = 1200
 \nnet.ipv4.ip_local_port_range = 10000 65000
 \nnet.ipv4.tcp_max_syn_backlog = 8192
 \nnet.ipv4.tcp_max_tw_buckets = 5000
 \nfs.file-max = 655350
 \nnet.ipv4.route.gc_timeout = 100
 \nnet.ipv4.tcp_syn_retries = 1
 \nnet.ipv4.tcp_synack_retries = 1
 \nnet.core.netdev_max_backlog = 16384
 \nnet.ipv4.tcp_max_orphans = 16384
 \nnet.ipv4.tcp_fin_timeout = 2
 \net.core.somaxconn=32768
 \kernel.threads-max=196605
 \kernel.pid_max=196605
 \vm.max_map_count=393210"  >> /etc/sysctl.conf

3.7 最大開啟檔案數優化

最大開啟檔案數
ulimit -a
sed -i '$ a\* soft nofile 196605' /etc/security/limits.conf
sed -i '$ a\* hard nofile 196605' /etc/security/limits.conf
echo "* soft nproc 196605" >> /etc/security/limits.conf
echo "* hard nproc 196605" >> /etc/security/limits.conf

4 系統效能測試

登入linux伺服器,安裝常用工具

yum install -y expect bc net-tools iotop zip unzip telnet wget iperf3 fio ntfs-3g lzo iftop vim

網路測試

使用iperf測試主機之間的網路傳輸效率。

# 在一個主機上啟動iperf 服務端
iperf3 -s -p 12345 -i 1
# 另外一個主機啟動iperf 客戶端連線服務端
iperf3 -c cdh85-19 -p 12345 -i 1 -t 10 -w 100K

磁碟IO測試

使用fio工具對io進行各個場景的讀寫效能測試。

隨機讀

fio -filename=/dev/sda -direct=1 -iodepth 1 -thread -rw=randread -ioengine=psync -bs=4k -size=60G -numjobs=64 -runtime=10 -group_reporting -name=file -allow_mounted_write=1

順序讀

fio -filename=/dev/sda -direct=1 -iodepth 1 -thread -rw=read -ioengine=psync -bs=4k -size=60G -numjobs=64 -runtime=10 -group_reporting -name=file -allow_mounted_write=1

隨機寫

fio -filename=/dev/sda -direct=1 -iodepth 1 -thread -rw=randwrite -ioengine=psync -bs=4k -size=60G -numjobs=64 -runtime=10 -group_reporting -name=file -allow_mounted_write=1

順序寫

fio -filename=/dev/sda -direct=1 -iodepth 1 -thread -rw=write -ioengine=psync -bs=4k -size=60G -numjobs=64 -runtime=10 -group_reporting -name=file -allow_mounted_write=1

混合隨機讀寫

fio -filename=/dev/sda -direct=1 -iodepth 1 -thread -rw=randrw -rwmixread=30 -ioengine=psync -bs=4k -size=60G -numjobs=64 -runtime=10 -group_reporting -name=file -ioscheduler=noop -allow_mounted_write=1

todo:

  • 記憶體效能測試
  • 作業系統效能測試

5 安裝基礎服務

5.1 安裝jdk (所有節點)

rpm -qa | grep java # 查詢已安裝的java
yum remove java* # 解除安裝
rpm -ivh oracle-j2sdk1.8-1.8.0+update181-1.x86_64.rpm
vi /etc/profile #末尾新增
------------------新增的內容-------------------------------
export JAVA_HOME=/usr/java/jdk1.8.0_181-cloudera/
export CLASSPATH=.:$CLASSPATH:$JAVA_HOME/lib
export PATH=$PATH:$JAVA_HOME/bin
----------------------新增的內容-----------------------------
source /etc/profile
java -version #驗證安裝是否成功

5.2 新增mysql驅動包 (所有節點)

驅動包是提前下載好,上傳到伺服器的

mkdir -p /usr/share/java
mv /root/temp/mysql-connector-java.jar /usr/share/java/

5.3 安裝 mysql (控制節點)

mysql密碼忘記後重置操作

# 重置
/usr/bin/mysql_secure_installation

檢視、解除安裝已有的mariadb資料庫

rpm -qa|grep -i mariadb
rpm -e mariadb-libs-5.5.65-1.el7.x86_64 --nodeps
  • 解壓mysql安裝包並進行安裝:
tar -xvf mysql-5.7.26-1.el7.x86_64.rpm-bundle.tar
rpm -ivh mysql-community-common-5.7.19-1.el7.x86_64.rpm 
rpm -ivh mysql-community-libs-5.7.19-1.el7.x86_64.rpm 
rpm -ivh mysql-community-client-5.7.19-1.el7.x86_64.rpm 
rpm -ivh mysql-community-server-5.7.19-1.el7.x86_64.rpm 
rpm -ivh mysql-community-libs-compat-5.7.19-1.el7.x86_64.rpm 
  • MYSQL配置:
初始化配置mysql
mysqld --initialize --user=mysql # 初始化mysql使mysql目錄的擁有者為mysql使用者
2、檢視mysql密碼
grep "temporary password" /var/log/mysqld.log
3、啟動mysql
systemctl start mysqld
systemctl status mysqld
systemctl enable mysqld
4、連線mysql,修改密碼
mysql -uroot –p
mysql》 ALTER USER USER() IDENTIFIED BY '123456';

登入進去後,ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.需要修改訪問密碼:

ALTER USER USER() IDENTIFIED BY ‘rootpwd’;
如果是5.7之前版本,可以使用如下方式: SET PASSWORD = PASSWORD(‘rootpwd’);
如果不能登陸,設定免密登入並重啟mysql服務:
vi /etc/my.cnf #在[mysqld]的段中加上一句:skip-grant-tables ,
然後重啟mysql: systemctl restart mysqld

  • 建立庫(後續安裝服務等使用)
create database metastore default charset utf8 collate utf8_general_ci;
create database amon default charset utf8 collate utf8_general_ci;
create database rman default charset utf8 collate utf8_general_ci;
create database hue default charset utf8 collate utf8_general_ci;
create database oozie default charset utf8 collate utf8_general_ci; 
CREATE DATABASE scm DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
create database hive default charset utf8 collate utf8_general_ci; 

GRANT ALL ON hive.* TO 'hive'@'%' IDENTIFIED BY 'hive';
GRANT ALL ON scm.* TO 'scm'@'%' IDENTIFIED BY 'scm';
grant all on metastore.*  to 'metastore'@'%'  identified  by 'metastore';
grant all on amon.*  to 'amon'@'%'  identified  by 'amon';
grant all on rman.*  to 'rman'@'%'  identified  by 'rman';
grant all on hue.*  to 'hue'@'%'  identified  by 'hue';
grant all on oozie.*  to 'oozie'@'%'  identified  by 'oozie';

5.4 安裝httpd服務 (控制節點)

yum install httpd
systemctl start httpd
systemctl enable httpd.service

5.5 配置Cloudera Manager包yum源 (控制節點)

1、建立cdh包路徑,把 CDH 6.2 的三個檔案放到該目錄下

  • - CDH-6.2.0-1.cdh6.2.0.p0.967373-el7.parcel.sha
    - CDH-6.2.0-1.cdh6.2.0.p0.967373-el7.parcel
    - manifest.json
    


mkdir -p /var/www/html/cloudera-repos/cdh6.2

2、建立cm包路徑,將Cloudera Manager安裝需要的5個rpm包,asc檔案以及jdk檔案下載到本地,放在同一目錄,執行createrepo命令生成rpm後設資料

allkeys.asc
cloudera-manager-agent-6.2.0-968826.el7.x86_64.rpm
cloudera-manager-daemons-6.2.0-968826.el7.x86_64.rpm
cloudera-manager-server-6.2.0-968826.el7.x86_64.rpm
cloudera-manager-server-db-2-6.2.0-968826.el7.x86_64.rpm
enterprise-debuginfo-6.2.0-968826.el7.x86_64.rpm
oracle-j2sdk1.8-1.8.0+update181-1.x86_64.rpm
mkdir -p /var/www/html/cloudera-repos/cm6.2
cd /var/www/html/cloudera-repos/cm6.2
yum install createrepo
createrepo .
以上命令執行後, 最終 cm6.2目錄下多了一個repodata目錄

5.6 配置yum倉庫(控制節點)

​ 下載倉庫檔案和key檔案

cd /var/www/html/cloudera-repos/cm6.2
wget https://archive.cloudera.com/cm6/6.2.0/redhat7/yum/RPM-GPG-KEY-cloudera
2、開啟倉庫配置,下載倉庫檔案
cd /etc/yum.repos.d
wget https://archive.cloudera.com/cm6/6.2.0/redhat7/yum/cloudera-manager.repo
3、修改倉庫檔案
vim cloudera-manager.repo

[cloudera-manager]
name=Cloudera Manager 6.2.0
baseurl=http://master01/cloudera-repos/cm6.2/
gpgkey=http://master01/cloudera-repos/cm6.2/RPM-GPG-KEY-cloudera
gpgcheck=1
enabled=1
autorefresh=0
type=rpm-md

$ yum clean all 
$ yum makecache 
$ yum repolist

5.7 安裝cm(管理節點)

1、安裝管理節點

sudo yum install cloudera-manager-daemons cloudera-manager-agent cloudera-manager-server

2、移動cdh的安裝包到/opt/cloudera/parcel-repo

mv /root/CDH-6.2.0/parcel-repo/* /opt/cloudera/parcel-repo
生成簽名檔案
sha1sum CDH-6.2.0-1.cdh6.2.0.p0.967373-el7.parcel | awk '{ print $1 }' > CDH-6.2.0-1.cdh6.2.0.p0.967373-el7.parcel.sha

5.8 初始化cm(管理節點)

初始化資料庫

cat /etc/cloudera-scm-server/db.properties
/opt/cloudera/cm/schema/scm_prepare_database.sh  mysql scm scm

5.9 啟動cm (控制節點)

service cloudera-scm-server start
systemctl enable cloudera-scm-server

訪問 http://master01:7180/cmf/login開始操作

5.10 啟動資料節點agent

把管理節點的倉庫檔案傳送到各資料節點

1、管理節點傳送配置檔案到各子節點
scp /etc/yum.repos.d/cloudera-manager.repo root@hadoop01:/etc/yum.repos.d/
scp /etc/yum.repos.d/cloudera-manager.repo root@hadoop02:/etc/yum.repos.d/
scp /etc/yum.repos.d/cloudera-manager.repo root@hadoop03:/etc/yum.repos.d/

2、各子節點重建yum
yum clean all 
yum makecache 
yum repolist

sudo yum install cloudera-manager-daemons cloudera-manager-agent

3、所有節點執行以下
systemctl start cloudera-scm-agent
systemctl enable cloudera-scm-agent


6 hive配置修改

修改後可使用hiveDDL語句

1.將datanucleus.autoCreateSchema 改為true
2.將hive.metastore.schema.verification 改為 flash

2 cdh 搭建

前言

系統版本:某大資料研發建議系統版本為CentOS7.2

檢視作業系統系統版本命令
cat /etc/issue  或cat /etc/redhat-release

本次搭建環境基礎資源

CentOS Linux release 7.8.2003 (Core)
已有資源
192.168.0.131
192.168.0.170
192.168.0.45
192.168.0.155

伺服器選型

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片儲存下來直接上傳(img-Enpv2g7f-1602566890310)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\1594792414765.png)]

服務分配

服務名稱子服務hadoop102hadoop103hadoop104hadoop104
NameNode
HDFSDataNode
SecondaryNameNode
YarnNodeManager
Resourcemanager
ZookeeperZookeeper Server
HiveHive
MySQLMySQL
SqoopSqoop
hbasehbase
cuducudu
服務數總計6666

2.1 確認伺服器內部網路是否互通

如果無法ping通內部服務,則檢查 /etc/sysconfig/network-scripts/ifcfg-ens33 檔案,確認 ONBOOT 的值如果為no需要修改為yes(Centos7.5虛擬機器安裝初始預設為no),否則網路無法連通。手動檢查各個主機上的網路設定,如果有問題則修改配置:

# ONBOOT=no 改成 ONBOOT=yes
# ifcfg-ens33該名稱各主機可能不一樣
vim /etc/sysconfig/network-scripts/ifcfg-ens33
reboot

2.1 修改伺服器名稱(可選)

檢視主機名(Centos7)

less /etc/hostname

修改主機名
hostnamectl set-hostname master1.tgserver.xiyang.com

2 下載依賴包

3、伺服器域名配置

vim /etc/hosts

例如:
44.5.10.195 nn1.gdjgj nn1
44.5.10.196 nn2.gdjgj nn2
44.5.10.197 dn1.gdjgj dn1
44.5.10.198 dn2.gdjgj dn2
44.5.10.199 dn3.gdjgj dn3
44.5.10.195 archive.cloudera.com (IP為yum源所在的機器IP地址)

4、關閉防火牆、禁止防火牆開機自啟(每個節點)

  • - systemctl stop firewalld 關閉防火牆
    - systemctl disable firewalld 禁止防火牆開機自啟
    - vim /etc/selinux/config —> SELINUX=disabled (修改)
    

相關文章