虚拟机搭建CDH6详细过程_三节点为例
準備工作
一、安裝虛擬機、centos
1、安裝VMwareWorkstation虛擬化軟件
首先我們使用VMwareWorkstation來快速的進行虛擬機的新建。
本文使用的版本為VMwareWorkstation 16.1.2(版本16.1.2 build-17966106)
2、主節點配置(master)
虛擬機新建完成,可以繼續編輯虛擬機,將安裝鏡像掛載
3、設置虛擬機網絡
等虛擬機裝機完成,點設置進行掛載
Ifconfig 查虛擬機網絡
網絡 vmnet8
子網 IP 192.168.67.0
子網掩碼 255.255.255.0
網關 192.168.67.2
進入虛擬機進行網卡設置
[root@localhost /]# cat /etc/sysconfig/network-scripts/ifcfg-ens33
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="ens33"
UUID="82f63c42-7f4b-4b07-a22d-5bb3be8e50d6"
DEVICE="ens33"
ONBOOT="yes"
IPADDR=192.168.67.101
NETMASK=255.255.255.0
GATEWAY=192.168.67.2
DNS1= 8.8.8.8
DNS2=8.8.8.4
重啟網絡
獲取本地 百度 某個節點進行訪問
解決網絡不通的問題
ping: www.baidu.com: Name or service not known
resolv.conf中的nameserver與ifcfg-ens33文件中DNS的設置相同:
vi /etc/resolv.conf
nameserver 8.8.8.8
nameserver 8.8.8.4
[root@localhost /]# history
1 vi ifcfg-ens33
2 service network restart
3 ifconfig
4 ping 192.168.67.101
5 ping 183.2.172.177
6 ping www.baidu.com
7 vi /etc/resolv.conf
8 cat /etc/resolv.conf
9 cd /
10 source /etc/resolv.conf
11 echo $PATH
12 history
網絡已通
4、從節點(slave-1和slave-2)配置
按上述步驟固定網絡和疏通網絡
內存足夠的話 克隆操作是最方便的,但是內存有限只能主節點內存配置高,其余節點少一些了。直接克隆主節點會報內存不足。
內存爆滿,鏟掉!重新配置
按照master 節點進行 網絡配置
[root@localhost /]# history
1 vi /etc/sysconfig/network-scripts/ifcfg-ens33
2 service network restart
3 ping 192.168.92.102
4 ping 192.168.67.102
5 vi /etc/resolv.conf
6 ping www.baidu.com
7 ping 192.168.67.103
8 ping 192.168.67.102
9 ifconfig
10 history
[root@localhost /]# history
1 vi /etc/sysconfig/network-scripts/ifcfg-ens33
2 service network restart
3 vi /etc/resolv.conf
4 ping 192.168.67.103
5 ping www.baidu.com
6 history
上述操作完成 節點2和節點3 網絡的固定和通網。
5、xshell遠程訪問
此時將三臺虛擬機開啟,最終的效果三臺虛擬機正常運行,xshell可以遠程同時操作這三臺機器
連接SSH 管理虛擬機
網絡 vmnet8
子網 IP 192.168.67.0
子網掩碼 255.255.255.0
網關 192.168.67.2
主節點 192.168.67.101 master
節點1 192.168.67.102 slave-1
節點2 192.168.67.103 slave-2
其余倆節點類似配置登上去即可
6、設置主機名(每一個節點都需要執行)
此處為例子,根據實際情況自行設定名稱,此處將服務器名稱改為master
hostnamectl set-hostname master
設置第二個節點服務器的名稱為slave-1
hostnamectl set-hostname slave-1
設置第三個節點服務器的名稱為slave-2
hostnamectl set-hostname slave-2
輸入 exit 退出登錄,接著輸入ssh root@192.168.67.101 輸密碼登錄即可看到修改的服務器名已生效
[root@master ~]# history
1 ifconfig
2 hostnamectl set-hostname master
3 exit
4 history
也可以通過輸入 hostname 來驗證是否成功,上述登錄登出只是為了直觀感受(看著舒服)
7、修改hosts文件(每一個節點都需要執行)
修改hosts文件(每一個節點都需要執行)
編輯hosts文件
vim /etc/hosts
在hosts文件尾部追加如下內容
192.168.67.101 master
192.168.67.102 slave-1
192.168.67.103 slave-2
8、修改每臺主機的/etc/sysconfig/network文件(每一個節點都需要執行)
打開文件
vim /etc/sysconfig/network
寫入對應的服務器
HOSTNAME=master
注:其余節點服務器分別寫入各自服務器名稱
9、查看主機名是否生效(每一個節點都需要執行)
10、關閉防火墻(每一個節點都需要執行)
直接全部粘貼復制執行就好
systemctl stop firewalld
&& systemctl disable firewalld
&& systemctl status firewalld
11、關閉Selinux(每一個節點都需要執行)
編輯selinux文件
vim /etc/sysconfig/selinux
修改如下內容,將enforcing換成permissive
SELINUX=permissive
注意:此處需要重啟服務器,不然不生效,會導致后面搭建本地yum源的時候報403的錯誤
重啟指令:reboot
其余倆節點進行一樣的修改
12、配置SSH免密登陸(每一個節點都需要執行)
虛擬機新增三節點如下:
192.168.67.101 master 主節點
192.168.67.102 slave-1 節點1
192.168.67.103 slave-2 節點2
配置SSH免密登陸(每一個節點都需要執行)
https://blog.csdn.net/Alan3344/article/details/84131661
1、設置master免密遠程登錄其他節點,以root用戶為例
在master節點輸入如下指令(生成密鑰):
ssh-keygen -t rsa
四次回車 密碼給空
如下操作,將公鑰發送給每個節點:
ssh-copy-id master
ssh-copy-id slave-1
ssh-copy-id slave-2
上述操作在三個節點上都操作一邊,即可實現免密碼登錄服務器
操作跟主節點一致
驗證
在master節點輸入如下指令(生成密鑰):
ssh-keygen -t rsa
四次回車 密碼給空
如下操作,將公鑰發送給每個節點:
ssh-copy-id master
ssh-copy-id slave-1
ssh-copy-id slave-2
13、設置NTP服務
在主節點上
編輯ntp.conf文件
vim /etc/ntp.conf
注釋掉如下內容
server 0.centos.pool.ntp.org iburst
server 1.centos.pool.ntp.org iburst
server 2.centos.pool.ntp.org iburst
server 3.centos.pool.ntp.org iburst
添加如下內容
server 127.127.1.0
Fudge 127.127.1.0 stratum 10
修改如下信息
restrict ${當前節點ip} nomodify notrap nopeer noquery
restrict ${集群所在網段的網關} mask ${子網掩碼} nomodify notrap
其余節點上(其余節點都需要執行)
編輯ntp.conf文件
vim /etc/ntp.conf
注釋掉如下內容
server 0.centos.pool.ntp.org iburst
server 1.centos.pool.ntp.org iburst
server 2.centos.pool.ntp.org iburst
server 3.centos.pool.ntp.org iburst
添加如下內容
server ${主節點ip}
Fudge ${主節點ip} stratum 10
修改如下信息
restrict ${當前節點ip} nomodify notrap nopeer noquery
restrict ${集群所在網段的網關} mask ${子網掩碼} nomodify notrap
--slave-1
vim /etc/ntp.conf
注釋掉如下內容
server 0.centos.pool.ntp.org iburst
server 1.centos.pool.ntp.org iburst
server 2.centos.pool.ntp.org iburst
server 3.centos.pool.ntp.org iburst
新增如下內容
server 192.168.67.101
Fudge 192.168.67.101 stratum 10
restrict 192.168.67.102 nomodify notrap nopeer noquery
restrict 192.168.67.2 mask 255.255.255.0 nomodify notrap
--slave-2
vim /etc/ntp.conf
注釋掉如下內容
server 0.centos.pool.ntp.org iburst
server 1.centos.pool.ntp.org iburst
server 2.centos.pool.ntp.org iburst
server 3.centos.pool.ntp.org iburst
新增如下內容
server 192.168.67.101
Fudge 192.168.67.101 stratum 10
restrict 192.168.67.103 nomodify notrap nopeer noquery
restrict 192.168.67.2 mask 255.255.255.0 nomodify notrap
啟動時間同步服務器(每一個節點都要執行)
啟動時間同步服務器(每一個節點都要執行)
直接全部粘貼復制運行即可
systemctl start ntpd
&& systemctl enable ntpd
&& ntpdate -u 0.cn.pool.ntp.org
&& hwclock --systohc
&& date
查看是否鏈接上主節點時間服務器
Ntpstat
上個步驟報錯
解決方案
原因是 上一步的 改動 動網了 上不了網了
ping: www.baidu.com: Name or service not known
vi /etc/resolv.conf
nameserver 8.8.8.8
nameserver 8.8.8.4
不知何原因vi /etc/resolv.conf 配置總被失效,只能每次發現問題時加上nameserver 8.8.8.8才通網,后續找個徹底修改的方法。
重新進行上一步驟,啟動時間同步服務器
以上操作為服務器前期準備操作,接下來就是 下載相關軟件進行部署
二、安裝軟件清單和路徑創建
通過網盤分享的文件:cloudera.zip
鏈接: https://pan.baidu.com/s/1xhISzC8sHE3sv8F_XoKQ3Q?pwd=7qe5 提取碼: 7qe5
注:以上安裝包是一個zip包,內包含安裝CDH6.1所有的包,下載后解壓即可
1.上傳安裝包到master主節點
注意:這里的安裝目錄最好以本文為主,這樣后面的指令直接可以粘貼復制即可,不用修改
2.在root目錄下新建cloudera目錄,并將下載的安裝包放于里面
在root目錄下創建cloudera目錄
cd /root
mkdir cloudera
3.上傳安裝包于cloudera目錄下,并解壓
上傳安裝包后截圖
解壓指令
unzip cloudera.zip
這里解決一下一個bug,文件名命名不對,我懶得去更新壓縮包內的內容了,所有搭建者看到這就自己辛苦下
cd /root/cloudera/cloudera-manager
mv allkeys.asc.txt allkeys.asc
4.查看所有安裝包目錄信息
5.安裝tree
如果沒有tree指令,則先下載安裝指令
yum install tree
查看root目錄下cloudera目錄的目錄樹
tree -C /root/cloudera
6.tree安裝失敗處理方案
--tree 下載失敗
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
或者
curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
yum clean all
yum makecache
[root@master /]# history
1 ifconfig
2 hostnamectl set-hostname master
3 exit
4 history
5 hostname
6 vim /etc/hosts
7 cat /etc/hosts
8 vim /etc/sysconfig/network
9 cat /etc/sysconfig/network
10 hostname
11 systemctl stop firewalld && systemctl disable firewalld && systemctl status firewalld
12 vim /etc/sysconfig/selinux
13 reboot
14 history
15 vim /etc/ntp.conf
16 systemctl start ntpd && systemctl enable ntpd && ntpdate -u 0.cn.pool.ntp.org && hwclock --systohc && date
17 vi /etc/resolv.conf
18 systemctl start ntpd && systemctl enable ntpd && ntpdate -u 0.cn.pool.ntp.org && hwclock --systohc && date
19 ntpstat
20 cd /root
21 mkdir cloudera
22 ls
23 ll
24 cd cloudera/
25 ls
26 ll
27 unzip cloudera.zip
28 ll
29 cd /root/cloudera/cloudera-manager
30 mv allkeys.asc.txt allkeys.asc
31 ll
32 cd /
33 yum install tree
34 mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
35 wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
36 yum clean all
37 yum makecache
38 yum install tree
39 history
[root@master /]#
在其余倆節點可按喜好進行安裝tree(本文安裝了)
7.安裝常用工具(每一個節點都需要執行)
yum install -y vim wget ntp net-tools
三、在主節點安裝本地yum源(只需要在主節點,也就是安裝CM的節點)
前面強調了把下載的安裝包放于/root/cloudera下面,此處下面指令就全部粘貼復制運行即可,否則需要更改路徑信息
yum -y install httpd createrepo
&& systemctl start httpd
&& systemctl enable httpd
&& cd /root/cloudera/cloudera-manager/
&& createrepo .
&& mv /root/cloudera/cloudera-manager/ /var/www/html/
四、安裝JDK(只需要在主節點,也就是安裝CM的節點)
進入到安裝路徑下,(安裝前面所示安裝包路徑,則直接粘貼使用)
cd /var/www/html/cloudera-manager/
rpm -ivh oracle-j2sdk1.8-1.8.0+update141-1.x86_64.rpm
五、安裝Mysql(只需要在主節點,也就是安裝CM的節點)
1.卸載mariadb
以下指令全部粘貼復制就行
卸載自帶的mariadb
yum -y remove mariadb-libs
2.解壓下載MySQL的安裝包
解壓下載的MySQL包
cd /root/cloudera/mysql/
tar -xvf mysql-5.7.27-1.el7.x86_64.rpm-bundle.tar
3.安裝MySQL
#直接全部粘貼復制運行 yum install -y libaio \ && rpm -ivh mysql-community-common-5.7.27-1.el7.x86_64.rpm \ && rpm -ivh mysql-community-libs-5.7.27-1.el7.x86_64.rpm \ && rpm -ivh mysql-community-client-5.7.27-1.el7.x86_64.rpm \ && rpm -ivh mysql-community-server-5.7.27-1.el7.x86_64.rpm \ && rpm -ivh mysql-community-libs-compat-5.7.27-1.el7.x86_64.rpm
4.配置 my.cnf
#粘貼復制運行即可 echo character-set-server=utf8 >> /etc/my.cnf
5.創建數據庫以及授權
這只是一個創建數據庫的SQL腳本文件,里面涉及到數據庫的密碼,根據個人進行修改即可,修改后全部粘貼復制運行就好
( cat <<EOF set password for root@localhost = password('123456Aa.'); grant all privileges on *.* to 'root'@'%' identified by '123456Aa.'; flush privileges; CREATE DATABASE scm DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci; CREATE DATABASE amon DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci; CREATE DATABASE rman DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci; CREATE DATABASE hue DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci; CREATE DATABASE metastore DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci; CREATE DATABASE sentry DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci; CREATE DATABASE nav DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci; CREATE DATABASE navms DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci; CREATE DATABASE oozie DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci; GRANT ALL ON scm.* TO 'scm'@'%' IDENTIFIED BY '123456Aa.'; GRANT ALL ON amon.* TO 'amon'@'%' IDENTIFIED BY '123456Aa.'; GRANT ALL ON rman.* TO 'rman'@'%' IDENTIFIED BY '123456Aa.'; GRANT ALL ON hue.* TO 'hue'@'%' IDENTIFIED BY '123456Aa.'; GRANT ALL ON metastore.* TO 'hive'@'%' IDENTIFIED BY '123456Aa.'; GRANT ALL ON sentry.* TO 'sentry'@'%' IDENTIFIED BY '123456Aa.'; GRANT ALL ON nav.* TO 'nav'@'%' IDENTIFIED BY '123456Aa.'; GRANT ALL ON navms.* TO 'navms'@'%' IDENTIFIED BY '123456Aa.'; GRANT ALL ON oozie.* TO 'oozie'@'%' IDENTIFIED BY '123456Aa.'; SHOW DATABASES; EOF ) >> /root/c.sql
6.啟動MySQL服務
直接粘貼復制運行即可
systemctl enable mysqld && systemctl start mysqld && grep password /var/log/mysqld.log | sed 's/.*\(............\)$/\1/'
初始化密碼為 8Tkxdu/dTAdj
7.登陸MySQL并運行之前寫好的SQL腳本
登陸MySQL
mysql -uroot -p
密碼就輸入上面打印出的初始化密碼就好
運行SQL文件(注意你的sql是否放在該目錄下,建議以文檔為主,懶得修改那么多)
source /root/c.sql
8.配置MySQL JDBC驅動
輸入exit 退出 mysql
直接粘貼復制執行
mkdir -p /usr/share/java/
&& cd /root/cloudera/mysql-jdbc/;tar -zxvf mysql-connector-java-5.1.47.tar.gz
&& cp /root/cloudera/mysql-jdbc/mysql-connector-java-5.1.47/mysql-connector-java-5.1.47-bin.jar /usr/share/java/mysql-connector-java.jar
需要授權,賦予執行權限
chmod 777 mysql-connector-java.jar 或者 chmod 775 mysql-connector-java.jar
CM搭建、集群部署
一、在主節點上配置本地yum源
配置本地yum源,記得要修改ip,修改后直接粘貼復制執行即可
( cat <<EOF [cloudera-manager] name=Cloudera Manager 6.1.0 baseurl=http://${當前節點IP}/cloudera-manager/ gpgcheck=0 enabled=1 EOF ) >> /etc/yum.repos.d/cloudera-manager.repo \ && yum clean all \ && yum makecache
二、安裝 Cloudera Manager
yum install -y cloudera-manager-daemons cloudera-manager-agent cloudera-manager-server
三、 配置本地Parcel存儲庫
以下指令依次粘貼執行就好,第一條指令
`mv /root/cloudera/parcel/* /opt/cloudera/parcel-repo
第二條指令
cd /opt/cloudera/parcel-repo/
第三條指令
sha1sum CDH-6.1.0-1.cdh6.1.0.p0.770702-el7.parcel | awk '{ print $1 }' > CDH-6.1.0-1.cdh6.1.0.p0.770702-el7.parcel.sha
第四條指令
chown -R cloudera-scm:cloudera-scm /opt/cloudera/parcel-repo/*`
四、初始化scm庫
注意修改你所配置的mysql對應scm庫的密碼
/opt/cloudera/cm/schema/scm_prepare_database.sh mysql scm scm 123456Aa.
五、啟動CM
直接粘貼復制執行
systemctl start cloudera-scm-server \ && sleep 2 \ && tail -f /var/log/cloudera-scm-server/cloudera-scm-server.log | grep "INFO WebServerImpl:com.cloudera.server.cmf.WebServerImpl: Started Jetty server"
六、登陸CM界面完成CDH部署
http://${CM所在節點的IP}:7180
賬號/密碼:admin/admin
1.登錄CM界面
http://192.168.67.101:7180
賬號/密碼:admin/admin
2.用戶許可,同意,繼續
3.選擇使用版本,繼續
4.搜索主機,添加到群集
5.自定義存儲庫(選擇配置好的yum源地址)
6.同意jdk使用許可,繼續
7.提供SSH登錄憑據,繼續
8.安裝Agents(每個節點均需)
9.安裝parcels(每個節點均需)
點繼續,完成主機檢查
10.選擇自定義安裝的大數據組件
11.選擇自定義角色分配(均勻一些)
12.測試數據庫連接
點測試連接
未找到驅動
問題原因:102、103未找到MySQL驅動
只在主節點放驅動,未在slave-1 slave-2 放驅動
解決方案:將MySQL驅動上傳至102、103
創建驅動目錄,把文件上傳到倆從節點 102 和 103
mkdir cloudera
上傳mysql-jdbc文件至/root/cloudera 目錄下 即可
點測試連接,通過,繼續下一步
13.首次運行
hive啟動MetaStore報錯
報錯信息:First failure: Command (Validate Hive Metastore schema (78)) has failed
創建HIVE 數據庫失敗
First failure: Command (Validate Hive Metastore schema (78)) has failed
返回返回返回 改回 只在master 節點安裝
解決方法:
在cdh角色配置頁中,將hive的Hive Metastore server配置為master機器
--此解決方案失敗,繼續排查
sudo cp /root/cloudera/mysql-jdbc/mysql-connector-java-5.1.47/mysql-connector-java-5.1.47-bin.jar /usr/share/java/mysql-connector-java.jar
此方案也不行
參考第三種方案
https://blog.csdn.net/Mrerlou/article/details/121157908
根據錯誤提示可以看到,初始化過程中沒有連接mysql數據庫,而是去連接默認的derby數據庫,于是打開/etc/hive/conf/hive-site.xml,我們可以看到它并沒有相關mysql元數據庫的配置--這個方案是可行的,最后也是用了此方案,我配置信息配錯了,可直接翻到最后查看準確的配置信息。
所以需要在/etc/hive/conf/hive-site.xml(cloudera/parcels/CDH/lib/hive/conf的軟鏈實體)中手動添加元數據庫配置,添加如下內容:
刪庫重來
不能解決此問題,繼續排查
chmod 777 mysql-connector-java.jar或者 chmod 775 mysql-connector-java.jar
重新執行還是不行(崩潰ing)
修改文件打開限制
vi /etc/security/limits.conf
- soft nofile 65536
- hard nofile 65536
- soft nproc 131072
- soft nproc 131072
報錯信息變了
Failed to get schema version, Cause:Table 'metastore.VERSION' doesn't exist
初始化腳本在
cd /opt/cloudera/parcels/CDH/lib/hive/bin/
執行初始化命令
./schematool -initSchema -dbType mysql --verbose
根據錯誤提示可以看到,初始化過程中沒有連接mysql數據庫,而是去連接默認的derby數據庫,于是打開/etc/hive/conf/hive-site.xml,我們可以看到它并沒有相關mysql元數據庫的配置
新增配置:
vi /etc/hive/conf/hive-site.xml
<property> <name>javax.jdo.option.ConnectionURL</name> <value>jdbc:mysql://192.168.67.101:3306/metastore?createDatabaseIfNotExist=true</value> </property> <property> <name>javax.jdo.option.ConnectionDriverName</name> <value>com.mysql.jdbc.Driver</value> </property> <property> <name>javax.jdo.option.ConnectionUserName</name> <value>root</value> </property> <property> <name>javax.jdo.option.ConnectionPassword</name> <value>123456Aa.</value> </property>
cd /opt/cloudera/parcels/CDH/lib/hive/bin/
./schematool -initSchema -dbType mysql --verbose
再次執行完就能看到schemaTool completed信息,可回到CM主頁進行重跑。
14.安裝服務完成
總結
以上是生活随笔為你收集整理的虚拟机搭建CDH6详细过程_三节点为例的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: The Eclipse executab
- 下一篇: codeup之冒泡排序