主機系統
centos7系統安裝(5臺)
安裝前準備
JDK
jdk-8u191-linux-x64.tar.gz
scala-2.11.8.tgz
ClouderaManager安裝包
cloudera-manager-centos7-cm5.13.3_x86_64.tar.gz
CDH相關包
CDH-5.13.3-1.cdh5.13.3.p0.2-el7.parcel
CDH-5.13.3-1.cdh5.13.3.p0.2-el7.parcel.sha1
manifest.json
SPARK2相關包
SPARK2-2.3.0.cloudera2-1.cdh5.13.3.p0.316101-el7.parcel
SPARK2-2.3.0.cloudera2-1.cdh5.13.3.p0.316101-el7.parcel.sha
manifest.json
KAFKA相關包
KAFKA-3.1.1-1.3.1.1.p0.2-el7.parcel
KAFKA-3.1.1-1.3.1.1.p0.2-el7.parcel.sha
驅動包
mysql-connector-java-5.1.47-bin.jar
Spark-Kafka的streaming包
spark-streaming-kafka-0-10-assembly_2.11-2.3.0.jar
各主機系統設置(按序操作)
固定ip、DNS、禁用ipv6(所有節點)
永久性改主機名(適用於linux7)
[root@centos ~]# hostnamectl set-hostname xxx.dffl.com
修改主機映射(所有節點)
[root@centos ~]# vim /etc/hosts
127.0.0.1 localhost
本機IP xxx.dffl.com #本機IP 主機名
本機IP xxx.dffl.com #集羣各主機IP 主機名
關閉防火牆和SELinux(所有節點)
[root@centos ~]# systemctl status firewalld #查看防火牆狀態
[root@centos ~]# systemctl stop firewalld #關閉防火牆
[root@centos ~]# systemctl disable firewalld #禁止防火牆開機啓動
[root@centos ~]# setenforce 0
修改配置文件讓機器重啓也生效(所有節點)
[root@centos ~]# vim /etc/sysconfig/selinux
SELINUX=disabled
配置ssh免密碼登錄:
主程序CM機
[root@centos ~]# cd /root/.ssh
[root@centos ~]# ssh-keygen -t rsa
執行以下命令後,如果提示,就一直按“Enter”鍵,直至生成公鑰
執行完成後會生成兩個文文件id_rsa(私鑰)、id_rsa.pub(公鑰)
把公鑰複製到需要免密登錄的服務器xx1
[root@centos ~]# scp id_rsa.pub [email protected]:/root/.ssh/authorized_keys_from_xx0
把xx0的公鑰內容進行公鑰合併
[root@centos ~]# cd /root/.ssh
[root@centos ~]# cat authorized_keys_from_xx0 >> authorized_keys
(說明:如果authorized_keys不存在就會自動創建,如果存在就會追加)
安裝jdk1.8(所有節點)
卸載自帶openjdk
查詢出系統自帶的jdk
[root@centos ~]# rpm -qa | grep Java
卸載所有openJDK
[root@centos ~]# rpm -e --nodeps xxx xxx xxx
創建jdk安裝目錄
[root@centos ~]# mkdir /usr/local/java/latest
解壓jdk-8u191-linux-x64.tar.gz到jdk安裝目錄:
[root@centos ~]# tar -zxf jdk-8u191-linux-x64.tar.gz -C /usr/local/java/latest
配置環境變量
[root@centos ~]# vim /etc/profile
在末尾添加:
export JAVA_HOME=/usr/local/java/latest/jdk1.8.0_191
export JRE_HOME=$JAVA_HOME/jre
export PATH=$JAVA_HOME/bin:$JAVA_HOME:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tool.jar
是配置生效:
[root@centos ~]# source /etc/profile
**ntp時間同步 **
安裝ntp服務
[root@centos ~]# yum -y install ntp
以一臺主機作爲集羣的時間服務器(114),其他機器(110-113)跟這臺主機進行時間同步
開啓114主機的時間服務器服務
開機自動啓動
[root@centos ~]# systemctl enable ntpd
開啓
[root@centos ~]# systemctl start ntpd
先與遠程互聯網上的時間服務器進行同步
[root@centos ~]# ntpdate -u ntp.sjtu.edu.cn
將BIOS硬件時鐘與系統時間進行同步
[root@centos ~]# hwclock --localtime -w
編輯ntpd配置文件(本次集羣未編輯)
[root@centos ~]# vim /etc/ntp.conf
##打開註釋
18 restrict 172.21.192.0 mask 255.255.255.0 nomodify notrap
##註釋掉
22 #server 0.centos.pool.ntp.org
23 #server 1.centos.pool.ntp.org
24 #server 2.centos.pool.ntp.org
##打開註釋
35 server 127.127.1.0 # local clock
36 fudge 127.127.1.0 stratum 10
服務器停機後,系統時間停止,硬件時間正常走,服務器重啓後將硬件時間自動同步給系統時間
[root@centos ~]# vim /etc/sysconfig/ntpd
SYNC_HWCLOCK=yes ###改爲yes
服務器啓動後,系統同步外界時間,自動同步給硬件時鐘
[root@centos ~]# vim /etc/sysconfig/ntpdate
SYNC_HWCLOCK=yes ###改爲yes
其他主機與該主機xxx進行同步:
[root@centos ~]# ntpdate -u xxx
其他主機與該主機xxx進行定時同步(本集羣):
[root@centos ~]# crontab -e
*/10 * * * * /usr/sbin/ntpdate -u xxx
並且同時設置BIOS時鐘時間與系統時間同步以及開機啓動ntpd服務
[root@centos ~]# hwclock --localtime -w
[root@centos ~]# vim /etc/sysconfig/ntpd
SYNC_HWCLOCK=yes ###改爲yes
[root@centos ~]# vim /etc/sysconfig/ntpdate
SYNC_HWCLOCK=yes ###改爲yes
[root@centos ~]# systemctl enable ntpd
[root@centos ~]# systemctl start ntpd
重啓
[root@centos ~]# service crond restart && service ntpd restart
設置文件打開數目和用戶最大進程數(所有節點)
[root@centos ~]# vim /etc/security/limits.conf
* soft nofile 32728
* hard nofile 1024567
* soft nproc 65535
* hard nproc unlimited
* soft memlock unlimited
* hard memlock unlimited
關閉swap區(所有節點)
避免swap的一種方式是設置swap空間爲0
[root@centos ~]# echo "vm.swappiness = 0">> /etc/sysctl.conf (儘量不使用交換分區,注意不是禁用)
刷新SWAP
[root@centos ~]# swapoff -a && swapon -a
生效
[root@centos ~]# sysctl -p
上傳安裝包
存放於目錄/opt/software
解壓至/opt/modules
安裝mysql
只需要在一臺主機(114)上安裝即可
注意:1)設置開機自動啓動,2)設置用戶可以遠程訪問,3)設置其他主機訪問mysql
安裝依賴包
[root@centos ~]# yum -y install chkconfig python bind-utils psmisc libxslt zlib sqlite cyrus-sasl-plain cyrus-sasl-gssapi fuse portmap fuse-libs redhat-lsb
CM安裝
創建cloudera-manager目錄存放安裝包
在server主節點上創建
[root@centos ~]# mkdir -p /opt/cloudera-manager
安裝包解壓
[root@centos ~]# tar -zxf /opt/softwares/cloudera-manager-centos7-cm5.13.3_x86_64.tar.gz -C /opt/cloudera-manager
- cloudera cm框架安裝包目錄
- cm-5.13.3 cm框架本身的配置etc,啓動bin,組件庫lib
修改agent主機配置文件
[root@centos ~]# vim /opt/cloudera-manager/cm-5.3.6/etc/cloudera-scm-agent/config.ini
server_host=xxx.dffl.com
將安裝包分發其他機器
[root@centos ~]# scp -r cloudera-manager/ xxx.dffl.com:/opt/
所有節點創建cloudera-scm用戶
[root@centos ~]#useradd \
--system \ ##表示系統用戶
--home-dir=/opt/cloudera-manager/cm-5.13.3/run/cloudera-scm-server \ ##指定一個home目錄
--no-create-home \ ##不創建用戶主目錄
--shell=/bin/false \ ##不作爲一個登陸用戶
--comment "Cloudera SCM User" \
cloudera-scm ##用戶名
檢查用戶是否已存在
[root@centos ~]# cat /etc/passwd | grep cloudera-scm
放置驅動包
[root@centos ~]# cp mysql-connector-java-5.1.47-bin.jar /usr/share/java/
[root@centos ~]# cp mysql-connector-java-5.1.47-bin.jar /opt/cloudera-manager/cm-5.13.3/share/cmf/lib/
在主節點上初始化CM在mysql中的狀態
[root@centos ~]# mysql
--cm數據庫
>create database cm DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
--hue數據庫
>create database hue DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
--oozie數據庫
>create database oozie DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
--hive數據庫
>create database hive DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
--授權
>grant all privileges on hive.* to 'scm'@'%' identified by 'cdh' with grant option;
>grant all privileges on hue.* to 'scm'@'%' identified by 'cdh' with grant option;
>grant all privileges on oozie.* to 'scm'@'%' identified by 'cdh' with grant option;
--遠程訪問
>grant all privileges on *.* to 'root'@'%' identified by 'zaq12wsx' with grant option;
>flush privileges;
初始化cloudera manager數據庫配置
[root@centos ~]# /opt/cm-5.13.3/share/cmf/schema/scm_prepare_database.sh -h <mysql所在主機> mysql cm scm cdh
格式:主機、數據庫服務器、數據庫名、用戶、密碼
配置CDH源(hadoop hive等框架的安裝包集成)
- server節點上
[root@centos ~]# mkdir -p /opt/cloudera/parcel-repo
- agent節點上
[root@centos ~]# mkdir -p /opt/cloudera/parcels
移動源文件
[root@centos ~]# mv /opt/softwares/CDH-5.13.3-1.cdh5.13.3.p0.2-el7.parcel* /opt/cloudera/parcel-repo/
校驗碼結尾1去掉
[root@centos ~]# mv CDH-5.13.3-1.cdh5.13.3.p0.2-el7.parcel.sha1 CDH-5.13.3-1.cdh5.13.3.p0.2-el7.parcel.sha
更改所有人
- server主節點
[root@centos ~]# chown -R cloudera-scm:cloudera-scm /opt/cloudera/parcel-repo/
- agent節點
[root@centos ~]# chown -R cloudera-scm:cloudera-scm /opt/cloudera/parcels/
啓動server及agent進程
- server主節點
[root@centos ~]# /opt/cloudera-manager/cm-5.13.3/etc/init.d/cloudera-scm-server start
- agent節點
[root@centos ~]# /opt/cloudera-manager/cm-5.13.3/etc/init.d/cloudera-scm-agent start
驗證並登錄web
確認端口是否被監聽
[root@centos ~]# netstat -tlnup | grep 7180
默認用戶名和密碼爲admin
CM登錄搭建時警告排除
[root@centos ~]# echo 0 > /proc/sys/vm/swappiness
[root@centos ~]# echo never > /sys/kernel/mm/transparent_hugepage/defrag
掛載進程(不卸載用不到)
[root@centos ~]# umount /opt/cloudera-manager/cm-5.13.3/run/cloudera-scm-agent/process
主機運行狀況不良時
[root@centos ~]# rm -rf /opt/cloudera-manager/cm-5.13.3/lib/cloudera-scm-agent/cm_guid