大數(shù)據(jù)入門系列 -- CDH5.1.3集群搭建

CDH5.1.3集群搭建

環(huán)境:

CentOS-6.10-x86_64-bin-DVD1.iso
VMware-workstation-full-14.1.3-9474260.exe
jdk-7u80-linux-x64.tar.gz
CDH-5.1.3-1.cdh5.1.3.p0.12-el6.parcel
CDH-5.1.3-1.cdh5.1.3.p0.12-el6.parcel.sha1
manifest.json
mysql-connector-java-5.1.37.jar
centos全部節(jié)點密碼cdh
操作用戶:root

cdh5.1.3.12下載地址:http://archive.cloudera.com/cdh5/parcels/5.1.3.12/

(一)VM橋接

1. 虛擬機(jī)修改配置

1565264244490.png
1565264355452.png

2. 修改eth0網(wǎng)卡配置

vim /etc/sysconfig/network-scripts/ifcfg-eth0

DEVICE="eth0"
TYPE="Ethernet"
ONBOOT="yes"
NM_CONTROLLED="yes"
HWADDR="00:0C:29:CA:BE:0D"
UUID="0721e783-4aba-4122-b21b-068137182e1f"
BOOTPROTO="static"
IPADDR="192.168.43.226"
NETMASK="255.255.255.0"
GATEWAY="192.168.43.1"
DNS1="8.8.8.8"
IPV6INIT="no"
USERCTL="no"

ONBOOT 開機(jī)啟動,NM_CONTROLLED實時生效。記住,不要在某個值后面加 # 注釋 ,會導(dǎo)致該項失效。如

BOOTPROTO="static" # dhcp 因加了# dhcp而讓這一項失效。IPADDR,NETMASK,GATEWAY根據(jù)你自己電腦設(shè)置。

修改ifcfg-eth0完成后,需要service network restart

3. 增加ip映射

vim /etc/hosts

127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.43.228 cdh01
192.168.43.227 cdh02
192.168.43.226 cdh03

注意:修改 /etc/hosts,此處一定要注意,不要按照網(wǎng)上有的說明,將127.0.0.1那一行里的localhost.localdomain改成主機(jī)名稱,在安裝Cloudera Agent的時候會識別不出名稱和IP。像上面那樣新增ip和主機(jī)名就好了,原來的內(nèi)容不做修改。

4. 修改主機(jī)名

vim /etc/sysconfig/network

NETWORKING=yes
#HOSTNAME=localhost.localdomain
HOSTNAME=cdh02

以上四個步驟完成后,重啟。

進(jìn)一步了解:https://www.cnblogs.com/weizaiyes/p/9911200.html

常見錯誤:

1.虛擬機(jī)橋接機(jī)無法ping到自己主機(jī)

windows10的防火墻開啟ping功能

【入站規(guī)則】-【文件和打印機(jī)共享(回顯請求 - ICMPv4-In)】

詳情:https://jingyan.baidu.com/article/36d6ed1f671a8f1bcf4883c0.html

2.CentOS系統(tǒng)配置.ssh遇到port 22-No route to host問題的解決方法

可能是/etc/hosts沒配置后

詳情:https://blog.csdn.net/oba_gaga/article/details/80684051

(二)安裝Oracle的Java

CentOS,自帶OpenJdk,不過運行CDH5需要使用Oracle的Jdk,需要Java 7的支持。

卸載自帶的OpenJdk,使用rpm -qa | grep java查詢java相關(guān)的包,使用rpm -e --nodeps 包名卸載之。

將jdk解壓tar -zxvf jdk*到/usr/local/jdk/目錄下,并配置vim /etc/profile

export JAVA_HOME=/usr/local/jdk/jdk1.7.0_80
export JRE_HOME=$JAVA_HOME/jre
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH
export CLASSPATH=.:$CLASSPATH:$JAVA_HOME/lib:$JRE_HOME/lib

保存后需要,source /etc/profile 讓配置生效

(三)配置SSH免密登錄

所有節(jié)點生成authorized_keys

ssh-keygen -t rsa -P ''
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys

遠(yuǎn)程匯集到master機(jī)器

scp ~/.ssh/authorized_keys root@cdh01:~/.ssh/authorized_keys_02

其中authorized_keys_02,為你想保存在master目錄的名稱,一般以你的節(jié)點機(jī)機(jī)器命名,好區(qū)分。

