前期准備:
- JDK環境
版本:jdk-8u101-linux-x64.rpm
下載地址:oracle官網 - mysql
rpm包:http://dev.mysql.com/get/Downloads/MySQL-5.6/MySQL-5.6.26-1.linux_glibc2.5.x86_64.rpm-bundle.tar
jdbc連接包mysql-connector-java-5.1.39-bin.jar:
http://dev.mysql.com/downloads/connector/j/ - CDH安裝相關的包
- cloudera manager包 :5.7.2 cloudera-manager-centos7-cm5.7.2_x86_64.tar.gz
下載地址:http://archive.cloudera.com/cm5/cm/5/cloudera-manager-centos7-cm5.7.2_x86_64.tar.gz - CDH-5.7.2-1.cdh5.7.2.p0.11-el7.parcel
- CDH-5.7.2-1.cdh5.7.2.p0.11-el7.parcel.sha1
- manifest.json
以上三個下載地址在http://archive.cloudera.com/cdh5/parcels/5.7.2/,注意centos要下載el7的,我就因為一開始不清楚下的el6,結果提示parcels不知道redhat7,搞了好久才還原到初始重新來過
- cloudera manager包 :5.7.2 cloudera-manager-centos7-cm5.7.2_x86_64.tar.gz

以上截圖是我在此處安裝過程中所用到的安裝包
集群的規划
| IP地址 | 主機名 | 說明 |
|---|---|---|
| 192.168.160.130 | hadoop1 | 主節點master,datanode |
| 192.168.160.131 | hadoop2 | datanode |
| 192.168.160.132 | hadoop3
|
datanode |
開始安裝前配置和預裝軟件
- 安裝jdk(每台機器都要)
首先卸載原有的openJDK
[root@hadoop1~]$ java -version java version "1.7.0_75" OpenJDK Runtime Environment (rhel-2.5.4.2.el7_0-x86_64 u75-b13) OpenJDK 64-Bit Server VM (build 24.75-b04, mixed mode) [root@hadoop1~]$ rpm -qa | grep jdk java-1.7.0-openjdk-1.7.0.75-2.5.4.2.el7_0.x86_64 java-1.7.0-openjdk-headless-1.7.0.75-2.5.4.2.el7_0.x86_64 [root@hadoop1~]# yum -y remove java-1.7.0-openjdk-1.7.0.75-2.5.4.2.el7_0.x86_64 [root@hadoop1~]# yum -y remove java-1.7.0-openjdk-headless-1.7.0.75-2.5.4.2.el7_0.x86_64 [root@hadoop1~]# java -version bash: /usr/bin/java: No such file or directory [root@hadoop1~]# rpm -ivh jdk-8u101-linux-x64.rpm [root@hadoop1~]# java -version java version "1.8.0_101" Java(TM) SE Runtime Environment (build 1.8.0_101-b13) Java HotSpot(TM) 64-Bit Server VM (build 25.101-b13, mixed mode)
- 修改每台節點服務器的有關配置hostname、selinux關閉,防火牆關閉
hostname修改:分別對三台都進行更改,並且注意每台名稱和ip,每台都要配上
[root@hadoop1~]# vi /etc/sysconfig/network NETWORKING=yes HOSTNAME=hadoop1
[root@hadoop1~]# vi /etc/hosts 127.0.0.1 localhost.hadoop1 192.168.160.132 hadoop3 192.168.160.130 hadoop1 192.168.160.131 hadoop2
selinux關閉(所有節點官方文檔要求)
[root@hadoop1~]# vim /etc/sysconfig/selinux SELINUX=disabled 重啟才能生效 重啟后檢查 [root@hadoop1~]#sestatus -v SELinux status: disabled 表示已經關閉了
關閉防火牆(注意centos 6 是iptables)
[root@hadoop1~]# systemctl stop firewalld [root@hadoop1~]# systemctl disable firewalld rm '/etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service' rm '/etc/systemd/system/basic.target.wants/firewalld.service' [root@hadoop1~]# systemctl status firewalld firewalld.service - firewalld - dynamic firewall daemon Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled) Active: inactive (dead)
NTP服務器設置(用於不同節點間實現時間同步,詳細的配置教程在我的另一邊博客里面有寫)
[root@hadoop1~]# systemctl stop firewalld [root@hadoop1~]# systemctl disable firewalld rm '/etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service' rm '/etc/systemd/system/basic.target.wants/firewalld.service' [root@hadoop1~]# systemctl status firewalld firewalld.service - firewalld - dynamic firewall daemon Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled) Active: inactive (dead)
- SSH無密碼登錄配置
安裝過程中master需要各個節點的root免登錄密碼
先在master上生成公鑰
[root@hadoop1]# ssh-keygen -t rsa Generating public/private rsa key pair. Enter file in which to save the key (/root/.ssh/id_rsa): [enter] Created directory '/root/.ssh'. Enter passphrase (empty for no passphrase): [enter] Enter same passphrase again: [enter] Your identification has been saved in /root/.ssh/id_rsa. Your public key has been saved in /root/.ssh/id_rsa.pub. The key fingerprint is: 1d:b1:99:51:31:d8:f6:6c:b1:84:f9:af:7b:2c:72:dd root@hadoop1 The key's randomart image is: +--[ RSA 2048]----+ | o+++ | | .*=.o | | =. = o | | . . * | | S . . . | | .| | +.| | . + E| | o.+ | +-----------------+ [root@hadoop1]# ssh-copy-id 192.168.160.131 The authenticity of host '192.168.160.131 (192.168.160.131)' can't be established. ECDSA key fingerprint is e6:81:3f:9e:e6:bb:43:36:c7:4e:0f:6f:63:b2:12:a0. Are you sure you want to continue connecting (yes/no)? yes /usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed /usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys root@192.168.160.131's password: Number of key(s) added: 1 Now try logging into the machine, with: "ssh '192.168.160.131'" and check to make sure that only the key(s) you wanted were added.
分別對兩台節點進行以上操作,操作完了可以通過ssh ip進行驗證是否可以無需輸入密碼就能直接登錄到節點服務器上去
- 安裝mysql
centos7自帶的是mariadb,需要先卸載掉
[root@hadoop1]# rpm -qa | grep mariadb mariadb-libs-5.5.41-2.el7_0.x86_64 [root@hadoop1 huxin]# rpm -e --nodeps mariadb-libs-5.5.41-2.el7_0.x86_64
將下載好的MySQL rpm包拷貝到服務器上然后解壓,安裝
[root@hadoop1]# tar -xvf MySQL-5.6.24-1.linux_glibc2.5.x86_64.rpm-bundle.tar [root@hadoop1]#rpm -ivh MySQL-*.rpm
以上就是安裝好了。然后就初始化mysql
然后初始化數據庫執行
[root@hadoop1]#/usr/bin/mysql_install_db
然后就可以執行上面的初始化語句了
- 啟動mysql [root@hadoop1]# service mysql restart ERROR! MySQL server PID file could not be found! Starting MySQL... SUCCESS! - 查看mysql root初始化密碼 [root@hadoop1]# cat /root/.mysql_secret # The random password set for the root user at Fri Sep 16 11:13:25 2016 (local time): 9mp7uYFmgt6drdq3 - 登錄進行去更改密碼 [root@hadoop1]# mysql -u root -p mysql> SET PASSWORD=PASSWORD('123456'); - 允許mysql遠程訪問 mysql> update user set host='%' where user='root' and host='localhost'; Query OK, 1 row affected (0.05 sec) Rows matched: 1 Changed: 1 Warnings: 0 mysql> flush privileges; Query OK, 0 rows affected (0.00 sec) - 配置開機啟動 [root@hadoop1]# chkconfig mysql on
第三方依賴包
所有節點都安裝
yum install chkconfig python bind-utils psmisc libxslt zlib sqlite fuse fuse-libs redhat-lsb cyrus-sasl-plain cyrus-sasl-gssapi
注意這個地方依賴包不安裝完下面啟動集群的時候會死活啟動不了的,這是血的教訓啊!
在hadoop1上准備mysql的jar包
[root@hadoop1]# mkdir -p /usr/share/java
修改jar包的名字,並拷貝到/usr/share/java/目錄(下面會有截圖說明為什么修改)
[root@hadoop1]# cp mysql-connector-java-5.1.36-bin.jar /usr/share/java/mysql-connector-java.jar
安裝Cloudera-Manager
- 解壓cm tar包到指定目錄,所有服務器都要
[root@hadoop1 ~]#mkdir /opt/cloudera-manager [root@hadoop1 ~]# tar -axvf cloudera-manager-centos7-cm5.7.2_x86_64.tar.gz -C /opt/cloudera-manager
- 創建cloudera-scm用戶(所有節點)
[root@hadoop1 ~]# useradd -r -d /opt/cloudera-manager/cm-5.7.2/run/cloudera-scm-server -M -c "Cloudera SCM User" cloudera-scm [root@hadoop1 ~]# id cloudera-scm
- 配置從節點cloudera-manger-agent指向主節點服務器(根據集群的分配這里面應當全部節點都需要)
vim /opt/cloudera-manager/cm-5.7.2/etc/cloudera-scm-agent/config.ini 將server_host改為CMS所在的主機名即hadoop1
- 主節點中創建parcel-repo倉庫目錄(這個只在主節點hadoop1上需要)
[root@hadoop1 ~]# mkdir -p /opt/cloudera/parcel-repo [root@hadoop1 ~]# chown cloudera-scm:cloudera-scm /opt/cloudera/parcel-repo [root@hadoop1 ~]# cp CDH-5.7.2-1.cdh5.7.2.p0.18-el7.parcel CDH-5.7.2-1.cdh5.7.2.p0.18-el7.parcel.sha manifest.json /opt/cloudera/parcel-repo 注意:其中CDH-5.7.2-1.cdh5.7.2.p0.18-el5.parcel.sha1 后綴要把1去掉
- 所有節點創建parcels目錄(所有節點)
[root@hadoop1 ~]# mkdir -p /opt/cloudera/parcels [root@hadoop1 ~]# chown cloudera-scm:cloudera-scm /opt/cloudera/parcels 解釋:Clouder-Manager將CDHs從主節點的/opt/cloudera/parcel-repo目錄中抽取出來,分發解壓激活到各個節點的/opt/cloudera/parcels目錄中
- 初始腳本配置數據庫scm_prepare_database.sh(在主節點上)
[root@hadoop1 ~]# /opt/cloudera-manager/cm-5.7.2/share/cmf/schema/scm_prepare_database.sh mysql -hhadoop1 -uroot -p123456 --scm-host hadoop1 scmdbn scmdbu scmdbp
說明:這個腳本就是用來創建和配置CMS需要的數據庫的腳本。各參數是指:
mysql:數據庫用的是mysql,如果安裝過程中用的oracle,那么該參數就應該改為oracle。
-hhadoop1:數據庫建立在hadoop1主機上面。也就是主節點上面。 -uroot:root身份運行mysql。-123456:mysql的root密碼是***。 --scm-host hadoop1:CMS的主機,一般是和mysql安裝的主機是在同一個主機上。 最后三個參數是:數據庫名,數據庫用戶名,數據庫密碼。

