CDH6.3.2搭建


一、集群規模確定

CDH體系結構

 

從數據量、計算性能要求、可靠穩定性、容錯性等方面考慮。

  • 數據量
  • 現有數據量(如現有歷史數據)和增量數據(日增、月增數據,一般需要考慮滿足1-2年的容量,后續再擴容);
  • 數據的副本數(Hadoop默認3副本,乘3倍);
  • 數據清洗、融合加工處理、共享等過程產生的,中間表、指標表、主題/專題庫等表(乘3-5倍)。注意:HDFS上不同格式的表壓縮比也不一樣,如文本txt表不壓縮,orc有一定的壓縮比(1:3),HBase(看是否采用壓縮),ES看索引是否有膨脹;
  • 儲存的冗余量 + 20-30%;
    如:現有各種形式的數據量總共30TB,月增數據1TB(算未來24個月),全部都要放到HDFS中存儲,默認3副本,ETL數據處理全部用txt表(共享服務HBase、ES等混用)就按照1:1的壓縮比儲存,算上ODS、清洗融合加工中間表、指標表、主題庫/專題課等取4倍。如下計算:
    (30 + 1* 24) * 3 * 4 * 1.25 = 810 TB
    需要總的磁盤空間810TB,如果是10個數據儲存節點,那么每個節點至少要大於81TB的空間,可以掛 9塊* 10TB。
  • 計算
    根據使用到的大數據組件服務來預估
    如基於內存的服務對內存的要求,對磁盤IO使用比較頻繁的是否考慮多塊盤,清洗融合加工頻繁的對cpu的要求等等
  • 可靠穩定性
    集群規模大的,需要區分管理節點、數據儲存和計算節點(或者叫工作節點)。
  • 容錯性
    如果考慮對各個服務或者某些服務做HA的,需要再考慮加節點資源。
    如果考慮做災備集群的,需要再加1倍的資源。
    此外,還要考慮網絡,是否是雙網口?千兆還是萬兆網絡?
從上面幾方面確定集群規模,節點數、每個節點的物理配置(CPU、Memery、磁盤空間)、集群網絡等

 

軟件版本

 

需要注意的是CDH版本和mysql的對應關系,6.3.2最高對應mariadb10.1,不能兼容更高的版本,否則會出錯。通過官網查看,目前cdh6不支持mariadb10.4版本,后來改為10.1版本后正常啟動

參考文檔: https://docs.cloudera.com/documentation/enterprise/6/release-notes/topics/rg_database_requirements.html#cdh_cm_supported_db

                  https://blog.51cto.com/jinkcloud/2482685?source=drt

二、環境准備

1.CDH安裝包下載

CDH官方的網站已經無法直接下載安裝包了(需要賬號密碼),需要找一些之前下載過的人索取。

鏈接:https://pan.baidu.com/s/1dpyhF6TRXaqryab6ZVVXfw 
提取碼:1cuo 

CM

CDH

2.安裝配置操作系統

安裝CentOS 7.9

注意分區參考:

/boot 1G
/swap 8G
/ 剩余全部給根目錄

注意:
如果沒有在裝機的時候分割出來,可以考慮添加8G的swap分區,參考下面方法:

使用dd命令創建名為swapfile 的swap交換文件(文件名和目錄任意):
dd if=/dev/zero of=/var/swapfile bs=1024 count=8192k
對交換文件格式化並轉換為swap分區:
mkswap /var/swapfile
掛載並激活分區:
swapon /var/swapfile
聽從系統的建議修改下權限:
chmod -R 0600 /var/swapfile
修改 fstab 配置,設置開機自動掛載該分區:
echo "/var/swapfile swap swap defaults 0 0" >> /etc/fstab

配置靜態IP

[root@master1 ~]# cat /etc/sysconfig/network-scripts/ifcfg-enp0s3 
TYPE="Ethernet"
PROXY_METHOD="none"
BROWSER_ONLY="no"
BOOTPROTO="static"
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_FAILURE_FATAL="no"
IPV6_ADDR_GEN_MODE="stable-privacy"
NAME="enp0s3"
UUID="9c969854-3983-40d0-998b-31659eb363a8"
DEVICE="enp0s3"
ONBOOT="yes"
IPV6_PRIVACY="no"
IPADDR=192.168.50.189
NETMASK=255.255.255.0
GATEWAY=192.168.50.1
DNS1=192.168.50.1
DNS2=192.168.50.1