master匯集各節(jié)點的authorized_keys到自己的authorized_keys

cat authorized_keys_02 >> authorized_keys_02

cat authorized_keys_02 >> authorized_keys_03

master遠(yuǎn)程拷貝覆蓋各節(jié)點的authorized_keys

scp ~/.ssh/authorized_keys root@cdh02:~/.ssh/authorized_keys

scp ~/.ssh/authorized_keys root@cdh03:~/.ssh/authorized_keys

(四) 關(guān)閉防火墻和SELinux

注意: 需要在所有的節(jié)點上執(zhí)行,因為涉及到的端口太多了,臨時關(guān)閉防火墻是為了安裝起來更方便,安裝完畢后可以根據(jù)需要設(shè)置防火墻策略,保證集群安全。

關(guān)閉防火墻:

service iptables stop (臨時關(guān)閉)  
chkconfig iptables off (重啟后生效)

關(guān)閉SELINUX(實際安裝過程中發(fā)現(xiàn)沒有關(guān)閉也是可以的,不知道會不會有問題,還需進(jìn)一步進(jìn)行驗證):

setenforce 0 (臨時生效)  
修改 vim /etc/selinux/config 下的 SELINUX=disabled (重啟后永久生效)

(五)安裝配置MySql(主節(jié)點)

注意:如果安裝了MariaDB數(shù)據(jù)庫,要卸載掉 。

檢查是否安裝了mariadb rpm -qa | grep mariadb-server

卸載數(shù)據(jù)庫 yum -y remove mari*

刪除數(shù)據(jù)庫文件: rm -rf /var/lib/mysql/*

通過yum install mysql-server安裝mysql服務(wù)器。chkconfig mysqld on設(shè)置開機(jī)啟動,并service mysqld start啟動mysql服務(wù),并根據(jù)提示設(shè)置root的初試密碼:mysqladmin -u root password 'xxxx'。

查看數(shù)據(jù)庫版本 mysql -V

mysql -uroot -pxxxx進(jìn)入mysql命令行,創(chuàng)建以下數(shù)據(jù)庫:

# hive
create database hive DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
# activity monitor
create database amon DEFAULT CHARSET utf8 COLLATE utf8_general_ci;

設(shè)置root授權(quán)訪問以上所有的數(shù)據(jù)庫:

#授權(quán)root用戶在主節(jié)點擁有所有數(shù)據(jù)庫的訪問權(quán)限(n1,和 xxxx 要替換成你自己的主機(jī)名和數(shù)據(jù)庫密碼)
grant all privileges on *.* to 'root'@'n1' identified by 'xxxx' with grant option;
# 刷新授權(quán)
flush privileges;

官方MySql配置文檔:http://www.cloudera.com/content/cloudera/en/documentation/cloudera-manager/v5-latest/Cloudera-Manager-Installation-Guide/cm5ig_mysql.html#cmig_topic_5_5

(六)所有節(jié)點配置NTP服務(wù)

集群中所有主機(jī)必須保持時間同步,如果時間相差較大會引起各種問題。 具體思路如下:

master節(jié)點作為ntp服務(wù)器與外界對時中心同步時間,隨后對所有datanode節(jié)點提供時間同步服務(wù)。

所有datanode節(jié)點以master節(jié)點為基礎(chǔ)同步時間。

安裝ntp

查看是否安裝了ntp:rpm -qa|grep ntp

安裝ntp: yum install ntp

設(shè)定東八時區(qū)

Linux里面用Asia/Shanghai表示東八區(qū),等價于Windows中的 北京、重慶、香港特別行政區(qū),烏魯木齊的時區(qū)設(shè)置

rm -rf /etc/localtime
cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

主節(jié)點ntp配置

配置之前先關(guān)了服務(wù) service ntpd status

修改配置文件 vim /etc/ntp.conf

內(nèi)容修改如下:

1565319290013.png

同步阿里時間 ntpdate ntp1.aliyun.com

啟動ntp /etc/init.d/ntpd start

開機(jī)啟動 chkconfig ntpd on

查看同步狀態(tài) ntpstat

節(jié)點ntp配置

先安裝ntp(如何安裝上面介紹了),然后關(guān)了ntp服務(wù),再進(jìn)行配置

service ntpd stop # 關(guān)閉ntpd
vim /etc/ntp.conf # server 0.centos.pool.ntp.org iburst 四條都注釋,修改成 server cdh01
ntpdate cdh01  # cdh01為主節(jié)點名稱,需要ntpd是關(guān)閉狀態(tài),所以需要先關(guān)閉ntpd服務(wù)

echo '*/10 * * * * /usr/sbin/ntpdate cdh01 &>/dev/null' >> /var/spool/cron/root 
該命令是做一個每10分鐘同步一次時間服務(wù)器的任務(wù),其中cdh01是自己配置的時間服務(wù)器,&>/dev/null表示不打印日志。`crontab -e` 命令可以看到已經(jīng)寫進(jìn)去了