在這個地方就可以解釋上面為什么要改jar名了
- 啟動主節點cloudera-scm-server
[root@hadoop1 ~]# cp /opt/cloudera-manager/cm-5.7.2/etc/init.d/cloudera-scm-server /etc/init.d/cloudera-scm-server
[root@hadoop1 ~]#chkconfig cloudera-scm-server on 同時為了保證在每次服務器重啟的時候都能啟動cloudera-scm-server,應該在開機啟動腳本/etc/rc.local中加入命令:service cloudera-scm-server restart
- 啟動cloudera-scm-agent所有節點
[root@hadoopX ~]# mkdir /opt/cloudera-manager/cm-5.7.2/run/cloudera-scm-agent
[root@hadoopX ~]# cp /opt/cloudera-manager/cm-5.7.2/etc/init.d/cloudera-scm-agent /etc/init.d/cloudera-scm-agent
[root@hadoopX ~]# chkconfig cloudera-scm-agent on
同時為了保證在每次服務器重啟的時候都能啟動cloudera-scm-agent,應該在開機啟動腳本/etc/rc.local中加入命令:service cloudera-scm-agent restart
等待主節點安裝並且啟動就在瀏覽器中進行操作了
進入192168.160.130:7180 默認使用admin admin登錄
此時已經完成一半的工作量了,出現這個界面說明CM已經安裝成功了,下面就在這個web界面中部署CDH吧!
選擇express版本

組件提示
配置主機!由於我們在各個節點都安裝啟動了agent,並且在中各個節點都在配置文件中指向hadoop1是server節點,所以各個節點的agent就會給agent發消息報告,所以這里我們可以在“當前管理的主機”中看到三個主機,全部勾選並繼續,注意如果cloudera-scm-agent沒有設為開機啟動,如果以上有重啟這里可能會檢測不到其他服務器。

選擇cdh

分發parcels到各個節點

主機配置正確性的檢測

這個地方要注意這個地方有兩項沒有檢查通過,可以在集群中使用以下命令
echo 0 > /proc/sys/vm/swappiness echo never > /sys/kernel/mm/transparent_hugepage/defrag
然后再點擊上面的重新運行會發現這次全部檢查通過了
選擇要安裝的服務,這里選擇所有服務

角色分配

數據庫設置選擇

集群審核,這里都默認的

開始安裝
安裝完成

這個時候安裝完成了,可以在瀏覽器中進入192.168.160.130:7180地址,查看集群情況,我這里有挺多報警,大概查看下基本都是內存或者存儲空間使用閾值的報警,由於我們是本地虛擬機的,所以這些條件都有限,這里暫時不care這些報警了
安裝完成!!!