##########重啟network#################
[root@master1 ~]# systemctl restart network

配置yum源

下載新的阿里雲yum源

wget  http://mirrors.aliyun.com/repo/Centos-7.repo

清除緩存

yum clean all # 清除系統所有的yum緩存
yum makecache # 生成yum緩存

配置Ip與主機名映射

[root@master1 ~]# cat /etc/hosts

192.168.50.189  master1.cluster  master1
192.168.50.190  worker1.cluster  worker1
192.168.50.191  worker2.cluster  worker2
192.168.50.192  worker3.cluster  worker3

配置無密碼登錄

###安裝Cloudera Manager本身並不需要ssh無密碼登陸,這里做配置主要是為了后續配置集群方便。實現多個機器的ssh免密碼登錄的核心思想是把每一個機器的rsa公鑰集中到一個文件中,並且把這個文件分發到所有的機器上面去。

詳細配置鏈接:https://blog.csdn.net/wjzholmes/article/details/100415396

mkdir -p /root/.ssh
進入
/root/.ssh/目錄下執行命令生成id_rsa.pub文件 ssh-keygen -t rsa ###之后一路回車,產生秘鑰
並將秘鑰追加至authorized_keys文件中 cat id_rsa.pub
>> authorized_keys ###在.ssh文件下運行此命令
將此節點authorized_keys文件傳至下一台機器 scp authorized_keys root@
worker1:/root/.ssh

以此類推,將每台機器文件追加並傳至下一台機器,然后將最后一台機器的秘鑰再分發到每台機器中。

禁用防火牆 (所有節點執行)

在所有節點上關閉防火牆

systemctl status firewalld           檢查防火前狀態
systemctl stop firewalld             關閉防火牆
systemctl disable firewalld         主機重啟自動關閉防火牆

禁用SELinux(所有節點執行)

在命令行運行:

sed -i 's/^SELINUX=.∗/SELINUX=disabled/g' /etc/selinux/config
setenforce 0,使其立即生效

修改/etc/selinux/config文件(在某些系統中,可能是/etc/sysconfig/selinux文件),將SELINUX=enforcing修改為SELINUX=disabled
更新配置之后要重啟服務器生效。

設置swap空間、關閉大頁面壓縮

1.swap空間設置
swappiness=0:表示最大限度使用物理內存,之后才是swap空間;
swappiness=100:表示積極使用swap分區,並且把內存上的數據及時轉移到swap空間;
如果是混合服務器,不建議完全禁用swap,可以嘗試降低swappiness。

Cloudera 建議將 /proc/sys/vm/swappiness 設置為 10(也有說改為0的,Cloudera建議將交換空間設置為0,過多的交換空間會引起GC耗時的激增。)。當前設置為 60。使用 sysctl 命令在運行時更改該設置並編輯 /etc/sysctl.conf 以在重啟后保存該設置。
echo 10 > /proc/sys/vm/swappiness
這樣操作重啟機器還是還原,要永久改變:
echo "vm.swappiness = 10" >> /etc/sysctl.conf

2.已啟用透明大頁面壓縮,可能會導致重大性能問題,建議禁用此設置。
調整:
echo never > /sys/kernel/mm/transparent_hugepage/defrag
echo never > /sys/kernel/mm/transparent_hugepage/enabled

加入啟動生效配置中
[root@master1 ~]# cat /etc/rc.local
echo never > /sys/kernel/mm/transparent_hugepage/enabled
echo never > /sys/kernel/mm/transparent_hugepage/defrag

設置用戶最大可打開文件數,進程數,內存占用(所有節點)

vi /etc/security/limits.conf

*    soft    nofile   32728
*    hard    nofile   1024999
*    soft    nproc   65535
*    hard    noroc    unlimited
*    soft    memlock    unlimited
*    hard    memlock    unlimited

NTP服務安裝和設置

Hadoop對集群中各個機器的時間同步要求比較高,要求各個機器的系統時間不能相差太多,不然會造成很多問題。可以配置集群中各個機器和互聯網的時間服務器進行時間同步,但是在實際生產環境中,集群中大部分服務器是不能連接外網的,這時候可以在內網搭建一個自己的時間服務器(NTP服務器),集群的各個機器與這個時間服務器進行時間同步。我們選擇其中一個節點cdh01機器作為NTP服務器,其他機器和它自動同步。