/etc/init.d/ntpd start # 啟動
chkconfig ntpd on      # 開機(jī)自啟動
ntpstat # 查看同步狀態(tài)

ntpstat

檢查是否成功,用ntpstat命令查看同步狀態(tài),出現(xiàn)以下狀態(tài)代表啟動成功:

synchronised to NTP server (192.168.43.228) at stratum 4 
   time correct to within 512 ms
   polling server every 64 s

若出現(xiàn)以下內(nèi)容,嘗試稍等幾分鐘再重試ntpstat

unsynchronised
  time server re-starting
   polling server every 8 s

查看同步的狀態(tài):ntpq -p # 可查看延遲多久

詳情了解:https://blog.51cto.com/13178102/2052175

https://yq.aliyun.com/articles/696814?spm=a2c4e.11155472.0.0.2071678axvF5xr

https://www.cnblogs.com/quchunhui/p/7658853.html

拍快照,在運行cdh之前,易于恢復(fù)到運行cdh之前的環(huán)境。

(七)安裝CDH

1. 安裝Cloudera Manager Server 和Agent

a. 主節(jié)點解壓安裝

cloudera manager的目錄默認(rèn)位置在/opt下。解壓:tar xzvf cloudera-manager*.tar.gz將解壓后的cm-5.1.3和cloudera目錄放到/opt目錄下。

附: cp -a cm-5.1.3 /opt/ # -a 拷貝所有。

b. 為Cloudera Manager 5建立數(shù)據(jù)庫

首先需要去MySql的官網(wǎng)下載JDBC驅(qū)動,http://dev.mysql.com/downloads/connector/j/,解壓后,找到mysql-connector-java-5.1.33-bin.jar,放到/opt/cm-5.1.3/share/cmf/lib/中。

也可以使用maven命令下載jar

mvn dependency:get -DremoteRepositories=http://repo1.maven.org/maven2/ -DgroupId=mysql -DartifactId=mysql-connector-java -Dversion=5.1.37 #maven命令下載jar

c. 在主節(jié)點初始化CM5的數(shù)據(jù)庫

/opt/cm-5.1.3/share/cmf/schema/scm_prepare_database.sh mysql cm -hlocalhost -uroot -pxxxx --scm-host localhost scm scm scm

d. Agent配置

修改/opt/cm-5.1.3/etc/cloudera-scm-agent/config.ini中的server_host為主節(jié)點的主機(jī)名。

e. 同步Agent到其他節(jié)點

scp -r /opt/cm-5.1.3 root@cdh02:/opt/

f. 在所有節(jié)點創(chuàng)建cloudera-scm用戶

useradd --system --home=/opt/cm-5.1.3/run/cloudera-scm-server/ --no-create-home --shell=/bin/false --comment "Cloudera SCM User" cloudera-scm

g. 準(zhǔn)備Parcels,用以安裝CDH5

將CHD5相關(guān)的Parcel包放到主節(jié)點的/opt/cloudera/parcel-repo/目錄中(parcel-repo需要手動創(chuàng)建)。

相關(guān)的文件如下:

  • CDH-5.1.3-1.cdh5.1.3.p0.12-el6.parcel
  • CDH-5.1.3-1.cdh5.1.3.p0.12-el6.parcel.sha1
  • manifest.json

最后將CDH-5.1.3-1.cdh5.1.3.p0.12-el6.parcel.sha1,重命名為CDH-5.1.3-1.cdh5.1.3.p0.12-el6.parcel.sha,這點必須注意,否則,系統(tǒng)會重新下載CDH-5.1.3-1.cdh5.1.3.p0.12-el6.parcel文件。

h. 相關(guān)啟動腳本

通過/opt/cm-5.1.3/etc/init.d/cloudera-scm-server start啟動服務(wù)端。

通過/opt/cm-5.1.3/etc/init.d/cloudera-scm-agent start啟動Agent服務(wù)。

