clouder manager完整搭建cdh叢集
搭建cdh全過程
1)根據文件 “安裝RedHat+Linux+7” 安裝好centos7的作業系統 (3臺機器,記憶體9g、3g、3g; 磁碟40g、15g、15g)
思考問題:如果叢集幾十臺機器,難道要逐一經行ip的配置嗎?
建立centos系統時,選擇的是本機模式,然後搭建系統的過程中進行的網路ip對應的是vm8的網段,配置的ip不對,沒對 應(本機模式 --》vmware1, Nat模式 --》 vmware8)
以後搭建一開始就選擇NAT模式。(配置好後,再檢視機器的ip跟ifcfg-ens33的IP是否一致)
這樣ip配置成功之後,就可以使用shell工具進行配置多臺機器,可以通過shell給每臺機器配置ssh,配置ssh之前得給各機器使用者新增無密碼使用sudo命令的許可權(同時關閉SELinux,否則ssh連線會要密碼) ,再寫指令碼配置多臺機器
這樣的方案應該可以是可以執行的,雖然虛擬機器都是通過克隆出來的,但是它們的ip都不一樣的
我們這裡因為機器比較少,所以就用手動配置了,上述這種方案遇到多臺機器的時候可以嘗試
給cdh使用者新增無密碼使用sudo命令的許可權 (這裡也先不配置吧),我這次主要想能通過clouder manager把cdh叢集搭建起來,其它的問題先不管了
vi /etc/sudoers
cdh ALL=(ALL) NOPASSWD: ALL
關閉SELinux,否則ssh連線會要密碼 (沒關也沒見要密碼)
檢視SELinux狀態
/usr/sbin/sestatus -v
修改配置檔案需要重啟機器:
vim /etc/selinux/config
SELINUX=disabled
2)配置網絡卡設定ip、讓虛擬機器可以上網
虛擬機器怎麼ping不通百度呢?(四個方面)
a.windows中的vmware8的網段對應windows中的網段(手動設定)
b.虛擬機器中開啟編輯網路編輯器,點選vmware8,選擇NAT模式,子網網段與之前的保持一致,如:192.168.1.0
c.虛擬機器中點選設定,選擇NAT模式
d.vi /etc/sysconfig/network-scripts/ifcfg-ens33
sudo chmod 777 /etc/sysconfig/network-scripts/ifcfg-ens33
vi /etc/sysconfig/network-scripts/ifcfg-ens33
選擇NET模式,配置ip閘道器
BOOTPROTO=static
IPADDR=192.168.1.11
GATEWAY=192.168.1.2
DNS1=8.8.8.8
DNS2=8.8.4.4
NETMASK=255.255.255.0
ONBOOT=yes
sudo chmod 777 /etc/resolv.conf
更改DNS vi /etc/resolv.conf
nameserver 8.8.8.8
nameserver 8.8.4.4
重啟網路 systemctl restart network
3) 更改主機名字 vi /etc/hostname
修改hosts檔案,匹配主機名與ip
sudo chmod 777 /etc/hosts
vi /etc/hosts
192.168.1.11 cdh01
192.168.1.12 cdh02
192.168.1.13 cdh03
4)關閉防火牆 (永久性)
關閉防火牆
systemctl stop firewalld.service
關閉開機自動啟動
systemctl disable firewalld.service
reboot: 再進行後續操作
5)
掛載光碟:mount /dev/cdrom /mnt (每臺機器都需要掛載光碟),在此之前每臺機器cd上都對應在centos系統檔案
刪除原來的所有repo檔案 rm -rf /etc/yum.repos.d/* (每臺機器都要刪完,不然install不成功)
建立yum的原始檔: vi /etc/yum.repos.d/my.repo
[centos-yum]
baseurl=file:///mnt
enabled=1
gpgcheck=0
沒有源就無法下載yum install ntp,源在安裝的系統檔案中,所以需要掛載光碟讀取
開啟NTP服務
所有節點都需要操作
yum install ntp
systemctl is-enabled ntpd
systemctl enable ntpd
systemctl start ntpd
ntpdate手動同步一下時間
sudo service ntpd stop
sudo ntpdate cn.pool.ntp.org : 同步網路時間
sudo service ntpd start
6)配置免密ssh(每臺機器都執行 )
SSH安裝 (centos中預設已經安裝好了ssh)
重啟OpenSSH服務 service sshd restart
生成公鑰和金鑰:ssh-keygen -t rsa
cd ~/.ssh cat id_rsa.pub >> authorized_keys (追加,不會覆蓋)
修改.ssh目錄的許可權以及authorized_keys 的許可權(這個必須修改,要不然還是需要密碼,所有機器上)
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
ssh-copy-id -i id_rsa.pub [email protected] ---將你的公共金鑰填充到一個遠端機器上的authorized_keys檔案中
7)java安裝的目錄: 解除安裝原有的jdk,刪完全部檔案
rpm -qa | grep java
rpm -e –nodeps java-1.8.0-openjdk-1.8.0.121-0.b13.el7_3.x86_64
java -version
rpm -ivh jdk-8u161-linux-x64.rpm (.rpm包與.gz包不一樣)
配置環境變數: echo "JAVA_HOME=/usr/java/latest/" >> /etc/environment
快照下
----------------------------------------------
8)clouder manager搭建cdh叢集
clouder manager放到/opt目錄
安裝包、解壓包存放地方分別是: /root/package 、/root/training/
cdh01 clouder manager 、mysql、Agent
cdh02、03 Agent
8)-1)安裝mysql
a)centos7自帶的是mariadb,需要先解除安裝掉
rpm -qa | grep mariadb
rpm -e --nodeps mariadb-libs-5.5.41-2.el7_0.x86_64
將下載好的mysql rpm包拷貝到伺服器上然後解壓
tar -xvf mysql-5.7.19-1.el7.x86_64.rpm-bundle.tar -C /root/training/
然後安裝 rpm -ivh (互相依賴有先後順序,就裝這四個即可)
mysql-community-common-5.7.9-1.el7.x86_64.rpm
mysql-community-libs-5.7.9-1.el7.x86_64.rpm --(依賴於common)
mysql-community-libs-compat-5.7.19-1.el7.x86_64.rpm -- (後面校驗資料庫hue需要)
mysql-community-client-5.7.9-1.el7.x86_64.rpm --(依賴於libs)
mysql-community-server-5.7.9-1.el7.x86_64.rpm --(依賴於client、common)
mysql-community-devel-5.7.19-1.el7.x86_64.rpm (hue會用到)
安裝後的mysql會自動初始化
b)配置開機啟動(systemctl enable mysqld.service)
啟動MySQL: systemctl start mysqld.service
檢視root使用者的密碼:cat /var/log/mysqld.log | grep password
登入後修改密碼:
mysql -u root -p
alter user 'root'@'localhost' identified by '123456';
c)允許mysql遠端訪問
use mysql;
select user,host from user;
update user set host='%' where user='root' AND host='localhost';
FLUSH PRIVILEGES;
d)拷貝mysql-connector-java到各個節點指定目錄下(所有的節點)
cp mysql-connector-java-5.1.36-bin.jar /usr/share/java/mysql-connector-java.jar
e)建立資料庫
create database hive ;
create database amon ; ---> 這個是CDH的activity monitor
create database hue ;
create database oozie ;
grant all on *.* to [email protected]"%" identified by "123456";
注意:需要在cdh71上建立report資料庫,如下:
create database report;
create user 'reportmanager'@'%' identified by '123456';
grant all on report.* TO 'reportmanager'@'%';
grant all on report.* TO 'reportmanager'@'localhost' identified by '123456';
快照下
-----------
8)-2)安裝配置Clouder Manager(在cdh01上)
a)將cloudera-manager-centos7-cm5.12.1_x86_64.tar.gz上傳至/opt目錄,並解壓
tar -zxvf cloudera-manager-centos7-cm5.12.1_x86_64.ta r.gz
b)將mysql的驅動放到/opt/cm-5.12.1/share/cmf/lib/中
cp /usr/share/java/mysql-connector-java.jar /opt/cm-5.12.1/share/cmf/lib/
c)初始化Cloudera Manager的資料庫元資訊
/opt/cm-5.12.1/share/cmf/schema/scm_prepare_database.sh mysql cm -hcdh01 -uroot -p123456 --scm-host cdh01 scm scm scm
<最後三個引數是:資料庫名,資料庫使用者名稱,資料庫密碼注意符合規則>
mysql:資料庫用的是mysql,如果安裝過程中用的oracle,那麼該引數就應該改為oracle。-hcdh01:資料庫建立在cdh01主機上面。也就是主節點上面。-uroot:root身份執行mysql。-123456:mysql的root密碼是***。–scm-host cdh01:CMS的主機,一般是和mysql安裝的主機是在同一個主機上。最後三個引數是:資料庫名,資料庫使用者名稱,資料庫密碼。
遇到問題:Your password does not satisfy the current policy requirements
解決如下:修改密碼規則
SHOW VARIABLES LIKE 'validate_password%';
set global validate_password_policy=0;
set global validate_password_mixed_case_count=0;
set global validate_password_number_count=1;
set global validate_password_special_char_count=0;
set global validate_password_length=1;
FLUSH PRIVILEGES;
d)建立cloudera-scm使用者
useradd --system --home=/opt/cm-5.12.1/run/cloudera-scm-server/ --no-create-home --shell=/bin/false --comment "Cloudera SCM User" cloudera-scm
e)將以下檔案上傳至/opt/cloudera/parcel-repo/目錄
CDH-5.12.1-1.cdh5.12.1.p0.3-el7.parcel
CDH-5.12.1-1.cdh5.12.1.p0.3-el7.parcel.sha1
manifest.json
重新命名檔案CDH-5.12.1-1.cdh5.12.1.p0.3-el7.parcel.sha1
改名為:CDH-5.12.1-1.cdh5.12.1.p0.3-el7.parcel.sha (注意:少了一個1)
修改 /opt/cm-5.12.1/etc/cloudera-scm-agent/config.ini中的server_host為主節點的主機名
8)-3)配置Cloudera Agent(cdh02和cdh03)
a)從主節點cdh01上將Cloudera Manager Agent複製到agent節點(cdh02和cdh03)上
scp -r /opt/cm-5.12.1 [email protected]:/opt/
scp -r /opt/cm-5.12.1 [email protected]:/opt/
b)在agent節點(cdh02和cdh03)上建立cloudera-scm使用者
useradd --system --home=/opt/cm-5.12.1/run/cloudera-scm-server/ --no-create-home --shell=/bin/false --comment "Cloudera SCM User" cloudera-scm
8)-4)部署CDH5
a)在cdh71啟動服務Cloudera Manager Server
/opt/cm-5.12.1/etc/init.d/cloudera-scm-server start
b)在cdh71、cdh72和cdh73上啟動的agent :
/opt/cm-5.12.1/etc/init.d/cloudera-scm-agent start
c)訪問cdh71上的Cloudera Manager:
埠:7180(http://192.168.1.11:7180/cmf/login)
使用者名稱密碼:admin/admin
接受使用者條款
選擇60天試用版
點選“繼續”
為CDH群集安裝指定主機(選擇cdh01、cdh02和cdh03)
d)選擇儲存庫
(點選“Parcel更多選項”刪除預設的遠端庫。如果之前沒有做這一步,會有錯誤。需要重新安裝) --- 對於不能上網的虛擬機器,能上網應該沒問題,沒試過!
e)驗證正確性
在cdh01、cdh02和cdh03上,執行下面的語句,並點選“重新執行”按鈕
echo 10 > /proc/sys/vm/swappiness
echo never > /sys/kernel/mm/transparent_hugepage/defrag
echo never > /sys/kernel/mm/transparent_hugepage/enabled
f)選擇自定義,選擇要在群集上安裝的 CDH 5 服務(不要選擇kafka,後期手動整合kafka)
預設已經分配好,但個別地方改下,zookeeper分配三臺機器,以及為activity monitor分配主機
g)校驗資料庫
填寫mysql中建立的資料庫名、使用者名稱、密碼
密碼之前配的是Welcome_1,測試怎麼變成了123456,hue還驗證不通過??
因為後來我把root使用者的密碼改為了123456,這裡的資料庫對應的使用者也是root,所以密碼跟著變
安裝mysql的時候,將 mysql-community-libs-compat-5.7.17-1.el7.x86_64.rpm 也裝上hue就校驗通過了
h)建立成功
驗證每臺機器上的Java後臺程序
i)報錯客戶端配置生成需要啟用以下其他 Parcel:[kafka]
CDH的parcel包中是沒有kafka的,說明cdh叢集要另外整合kafka,整合kafka的前提條件是要先搭建好叢集
附上鍊接:https://www.cnblogs.com/lenmom/p/9157087.html
a.根據要求選擇對應的版本下載 https://www.cloudera.com/documentation/enterprise/release-notes/topics/rn_consolidated_pcm.html#pcm_kafka
b.下載kafka 的csd包(一個jar包)、parcel包(兩個parcel加一個json檔案)
c.上傳CSD包的jar,到/opt/cloudera/csd
上傳parcel包中的3個檔案,到/opt/cloudera/parcel-repo(檔案重名改掉、sha1字尾去掉1)
d.進入CDH的管理介面,點選主機->parcel->檢查新parcel
kafka出來後,點選分配、啟用按鈕,操作成功
向叢集中新增kafka服務
f.回到CDH主頁面,點選kafka,進入配置頁面,點選下方警告處,修改 Java Heap Size of Broker為1G
解除安裝之前安裝不成功的叢集,重新安裝:
刪除所有主機以及服務
點擊向叢集新增主機,就會跟之前一樣重新開始搭建叢集
clouder manager介面很多標紅問題:(增加記憶體、磁碟分配得到解決)
主機記憶體磁碟感覺都不夠呢主要是記憶體,我都還沒跑任務記憶體就滿了什麼鬼(刪除不用的服務留下spark就好、試下直接新增虛擬機器記憶體)
從節點磁碟不太夠(但可以通過克隆新增從節點解決)
虛擬機器的記憶體、磁碟容量都可以修改莫慌