序言
本文集群搭建為三台機器,cdh版本為5.13.0,以下是安裝過程中所用到的軟件包等,可以自行下載。
一、前期准備
1.安裝環境
- 系統:centos7.5/最小安裝版本/64位
- 內存:主節點 --> 32G/從節點 --> 16G
- 三台機器組成小集群(物理機)
- cdh01
- cdh02
- cdh03
- 需要下載的安裝包
- cloudera-manager-centos7-cm5.13.0_x86_64.tar.gz
- CDH相關(注意下載相應系統的安裝包)
- CDH-5.13.0-1.cdh5.13.0.p0.29-el7.parcel
- CDH-5.13.0-1.cdh5.13.0.p0.29-el7.parcel.sha1
- manifest.json(manifest.json需要網頁上打開后復制全部內容,在桌面新建txt文件,粘貼復制的內容后修改后綴名為.json)
-
- jdk-8u144-linux-x64.tar.gz
- mysql-5.7.21-1.el7.x86_64.rpm-bundle.tar
- mysql-connector-java-5.1.47.tar
二、環境配置
注意:所有操作都需要使用root權限操作
- 修改hosts(三台)
- vi /etc/hosts
-
10.81.22.184 cdh01 10.81.22.188 cdh02 10.81.22.189 cdh03
- 注:修改 /etc/hosts,此處一定要注意,不要按照網上有的說明,將127.0.0.1那一行里的localhost.localdomain改成主機名稱,在安裝Cloudera Agent的時候會識別不出名稱和IP
- 修改主機名
- vim /etc/sysconfig/network
-
NETWORKING=yes HOSTNAME=cdh01
- 修改selinux
- vi /etc/selinux/config
-
將selinux的值修改成disabled SELINUX=disabled
- 關閉防火牆
- systemctl stop firewalld
- systemctl disable firewalld
- systemctl status firewalld
- 三台機器設置免密登陸,打通ssh
- 思路:第一台機器配置authorized_keys,scp到第二台機器,將第二台機器的公鑰添加到authorized_keys,然后將其scp到第三台,以此類推,直到配置到最后一台機器,將最后一台機器的authorized_keys scp到所有節點,如下(見1)
- 安裝ntp時間同步
- 集群中所有主機必須保持時間同步,如果時間相差較大會引起各種問題。具體思路如下:
主節點作為NTP服務器與外界對時中心同步時間,隨后對所有數據節點節點提供時間同步服務。
所有數據節點節點以主節點為基礎同步時間所有節點安裝相關組件執行以下命令: - yum install -y ntp #安裝ntp服務(所有節點)
- vim /etc/ntp.conf
- 主節點
-
driftfile /var/lib/ntp/drift restrict 127.0.0.1 restrict -6 ::1 # 允許內網其他機器同步時間 restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap # 中國這邊最活躍的時間服務器 : http://www.pool.ntp.org/zone/cn server 210.72.145.44 perfer # 中國國家受時中心 server 202.112.10.36 # 1.cn.pool.ntp.org server 59.124.196.83 # 0.asia.pool.ntp.org # 允許上層時間服務器主動修改本機時間 restrict 210.72.145.44 nomodify notrap noquery restrict 202.112.10.36 nomodify notrap noquery restrict 59.124.196.83 nomodify notrap noquery # 外部時間服務器不可用時,以本地時間作為時間服務 server 127.127.1.0 # local clock fudge 127.127.1.0 stratum 10 includefile /etc/ntp/crypto/pw keys /etc/ntp/keys #只保留以上內容其他全部注釋掉
- 從節點
-
driftfile /var/lib/ntp/drift restrict default kod nomodify notrap nopeer noquery restrict -6 default kod nomodify notrap nopeer noquery restrict 127.0.0.1 restrict -6 ::1 server cdh01 #改成自己的主節點名稱 restrict 192.168.1.135 nomodify notrap noquery server 127.127.1.0 # local clock fudge 127.127.1.0 stratum 10 includefile /etc/ntp/crypto/pw keys /etc/ntp/keys #只保留以上內容其他全部注釋掉
- 集群中所有主機必須保持時間同步,如果時間相差較大會引起各種問題。具體思路如下:
- 設置開機啟動ntp服務
- 關閉chronyd服務
- systemctl disable chronyd.service
- 開機自啟動
- systemctl enable ntpd.service
- 關閉chronyd服務
- 開啟ntp服務
- systemctl start ntpd
- 查看ntp運行狀態
- ntpstat
- 出現
即為同步成功
- 安裝jdk(所有節點)
- 卸載Centos 系統自帶的JDK並重新安裝oracle的JDK(所有節點)
- CentOS,自帶OpenJdk,不過運行CDH5需要使用Oracle的Jdk,需要Java 7的支持。
- 卸載自帶的OpenJDK的使用以下代碼查詢的Java相關的包 - rpm -qa | grep java
- rpm -qa | grep jdk - yum -y remove xxjdk #刪除所有的jdk
- yum remove -y *jdk*
- yum remove -y *java*
-
- JDK 可以去官網下載 下載地址:
http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
(本次使用的是jdk-8u191-linux-x64.rpm) - rpm -ivh jdk-8u202-linux-x64.rpm
- 由於是RPM包並不需要我們來配置環境變量,我們只需要配置一個全局的JAVA_HOME變量即可,執行命令:
- echo "JAVA_HOME=/usr/java/latest/" >> /etc/environment
- JDK 可以去官網下載 下載地址:
- 主節點安裝mysql
- 卸載mariadb
- 此處需要注意的是centos 7 默認安裝的是mariadb,如果不卸載直接安裝的話會報錯,報錯信息mariadb-libs is obsoleted by mysql-community-libs-5.7.21-1.el7.x86_64
- 注意:必須先做一下步驟,要先刪除mariadb
- 此處需要注意的是centos 7 默認安裝的是mariadb,如果不卸載直接安裝的話會報錯,報錯信息mariadb-libs is obsoleted by mysql-community-libs-5.7.21-1.el7.x86_64
- rpm -qa | grep mariadb #查看安裝信息
- rpm --nodeps -e 安裝信息(mariadb-libs-5.5.56-2.el7.x86_64) #根據查找到的軟件包信息卸載
- rpm --nodeps -e mariadb-libs-5.5.56-2.el7.x86_64
- rpm --nodeps -e mariadb-libs-5.5.56-2.el7.x86_64
- yum -y remove + 包名
- yum -y remove mariadb-libs-5.5.56-2.el7.x86_64
- 卸載mariadb
- 安裝mysql
- mysql安裝包下載
https://dev.mysql.com/downloads/file/?id=474679
- 下載的安裝包為:mysql-5.7.21-1.el7.x86_64.rpm-bundle.tar
- 安順序執行
- tar -xf mysql-5.7.21-1.el7.x86_64.rpm-bundle.tar
- 安裝rpm -ivh mysql-community-server-5.7.21-1.el7.x86_64.rpm的時候報錯如下:
- 這個報錯的意思是需要安裝net-tools包和perl包:可以先yum安裝一下。
- yum install net-tools #安裝net-tools包
- yum install perl #安裝perl包
- 這個報錯的意思是需要安裝net-tools包和perl包:可以先yum安裝一下。
- 注:必須按以下順序安裝以下rpm包 - rpm -ivh mysql-community-common-5.7.21-1.el7.x86_64.rpm
- rpm -ivh mysql-community-libs-5.7.21-1.el7.x86_64.rpm
- rpm -ivh mysql-community-client-5.7.21-1.el7.x86_64.rpm
- rpm -ivh mysql-community-server-5.7.21-1.el7.x86_64.rpm
- rpm -ivh mysql-community-libs-compat-5.7.21-1.el7.x86_64.rpm(compat解決hue數據庫連接不上)
- rpm -ivh mysql-community-devel-5.7.21-1.el7.x86_64.rpm #安裝mysqlclient需要用到
- 安裝rpm -ivh mysql-community-server-5.7.21-1.el7.x86_64.rpm的時候報錯如下:
- 啟動mysql
- systemctl start mysqld
- systemctl enable mysqld
- systemctl daemon-reload
- systemctl start mysqld
- 查看root初始密碼
- cat /var/log/mysqld.log |grep password
- tar -xf mysql-5.7.21-1.el7.x86_64.rpm-bundle.tar
- mysql安裝包下載
-
-
- 登錄mysql數據庫
- mysql -uroot –p密碼 # 密碼為上一步看到的
- 首先,修改validate_password_policy參數的值
- set global validate_password_policy=0;
- set global validate_password_policy=0;
- 這樣,判斷密碼的標准就基於密碼的長度了。這個由validate_password_length參數來決定。validate_password_length參數默認為8,可以設置為其它值,最小4位
- set global validate_password_length=3;
- set global validate_password_special_char_count=0;
- set global validate_password_mixed_case_count=0;
- set global validate_password_number_count=0;
- set password = password('123');
- Query OK, 0 rows affected,1 warning (0.00 sec) --> 修改成功
- Query OK, 0 rows affected,1 warning (0.00 sec) --> 修改成功
- 注:如果直接修改密碼會報錯
- set global validate_password_length=3;
- mysql -uroot –p密碼 # 密碼為上一步看到的
- 登錄mysql數據庫
-
-
-
-
- 授權用戶root使用密碼passwd從任意主機連接到mysql服務器
- GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123' WITH GRANT OPTION;
- flush privileges;
- 創建所需要的數據庫及用戶
-
在mysql連接工具下執行(否則可能會報錯) create database metastore default character set utf8; CREATE USER 'hive'@'%' IDENTIFIED BY 'hive'; GRANT ALL PRIVILEGES ON metastore. * TO 'hive'@'%'; create database hive default character set utf8; GRANT ALL PRIVILEGES ON hive. * TO 'hive'@'%'; create database cm default character set utf8; CREATE USER 'cm'@'%' IDENTIFIED BY 'cm'; GRANT ALL PRIVILEGES ON cm.* TO 'cm'@'%'; create database am default character set utf8; CREATE USER 'am'@'%' IDENTIFIED BY 'am'; GRANT ALL PRIVILEGES ON am. * TO 'am'@'%'; create database rm default character set utf8; CREATE USER 'rm'@'%' IDENTIFIED BY 'rm'; GRANT ALL PRIVILEGES ON rm. * TO 'rm'@'%'; create database hue default character set utf8; CREATE USER 'hue'@'%' IDENTIFIED BY 'hue'; GRANT ALL PRIVILEGES ON hue. * TO 'hue'@'%'; create database oozie default character set utf8; CREATE USER 'oozie'@'%' IDENTIFIED BY 'oozie'; GRANT ALL PRIVILEGES ON oozie. * TO 'oozie'@'%'; flush privileges;
-
- GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123' WITH GRANT OPTION;
- 授權root用戶在主節點擁有所有數據庫的訪問權限
- grant all privileges on *.* to 'root'@'cdh01' identified by '123' with grant option;
- 授權用戶root使用密碼passwd從任意主機連接到mysql服務器
-
-
- 安裝cm
- 下載cm5.13.0包
- http://archive.cloudera.com/cm5/cm/5/
- 將下載好的cloudera-manager-centos7-cm5.13.0_x86_64.tar.gz解壓到主節點的/opt/,解壓出來的文件夾為cloudera與cm-5.13.0
- 為Cloudera Manager建立數據庫,此處需要前邊下載好的mysql-connector-java-5.1.47-bin.jar
- cp /root/software/mysql-connector-java-5.1.47/mysql-connector-java-5.1.47-bin.jar /usr/java/
- cp /root/software/mysql-connector-java-5.1.47/mysql-connector-java-5.1.47-bin.jar /opt/cm-5.13.0/share/cmf/lib/
- cp /root/software/mysql-connector-java-5.1.47/mysql-connector-java-5.1.47-bin.jar /usr/java/
- 主節點執行
-
/opt/cm-5.13.0/share/cmf/schema/scm_prepare_database.sh mysql -uroot -p123 scm scm scm
-
- 配置Agent
- vim /opt/cm-5.13.0/etc/cloudera-scm-agent/config.ini
-
server_host=cdh01
-
- vim /opt/cm-5.13.0/etc/cloudera-scm-agent/config.ini
- 拷貝文件到其他子節點
- scp -r /opt/cm-5.13.0/ root@hywx189:/opt/
- scp -r /opt/cm-5.13.0/ root@hywx189:/opt/
- scp -r /opt/cm-5.13.0/ root@hywx189:/opt/
- 所有節點上創建用戶
-
useradd --system --home=/opt/cm-5.13.0/run/cloudera-scm-server/ --no-create-home --shell=/bin/false --comment "Cloudera SCM User" cloudera-scm
-
- 准備parcels,將CDH相關文件拷貝到主節點/opt/cloudera/parcel-repo/
- 相關文件
- 注:需要將CDH-5.13.0-1.cdh5.13.0.p0.29-el7.parcel.sha1改成CDH-5.13.0-1.cdh5.13.0.p0.29-el7.parcel.sha,否則安裝時會重新下載,很重要!!
-
mv CDH-5.13.0-1.cdh5.13.0.p0.29-el7.parcel.sha1 CDH-5.13.0-1.cdh5.13.0.p0.29-el7.parcel.sha
- 注:需要將CDH-5.13.0-1.cdh5.13.0.p0.29-el7.parcel.sha1改成CDH-5.13.0-1.cdh5.13.0.p0.29-el7.parcel.sha,否則安裝時會重新下載,很重要!!
- 相關文件
- 下載cm5.13.0包
- 啟動
-
#主節點 /opt/cm-5.13.0/etc/init.d/cloudera-scm-server start #主節點及其他節點 /opt/cm-5.13.0/etc/init.d/cloudera-scm-agent start
- 啟動需要點時間,可以查看數據庫scm中的hosts表,如果里面出現節點信息表示server啟動完成
-
- 開始安裝Hadoop集群
- 啟動成功后 瀏覽器訪問:
- http://主節點ip:7180 (用戶名、密碼:admin)
- CM Manager && Agent 成功啟動后,登錄前端頁面進行 CDH 安裝配置。步驟如下:
- 注意:此處需要勾選所有機器
- 注:此處按照自己下載的版本進行安裝即可
-
第一個警告直接在所有節點上執行
-
echo 10 > /proc/sys/vm/swappiness
-
-
第二個警告按照上面的說明,在所有節點上執行這兩條命令
-
echo never >/sys/kernel/mm/transparent_hugepage/defrag >> /etc/rc.local
-
echo never > /sys/kernel/mm/transparent_hugepage/enabled>> /etc/rc.local
-
同時同一命令添加到 /etc/rc.local 等初始化腳本中,以便在系統重啟時予以設置。
-
- 注:或可選擇所有服務
- 此處hive ,oozie會安裝失敗,失敗信息如下。因為我們使用了MySQL作為hive元數據存儲,需要將mysql驅動拷貝到hive和oozie目錄下
-
解決方法(需要在所有節點上執行)
-
cp /opt/cm-5.13.0/share/cmf/lib/mysql-connector-java-5.1.47-bin.jar /opt/cloudera/parcels/CDH-5.13.0-1.cdh5.13.0.p0.29/lib/hive/lib/
-
cp /opt/cm-5.13.0/share/cmf/lib/mysql-connector-java-5.1.47-bin.jar /var/lib/oozie/
-
- 啟動成功后 瀏覽器訪問:
- 到此安裝完成!