我們啟動的其實是個service腳本,需要停止服務(wù)將以上的start參數(shù)改為stop就可以了,重啟是restart。

注:先啟動server,再啟動agent

2. web界面安裝配置CDH5

訪問地址:http://cdh01:7180/cmf/login

這時可以通過瀏覽器訪問主節(jié)點的7180端口測試一下了(由于CM Server的啟動需要花點時間,這里可能要等待一會才能訪問),默認(rèn)的用戶名和密碼均為admin:

1565316779247.png

可以看到,免費版本的CM5已經(jīng)沒有原來50個節(jié)點數(shù)量的限制了。

1565330417155.png

各個Agent節(jié)點正常啟動后,可以在當(dāng)前管理的主機(jī)列表中看到對應(yīng)的節(jié)點。選擇要安裝的節(jié)點,點繼續(xù)。

1565330457806.png

接下來,出現(xiàn)以下包名,說明本地Parcel包配置無誤,直接點繼續(xù)就可以了。

注:一定要選對版本,默認(rèn)是CDH-5.16.3-1CDH5.16.2p0.8

1565330548475.png

點擊,繼續(xù),如果配置本地Parcel包無誤,那么下圖中的已下載,應(yīng)該是瞬間就完成了,然后就是耐心等待分配過程就行了,大約10多分鐘吧,取決于內(nèi)網(wǎng)網(wǎng)速。

1565316320368.png

接下來是服務(wù)器檢查,可能會遇到以下問題:

1565332241589.png
Cloudera 建議將 /proc/sys/vm/swappiness 設(shè)置為 0。當(dāng)前設(shè)置為 60。使用 sysctl 命令在運行時更改該設(shè)置并編輯 /etc/sysctl.conf 以在重啟后保存該設(shè)置。您可以繼續(xù)進(jìn)行安裝,但可能會遇到問題,Cloudera Manager 報告您的主機(jī)由于交換運行狀況不佳。以下主機(jī)受到影響:

通過echo 0 > /proc/sys/vm/swappiness即可解決。

接下來是選擇安裝服務(wù):

1565332299956.png

服務(wù)配置,一般情況下保持默認(rèn)就可以了(Cloudera Manager會根據(jù)機(jī)器的配置自動進(jìn)行配置,如果需要特殊調(diào)整,自行進(jìn)行設(shè)置就可以了):

1565333686730.png

接下來是數(shù)據(jù)庫的設(shè)置,檢查通過后就可以進(jìn)行下一步的操作了:

1565332516955.png

下面是集群設(shè)置的審查頁面,這里都是保持默認(rèn)配置的:

1565332628047.png

終于到安裝各個服務(wù)的地方了。注意,這里安裝Hive的時候可能會報錯,因為我們使用了MySql作為hive的元數(shù)據(jù)存儲,hive默認(rèn)沒有帶mysql的驅(qū)動,所以需要通過以下命令拷貝一個:

cp /opt/cm-5.1.3/share/cmf/lib/mysql-connector-java-5.1.37.jar  /opt/cloudera/parcels/CDH-5.1.3-1.cdh5.1.3.p0.12/lib/hive/lib/

一定先復(fù)制上面的mysql驅(qū)動,再繼續(xù)下一步,免得安裝失敗。

群集設(shè)置,初始化各組件

1565333222706.png

服務(wù)的安裝過程大約半小時就可以完成:

1565338883190.png

相關(guān)網(wǎng)址:

查看集群信息:http://cdh:8088/cluster/

查看各節(jié)點信息:http://cdh:50070/dfshealth.html#tab-overview

安裝后:各個組件可在/etc/查看到。日志可以在/var/log/目錄查看

3. 常見錯誤:

  1. [03/Apr/2015 00:50:43 +0000] 8369 MainThread agent ERROR Failed to connect to previous supervisor.
kill -9 $(pgrep -f  supervisord)然后重啟agent即可

ps ax | fgrep supervisord 
  1. There are mismatched versions across the system, which will cause failures. See below for details
  2. 安裝cdh的時候,選擇hosts主機(jī)的時候,沒有出現(xiàn)主機(jī),可能是你的/etc/hosts配置出問題了。