安裝NTP(所有節點)
yum -y install ntp

添加以下NTP服務器
server http://ntp.aliyun.com

重新啟動 ntp 服務和設置開機自啟(所有節點):
service ntpd restart
systemctl enable ntpd.service

查看和測試:

ntpdc -c loopinfo #查看與時間同步服務器的時間偏差
ntpq -p #查看當前同步的時間服務器
ntpstat #查看狀態定時同步crontab
crontab -e #可以不用設置
10 * * * * /usr/sbin/ntpdate master1

配置和安裝CDH

1.配置CM源

注意:操作系統可以先配置本地yum。CDH的安裝包都是rpm包。如果使用rpm安裝方式安裝起來是比較復雜的,會有很多依賴問題需要解決,就需要使用yum幫助我們解決依賴問題。(也可以是在線的阿里yum源,之前在按照好操作系統之后已經設置了aliyun的yum,所有這里省略centos yum源)

配置CM源:

在cdh01節點上安裝並啟動httpd

#安裝
yum install httpd
#啟動
service httpd start
#開機自啟
systemctl enable httpd
或者chkconfig httpd on
cd /var/www/html/進入到這個目錄下
mkdir cm6; mkdir cdh6
#將cdh的安裝包和cm的包拷貝到創建的目錄
#拷貝cm安裝包和jdk到cm6
cp cloudera-manager-* /var/www/html/cm6/
cp enterprise-debuginfo-6.3.1-1466458.el7.x86_64.rpm /var/www/html/cm6
cp oracle-j2sdk1.8-1.8.0+update181-1.x86_64.rpm /var/www/html/cm6
#拷貝cdh安裝包和元數據文件
cp CDH-6.3.2-1.cdh6.3.2.p0.1605554-el7.parcel /var/www/html/cdh6/
cp manifest.json /var/www/html/cdh6/

安裝createrepo命令,然后進入到cm6目錄創建yum源
yum install -y createrepo #下載createrepo
cd /var/www/html/cm6 #命令進入到cm6安裝包的httpd資源位置
createrepo . #創建yum源的描述meta

配置yum源(每個節點)
cat >> /etc/yum.repos.d/cm.repo << EOF

[CM]
name=cm6
baseurl=http://cdh01/cm6/
gpgcheck=0
EOF

查看yum配置源是否生效
yum clean all
yum repolist

安裝Mariadb(master1)

#設置yum源

