1. 設定機器名(所有節點)
hostnamectl set-hostname test-hadoop1
vim /etc/hosts #修改ip與主機名的對應關系
10.14.91.10 test-hadoop1 #主節點
10.14.91.11 test-hadoop2 #從節點
10.14.91.12 test-hadoop3 #從節點
2.ssh免登陸
在主節點上執行 ssh-keygen -t rsa 一路回車,生成無密碼的密鑰對。
将公鑰添加到認證檔案中: cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys ,并設定authorized_keys的通路權限: 。
scp~/.ssh/authorized_keys到所有datenode節點:
scp ~/.ssh/authorized_keys [email protected]:~/.ssh/
3.主節點安裝mysql和 所有節點安裝JDK
1)線上安裝 yum install mysql-server 比較友善
2)我使用的是rpm安裝
将下載下傳的mysql-5.7.23-1.el7.x86_64.rpm-bundle.tar 上傳到我們的centos系統中
然後運作解壓指令:tar -xf mysql-5.7.23-1.el7.x86_64.rpm-bundle.tar
由于CentOs7之後會在系統中自帶一個免費的資料庫:mariadb,并且它的驅動和mysql的驅動是有沖突的,是以我們必須先要解除安裝他
首先用rpm指令檢視一下是否有mariadb和mysql,如果有先将其解除安裝。
rpm -qa | grep -i mariadb
rpm -qa | grep -i mysql
然後我們用rpm指令删除這個版本的mariadb
rpm -e --nodeps mariadb-libs-5.5.52-1.el7.x86_64
由于mysql的server端需要perl語言的支援,是以我們還需要在系統中安裝perl支援:
yum install perl -y
yum -y install libaio
由于我們上面解壓出來的幾個rpm包有依賴關系,是以我們需要按照順序執行安裝:
rpm -ivh mysql-community-common-5.7.23-1.el7.x86_64.rpm
rpm -ivh mysql-community-libs-5.7.23-1.el7.x86_64.rpm
rpm -ivh mysql-community-client-5.7.23-1.el7.x86_64.rpm
rpm -ivh mysql-community-server-5.7.23-1.el7.x86_64.rpm
有可能錯誤:依賴檢測失敗:
net-tools 被 mysql-community-server-5.7.24-1.el7.x86_64 需要
解決辦法:
yum install net-tools -y
安裝完後啟動:
systemctl start mysqld.service
我們在啟動了mysql之後,這個時候等待一段時間,資料庫需要進行初始化,這個時候我們可以看一下資料庫的日志,會發現mysql幫我們初始化了一個root使用者:
cat /var/log/mysqld.log | grep password
裡面會有mysql root使用者的登入密碼
然後可以用下面的指令修改登入密碼
mysql -u root -p’密碼’
接着輸入`mysql>SET PASSWORD = PASSWORD(' yqxt20190720');`
注意:這裡隻需主節點安裝即可,這裡主節點是10.14.91.10 test-hadoop1 這台機器
jdk安裝步驟可參照https://www.cnblogs.com/shihaiming/p/5809553.html
4.關閉防火牆和SELinux
關閉防火牆:
service iptables stop (臨時關閉)
chkconfig iptables off (重新開機後生效)
關閉SELINUX(實際安裝過程中發現沒有關閉也是可以的,不知道會不會有問題,還需進一步進行驗證):
setenforce 0 (臨時生效) 本人測試不關閉也行,但網上有人說要關,大家自行測試
修改 /etc/selinux/config 下的 SELINUX=disabled (重新開機後永久生效)
Centos7
關閉防火牆
systemctl stop firewalld.service #停止firewall
systemctl disable firewalld.service #禁止firewall開機啟動
5.所有節點配置NTP服務
首先是安裝 ntp 服務, 我們的作業系統是 Centos7 , 使用 rpm 管理。首先,檢視下我們是否已經安裝了該服務
rpm –qa | grep ntp
若隻有ntpdate而未見ntp,則需删除原有ntpdate。如:
ntpdate-4.2.6p5-22.el7_0.x86_64
fontpackages-filesystem-1.44-8.el7.noarch
python-ntplib-0.3.2-1.el7.noarch
删除已安裝ntp
yum –y remove ntpdate-4.2.6p5-22.el7.x86_64
重新安裝ntp(所有節點)
yum –y install ntp
主節點操作:
systemctl start ntpd #啟動ntp服務
systemctl enable ntpd #設定為開機自啟
由于華為雲對ntp服務有一些優化,實際測試中,主節點已經指向了一個華為雲内網的時間同步伺服器,是以主節點隻需安裝服務和啟動服務,無需其他操作,隻需到從節點修改配置檔案,将伺服器指向主節點即可
所有從節點操作:
将server ntp.myhuaweicloud.com iburst
改為 server 10.14.91.10 iburst
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsICM38FdsYkRGZkRG9lcvx2bjxiNx8VZ6l2cs0TPB10dBpWT4VkeNBDOsJGcohVYsR2MMBjVtJWd0ckW65UbM5WOHJWa5kHT20ESjBjUIF2X0hXZ0xCMx81dvRWYoNHLrdEZwZ1Rh5WNXp1bwNjW1ZUba9VZwlHdssmch1mclRXY39CXldWYtlWPzNXZj9mcw1ycz9WL49zZuBnL5gjM0MTMxQTM0ADOwAjMwIzLc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
然後重新開機ntp伺服器并設定開機自啟
systemctl restart ntpd
systemctl enable ntpd
6.開始安裝CDH
由于直接用yum安裝cdh的包會非常的慢,要好幾個小時,為了提高效率,節省時間,這裡采用離線安裝的方式,先将所需要的包用迅雷等軟體下載下傳好,再上傳到伺服器中,這樣後續有機器加進叢集中,因為是通過内網連接配接,速度提升很巨大!
1) 主節點啟動httpd服務
這裡我們需要借用httpd 在主節點搭建一個網絡服務
yum -y install httpd
systemctl start httpd
systemctl enable httpd
啟動後,我們可以直接在浏覽器中通過ip位址通路一下,看下服務是否啟動正常: httpd 預設使用的就是 80端口
在浏覽器輸入外網ip位址能看到這個頁面的話http服務就是成功了
httpd 有一定的公約,/var/www/html 是 httpd 的根目錄,
假設我們 将檔案放在 /var/www/html/cdh6/parcels/6.0.1 下,我們可以通過頁面通路到 :
http://10.14.91.10/cdh6/parcels/6.0.1/
2)下載下傳parcel包
這裡我們需要從官網上下載下傳對應系統的 parcel,在安裝時候通過本地加速
6.0.1 版本的位址如下,
https://archive.cloudera.com/cdh6/6.0.1/parcels/
注意
manifest.json 與 sha256 校驗檔案最好一并下載下傳
下載下傳完成後,将CDH-6.0.1-1.cdh6.0.1.p0.590678-el7.parcel、CDH-6.0.1-1.cdh6.0.1.p0.590678-el7.parcel.sha256、manifest.json這三個檔案上傳到主節點伺服器的檔案夾/var/www/html/cdh6/parcels/6.0.1中
此檔案夾要先建立:
mkdir -p /var/www/html/cdh6/parcels/6.0.1
3) 下載下傳cloudera-manager軟體包,下載下傳位址:https://archive.cloudera.com/cm6/6.0.1/redhat7/yum/RPMS/x86_64/
将該目錄下的rpm包全部下載下傳。下載下傳好後,我們将這些包放置在主節點的:
/var/www/html/yum/centos7/repo
目錄提前要建立好
mkdir -p /var/www/html/yum/centos7/repo
然後我們要為下載下傳的這些rpm,生成一個依賴關系。
cd /var/www/html/yum/centos7/repo
createrepo .
之後。會生成一個 repodata 檔案夾
除此之外,我們還需要為源,編寫 .repo 檔案來描述我們的源。
首先,我們切換到主節點源的配置目錄
cd /etc/yum.repos.d/
建立一個 localCDH.repo
内容如下:
[localCDHRepo]
name=local_CDH_Repo
baseurl=http://10.14.91.10/yum/centos7/repo/
enabled=true
gpgcheck=false
最後,我們執行下
更新本地緩存,這樣就加載了我們新建立的源。
之後,我們把 localCDH.repo 的配置放到其他機器的 /etc/yum.repos.d/ 目錄下,讓其他機器也可以通過 httpd 通路到這些 rpm。
4)安裝服務
由于已經将包提前下好放在了httpd的目錄裡,是以可以直接用yum來安裝
主節點:安裝cloudera-manager-daemons、cloudera-manager-agent、cloudera-manager-server
從節點:安裝cloudera-manager-daemons、cloudera-manager-agent
最後建議把這些服務設定為 開機啟動服務,友善管理。在叢集重新開機的時候,可以不用擔心服務的問題。
主節點:
[[email protected] ~]# systemctl enable cloudera-scm-agent
[[email protected] ~]# systemctl enable cloudera-scm-server
其他節點:
注意:這裡先不要啟動服務,隻是先把他加進開機自啟動裡。
5)修改各節點的配置檔案,包括主節點
将server_host 修改為主節點的hostname或者是ip位址,上面的步驟做過ip位址和hostname對應關系的解析的,是以這裡直接就填主節點的hostanme了(主節點和從節點都要改這個配置檔案,ip都指向主節點的ip)
6)安裝配置MySQL
主節點安裝MySQL,MySQL安裝參照2.3.2Mysql安裝
安裝完成後,登入MySQL,我們需要給 mysql 增加必要的使用者,用于其他元件 将 mysql 作為源資料庫
下面是cloudera manager官方文檔給出的使用者清單,依次建立
SQL指令:
建立相應使用者
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 ‘123456’; GRANT ALL ON amon.* TO ‘amon’@’%’ IDENTIFIED BY ‘123456’; GRANT ALL ON rman.* TO ‘rman’@’%’ IDENTIFIED BY ‘123456’; GRANT ALL ON hue.* TO ‘hue’@’%’ IDENTIFIED BY ‘123456’; GRANT ALL ON metastore.* TO ‘metastore’@’%’ IDENTIFIED BY ‘123456’; GRANT ALL ON sentry.* TO ‘sentry’@’%’ IDENTIFIED BY ‘123456’; GRANT ALL ON nav.* TO ‘nav’@’%’ IDENTIFIED BY ‘123456’; GRANT ALL ON navms.* TO ‘navms’@’%’ IDENTIFIED BY ‘123456’; GRANT ALL ON oozie.* TO ‘oozie’@’%’ IDENTIFIED BY ‘123456’;
重新整理權限:
#給MySQL授權時會出現密碼問題,可以執行如下指令
set global validate_password_policy=LOW;
set global validate_password_length=6;
除此以外,我們需要上傳與MySQL連接配接的jar包(所有節點都需要執行)
[root@test-hadoop1 ~]# mkdir -p /usr/share/java/
[root@test-hadoop1 ~]#mv mysql-connector-java-8.0.15.jar /usr/share/java/mysql-connector-java.jar
7)初始化資料庫,啟動服務
由于這裡我們用到了 cm 使用 mysql 作為源資料庫,是以我們應該對 主節點的Mysql 進行初始化
該步驟做完之後,我們就可以啟動 cm 了
主節點:
systemctl start cloudera-scm-server
systemctl start cloudera-scm-agent
從節點:
systemctl start cloudera-scm-agent
#在啟動時有可能碰到The server time zone value ‘EDT’ is unrecognized異常,這是mysql的時區和系統的時區不比對,可以參考如下網站解決
https://blog.csdn.net/u010003835/article/details/88974898
#檢視日志
cd /var/log/cloudera-scm-server/
tail -f cloudera-scm-server.log
#出現如下7180即證明啟動成功
WebServerImpl:org.mortbay.log: Started [email protected]:7180
8)
當service cloudera-scm-server start啟動成功後,即可以在浏覽器上輸入ip+7180端口(需開放防火牆)。
賬号和密碼均為admin
點選繼續
點選繼續
選擇免費,然後點繼續
點選繼續
在這裡輸入各節點的主機名稱或者ip,用逗号隔開,然後選中點繼續
注意:如果這裡受管理的主機沒有全部機器,得檢查下第5步“修改各節點的配置檔案,包括主節點”的操作有沒有做,如果沒有的話把配置檔案全部都修改好,重新開機服務,如果有的話忽略這一步
systemctl restart cloudera-scm-server
systemctl restart cloudera-scm-agent
選擇方法這裡選擇更多選項
删除多餘的庫,輸入之前搭建的http的parcel存儲庫然後儲存
資料庫主機名稱填寫主節點的hostname
資料庫類型選擇MySQL
資料庫名稱依次是metastore、oozie、hue
密碼為123456
然後點測試連接配接,無誤後選擇繼續
稽核更改這一欄配置使用預設配置,點繼續
使用預設配置,點繼續
選擇所有服務
一路繼續,完成安裝
cdh常見問題詳解:
1)、cdh環境安裝後隻有hdfs使用者是supergroup組,每次操作要從root使用者切換到hdfs使用者,并且有的代碼操作比如Bulk Load大量資料插入到hbase操作時會報錯hbase使用者權限不夠,是以要把hbase使用者也加到supergroup組内。索性把root和hbase使用者都加入supergroup組,以後再遇到哪個使用者權限不夠再加
操作步驟如下:
1、在Linux執行如下指令增加supergroup
groupadd supergroup
2、如将使用者root增加到supergroup中,再執行:
usermod -a -G supergroup root
3、同步系統的權限資訊到HDFS:
2)運作日志在哪裡 運作日志 所在目錄:/var/log
下 cloudera 開頭的都是 ,重要的是 cloudera-scm-server