注意:修改 /etc/hosts,此處一定要注意,不要按照網(wǎng)上有的說明,將127.0.0.1那一行里的`localhost.localdomain`改成主機(jī)名稱,在安裝Cloudera Agent的時候會識別不出名稱和IP。像上面那樣新增ip和主機(jī)名就好了,原來的內(nèi)容不做修改。
  1. 主機(jī)使用 NONE CDH 版本進(jìn)行報告
  2. CDH5.6安裝報“Inspector did not run sucessfully”錯誤
進(jìn)入mysql命令行,創(chuàng)建數(shù)據(jù)庫

//hive

create database hive DEFAULT CHARSET utf8 COLLATE utf8_general_ci;

//activity monitor

create database amon DEFAULT CHARSET utf8 COLLATE utf8_general_ci;

如果需要安裝Oozie請創(chuàng)建

create database amon DEFAULT CHARSET utf8 COLLATE utf8_general_ci;

1). --hive 數(shù)據(jù)庫

create database hive DEFAULT CHARSET utf8 COLLATE utf8_general_ci;

2). --集群監(jiān)控數(shù)據(jù)庫

create database amon DEFAULT CHARSET utf8 COLLATE utf8_general_ci;

3). --hue 數(shù)據(jù)庫

create database hue DEFAULT CHARSET utf8 COLLATE utf8_general_ci;

4). --oozie 數(shù)據(jù)庫

create database oozie DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
  1. 安裝失敗,無法接受agent發(fā)出的檢測信號。

    確保主機(jī)名稱正確

    確保端口7182可在cloudera manager server上訪問(檢查防火墻規(guī)則)

    確保正在添加的主機(jī)的端口9000和9001空閑

    檢查在添加的主機(jī)上/var/log/cloudera-scm-agent/中的代理日志(某些日志可在安裝詳細(xì)信息中找到)

1565338307273.png
a.刪了agent.pid和agent目錄下run目錄內(nèi)容
b.ps aux | grep super
c.kill -9 <processID>

d.ps aux | grep super
   root     18949  0.0  0.1 223624 12996 ?    Ss   11:16   0:00 /opt/cm-e.7.0/lib64/cmf/agent/build/env/bin/python /opt/cm-5.7.0/lib64/cmf/agent/build/env/bin/supervisord   
   root 23390  0.0  0.0 112656   972 pts/0    S+   11:37   0:00 grep --color=auto super

e.kill   18949
f.service cloudera-scm-agent restart
  1. 中途安裝失敗,重新安裝

關(guān)閉所有服務(wù)

 #主節(jié)點
 [root@CDH-DEV1 opt]# /opt/cm-5.13.0/etc/init.d/cloudera-scm-server stop
 #主節(jié)點及其他節(jié)點
 [root@CDH-DEV1 opt]# /opt/cm-5.13.0/etc/init.d/cloudera-scm-agent stop

刪除agent uuid

rm -rf /opt/cm-5.13.0/lib/cloudera-scm-agent/*

刪除數(shù)據(jù)庫scm

重新配置數(shù)據(jù)庫
/opt/cm-5.13.0/share/cmf/schema/scm_prepare_database.sh mysql -hlocalhost -uroot -p scm scm
啟動Cloudera server和agent,按照之前步驟安裝即可
  1. could not contact scm server at localhost:7182, giving up
Detecting Cloudera Manager Server...
Detecting Cloudera Manager Server...
BEGIN host -t PTR 192.168.1.198
198.1.168.192.in-addr.arpa domain name pointer localhost.
END (0)
using localhost as scm server hostname
BEGIN which python
/usr/bin/python
END (0)
BEGIN python -c 'import socket; import sys; s = socket.socket(socket.AF_INET); s.settimeout(5.0); s.connect((sys.argv[1], int(sys.argv[2]))); s.close();' localhost 7182
Traceback (most recent call last):
File "<string>", line 1, in <module>
File "<string>", line 1, in connect
socket.error: [Errno 111] Connection refused
END (1)
could not contact scm server at localhost:7182, giving up
waiting for rollback request

解決:mv /usr/bin/host /usr/bin/host.bak

  1. 副本不足的塊, NameNode 運行狀況
free -m free -g 查看內(nèi)存使用
df -h查看磁盤空間
df -ia 查看inode使用情況
  1. 安裝過程失敗,重新安裝

刪除數(shù)據(jù)庫cm,刪除cm_guid,重啟試一下(本方法未嘗試是否可靠)

1565594084152.png

作者:陳集福

時間:2019.08.09

本文檔參考:https://www.cnblogs.com/jasondan/p/4011153.html

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容