後來我使用了CM5.13.3spark2kafka3.1.1解決了很多疑難雜症——搭建

主機系統

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章