[root@master1 ~]# cat /etc/yum.repos.d/MariaDB.repo
[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.1/centos7-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1


#安裝 yum install
-y MariaDB-server MariaDB-client MariaDB-compat MariaDB-devel MariaDB-common MariaDB-shared #啟動和開機自啟 systemctl start mariadb && systemctl enable mariadb #配置Mariadb數據庫 mysql_secure_installation #可以在遇[Y/n]輸入y設置密碼 [賬號/密碼:root/root]

初始化管理節點數據庫(master1)

mkdir -p /usr/share/java
cp /mnt/lb/mysql-connector-java-5.1.34.jar /usr/share/java/mysql-connector-java.jar(這里需要分發到所有節點)
#創建CDH各服務使用的數據庫
-- 1. scm DROP DATABASE IF EXISTS scm; CREATE DATABASE IF NOT EXISTS scm DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci; DROP USER IF EXISTS 'scm'@'%'; CREATE USER IF NOT EXISTS 'scm'@'%' IDENTIFIED BY 'Bdpp1234!'; GRANT ALL PRIVILEGES ON scm.* TO 'scm'@'%' WITH GRANT OPTION; FLUSH PRIVILEGES; -- 2. amon DROP DATABASE IF EXISTS amon; CREATE DATABASE IF NOT EXISTS amon DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci; DROP USER IF EXISTS 'amon'@'%'; CREATE USER IF NOT EXISTS 'amon'@'%' IDENTIFIED BY 'Bdpp1234!'; GRANT ALL PRIVILEGES ON amon.* TO 'amon'@'%' WITH GRANT OPTION; FLUSH PRIVILEGES; -- 3. rman DROP DATABASE IF EXISTS rman; CREATE DATABASE IF NOT EXISTS rman DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci; DROP USER IF EXISTS 'rman'@'%'; CREATE USER IF NOT EXISTS 'rman'@'%' IDENTIFIED BY 'Bdpp1234!'; GRANT ALL PRIVILEGES ON rman.* TO 'rman'@'%' WITH GRANT OPTION; FLUSH PRIVILEGES; -- 4. hue DROP DATABASE IF EXISTS hue; CREATE DATABASE IF NOT EXISTS hue DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci; DROP USER IF EXISTS 'hue'@'%'; CREATE USER IF NOT EXISTS 'hue'@'%' IDENTIFIED BY 'Bdpp1234!'; GRANT ALL PRIVILEGES ON hue.* TO 'hue'@'%' WITH GRANT OPTION; FLUSH PRIVILEGES; -- 5. hive DROP DATABASE IF EXISTS hive; CREATE DATABASE IF NOT EXISTS hive DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci; DROP USER IF EXISTS 'hive'@'%'; CREATE USER IF NOT EXISTS 'hive'@'%' IDENTIFIED BY 'Bdpp1234!'; GRANT ALL PRIVILEGES ON hive.* TO 'hive'@'%' WITH GRANT OPTION; FLUSH PRIVILEGES; -- 6. sentry DROP DATABASE IF EXISTS sentry; CREATE DATABASE IF NOT EXISTS sentry DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci; DROP USER IF EXISTS 'sentry'@'%'; CREATE USER IF NOT EXISTS 'sentry'@'%' IDENTIFIED BY 'Bdpp1234!'; GRANT ALL PRIVILEGES ON sentry.* TO 'sentry'@'%' WITH GRANT OPTION; FLUSH PRIVILEGES; -- 7. nav DROP DATABASE IF EXISTS nav; CREATE DATABASE IF NOT EXISTS nav DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci; DROP USER IF EXISTS 'nav'@'%'; CREATE USER IF NOT EXISTS 'nav'@'%' IDENTIFIED BY 'Bdpp1234!'; GRANT ALL PRIVILEGES ON nav.* TO 'nav'@'%' WITH GRANT OPTION; FLUSH PRIVILEGES; -- 8. navms DROP DATABASE IF EXISTS navms; CREATE DATABASE IF NOT EXISTS navms DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci; DROP USER IF EXISTS 'navms'@'%'; CREATE USER IF NOT EXISTS 'navms'@'%' IDENTIFIED BY 'Bdpp1234!'; GRANT ALL PRIVILEGES ON navms.* TO 'navms'@'%' WITH GRANT OPTION; FLUSH PRIVILEGES; -- 9. oozie DROP DATABASE IF EXISTS oozie; CREATE DATABASE IF NOT EXISTS oozie DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci; DROP USER IF EXISTS 'oozie'@'%'; CREATE USER IF NOT EXISTS 'oozie'@'%' IDENTIFIED BY 'Bdpp1234!'; GRANT ALL PRIVILEGES ON oozie.* TO 'oozie'@'%' WITH GRANT OPTION; FLUSH PRIVILEGES;
#執行數據庫初始腳本
/opt/cloudera/cm/schema/scm_prepare_database.sh mysql -h localhost -uroot -pshdata --scm-host localhost scm root root
注意:初始化完成之后,登錄的root賬號的密碼變成了root,可以根據scm_prepare_database.sh腳本分析出來

安裝其他的agent節點(work1、work2、work3)

#安裝
yum install -y oracle-j2sdk1.8.x86_64
#安裝agent
yum install cloudera-manager-daemons cloudera-manager-agent -y

修改配置文件(所有節點)

修改Cloudera Agent配置文件/etc/cloudera-scm-agent/config.ini,配置server_host為主節點cdh01
#通過vi命令修改
vi /etc/cloudera-scm-agent/config.ini
server_host=cdh01
#也可以通過sed命令修改(推薦)
sed -i "s/server_host=localhost/server_host=cdh01/g" /etc/cloudera-scm-agent/config.ini

配置JAVA_HOME(所有節點)

vi /etc/profile
#add for JAVA_HOME
export JAVA_HOME=/usr/java/jdk1.8.0_181-cloudera/
export PATH=PATH:PATH:PATH:JAVA_HOME/bin

啟動CDH

1.啟動Cloudera Manager(cdh01)
#啟動
service cloudera-scm-server start //systemctl start cloudera-scm-server
#設置開機自啟???
chkconfig cloudera-scm-server on //systemctl enable cloudera-scm-server
2.啟動Cloudera Agent(所有節點)
#啟動
service cloudera-scm-agent start //systemctl start cloudera-scm-agent
#開機自啟
//systemctl enable cloudera-scm-agent

可以訪問 進行組件服務的安裝操作了
用戶名/密碼: admin/admin

Web頁面安裝配置

大部分按照常規的設置即可。
以下是特別的地方做下記錄。

1.集群名字

Cluster_shdata

2.選擇儲存庫時,遠程庫的設置

點擊這里之后,設置遠程庫特別注意一下(根據知乎同學的反饋,借用截圖。於20210604修改)

借用的截圖說明下,下面這個遠程Parcel儲存庫URL就保留一個,用本地的那個parcel,修改成就可以了,不要連CDH官網的了地址。

 

 

選擇之前建立好的mysql中的數據庫,並測試數據庫連接:

 

這里參考《大數據平台架構與實現》只安裝Zookeeper、HDFS、Yarn、Hive、HBase、Spark、Oozie、Kafka、Hue。

 

 

安裝完成后界面如下:

安裝遇到的問題

1 安裝CDH時候出現主機運行狀態不良情況
問題:通過Cloudera WEB界面安裝Hadoop過程中,在安裝Parcel步驟時,一個節點分配激活失敗,報錯信息顯示”主機運行狀況不良
分析:
CM的集群是Server-Agent模式的,那么必須有一個唯一的id來標識Server和Agent屬於同一個集群,在Agent端就是使用cm_guid文件來記錄id的。
假設server端重新安裝了一遍,重新構建集群,而agent沒有重新安裝,那么他們的id是一定不同的,就會造成主機運行狀況不良的異常。
解決方法:
刪除agent目錄下面的cm_guid文件,並重啟失敗節點的agent服務恢復
find / -name cm_guid
rm -rf /var/lib/cloudera-scm-agent/cm_guid
systemctl restart cloudera-scm-agent
解決方案參考以下鏈接:
https://blog.csdn.net/holdbelief/article/details/80287471

2 Required List parameter 'hosts[]' is not present
問題:安裝cdh的parcel包下一步時顯示 Required List parameter 'hosts[]' is not present的報錯

解決方法:

查看日志,跟manifest.json文件有關,刪除/opt/cloudera/parcel-repo/目錄下的manifest.json文件,重新上傳。

重啟cloudera-scm-server,報錯解決。

參考: https://blog.csdn.net/wjzholmes/article/details/106079673

 

 3.safemode: Access denied for user root. Superuser privilege is required

因磁盤空間不足,內存不足,系統掉電等其他原因導致dataNode datablock丟失。

原因分析(Cause Analysis)*

由於系統斷電,內存不足等原因導致dataNode丟失超過設置的丟失百分比,系統自動進入安全模式

解決辦法(Solution)*

安裝HDFS客戶端,並執行如下命令:

                                步驟 1     執行命令退出安全模式:hadoop dfsadmin -safemode leave

                                步驟 2     執行健康檢查,刪除損壞掉的block。

                                   hdfs fsck -list-corruptfileblocks

                                   hdfs fsck  /  -delete

 參考:https://blog.csdn.net/czp11210/article/details/76695745

 

4.Hue: Thrift Server role must be configured in HBase service to use the Hue HBase Browser application

 解決辦法:
在這里插入圖片描述
重啟hue之后,還有紅色感嘆號!,看下圖解決
在這里插入圖片描述

 參考: https://blog.csdn.net/weixin_43970277/article/details/116226464

 

其余問題參考:https://blog.csdn.net/weixin_39338423/article/details/108402582

 

 參考:

https://zhuanlan.zhihu.com/p/366308900

https://blog.csdn.net/qq_40856560/article/details/109007683

https://www.cnblogs.com/swordfall/p/10816797.html

https://www.cnblogs.com/dengbangpang/p/13224244.html

https://blog.csdn.net/wsdc0521/article/details/108366867


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM