簡單來說,Cloudera Manager是一個擁有集羣自動化安裝、中心化管理、集羣監控、報警功能的一個工具(軟件),使得安裝集羣從幾天的時間縮短在幾個小時內,運維人員從數十人降低到幾人以內,極大的提高集羣管理的效率。
cloudera manager有四大功能:
(1)管理:對集羣進行管理,如添加、刪除節點等操作。
(2)監控:監控集羣的健康情況,對設置的各種指標和系統運行情況進行全面監控。
(3)診斷:對集羣出現的問題進行診斷,對出現的問題給出建議解決方案。
(4)集成:對hadoop的多組件進行整合。
安裝cdh之後可以直接在瀏覽器界面上管理集羣主機,安裝hadoop,hbase等
具體還可以參看 https://www.cnblogs.com/raphael5200/p/5293960.html
安裝中注意問題:CDH-5.1.3-1.cdh5.1.3.p0.12-el6.parcel爲hadoop,hbase等軟件的打包後的壓縮包。其中CDH-5.1.3-1.cdh5.1.3.p0.12-el6.parcel CDH-5.1.3-1.cdh5.1.3.p0.12-el6.parcel.sha manifest.json,三者最好放在/opt/cloudera/parcel-repo目下,因爲瀏覽器安裝過程中parcel默認路徑爲這個路徑,否則找不到parcel還要修改路徑。
以下爲安裝教程
安裝中遇到的問題:
初始化數據庫時注意 ,會把數據庫的賬號密碼存儲到cm-5.1.3/etc/cloudera-scm-server/db.properties中
./scm_prepare_database.sh mysql cm -hlocalhost -uroot -p123456 --scm-host localhost scm scm scm
如果7180端口沒有起來,看下cm-5.1.3/etc/cloudera-scm-server/db.properties的數據庫配置
啓動server看到ok後,要等一分鐘左右才能訪問瀏覽器頁面
如果在安裝頁面只顯示一個節點,則檢查/home/hadoop/cm-5.1.3/lib/cloudera-scm-agent/uuid中的id是否是同一個id,如果是請改爲不同重啓agent
安裝後hadoop,hive等等都在/opt/cloudera/parcels/CDH-5.1.3-1.cdh5.1.3.p0.12目錄下
說明:在本地虛擬機環境中進行CDH5.7.2集羣的搭建,在搭建之前請先在虛擬機上裝好三臺CentOS7,三臺內存分別爲8g,2g,2g
準備
- 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.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.18-el7.parcel
- CDH-5.7.2-1.cdh5.7.2.p0.18-el7.parcel.sha1
- manifest.json
以上三個下載地址在http://archive.cloudera.com/cdh5/parcels/5.7.2/,注意centos要下載el7的,我就因爲一開始不清楚下的el5,結果提示parcels不知道redhat7,搞了好久才還原到初始重新來過 - 虛擬機準備:相關安裝略過,準備好三臺環境一樣的centos在本地虛擬機VMWare上,建議三臺內存分別爲8g,2g,2g,其中最大的那臺可以當作主機,如果內存不夠就設少點,三臺虛擬機情況如下:
| 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,每臺都要配上hosts
[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服務器設置(用於不同節點間實現時間同步)
NTP服務的安裝和配置
[root@hadoop1~]#yum -y install ntp
更改master的節點
[root@hadoop1~]## vi /etc/ntp.conf
註釋掉所有server *.*.*的指向,新添加一條可連接的ntp服務器(百度一下ntp服務器,我選的是上海交大的)
server ntp.sjtu.edu.cn iburst
在其他節點上把ntp指向master服務器地址即可(/etc/ntp.conf下)
server 192.168.160.130 iburst
所有節點
- 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
[email protected]'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
然後安裝釋出的全部rpm:rpm -ivh MySQL-*.rpm
修改配置文件路徑:cp /usr/share/mysql/my-default.cnf /etc/my.cnf
在配置文件中增加以下配置並保存
[root@hadoop1]#vim /etc/my.cnf
[mysqld]
default-storage-engine = innodb
innodb_file_per_table
collation-server = utf8_general_ci
init-connect = 'SET NAMES utf8'
character-set-server = utf8
以上就是安裝好了。然後就初始化mysql
然後初始化數據庫執行
[root@hadoop1]#/usr/bin/mysql_install_db
注意這個時候我遇到以下問題:
"FATAL ERROR: please install the following Perl modules before executing /usr/local/mysql/scripts/mysql_install_db:
Data::Dumper "
經過查詢需要安裝perl-Module
[root@hadoop1 ~]# yum install -y perl-Module-Install.noarch
等待安裝完了然後就可以執行上面的初始化語句了
- 啓動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
拷貝mysql-connector-java到各個節點指定目錄下(所有的節點)
[root@hadoop1]# cp mysql-connector-java-5.1.36-bin.jar /usr/share/java/mysql-connector-java.jar
創建數據庫
create database hive DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
Query OK, 1 row affected (0.00 sec)
create database amon DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
Query OK, 1 row affected (0.00 sec)
create database hue DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
Query OK, 1 row affected (0.00 sec)
create database monitor DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
Query OK, 1 row affected (0.00 sec)
create database oozie DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
Query OK, 1 row affected (0.00 sec)
grant all on *.* to root@"%" Identified by "123456";
安裝Cloudera-Manager
- 解壓cm tar包到指定目錄所有服務器都要(或者在主節點解壓好,然後通過scp到各個節點同一目錄下)
[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 --system --home=/opt/cloudera-manager/cm-5.7.2/run/cloudera-scm-server --no-create-home --shell=/bin/false --comment "Cloudera SCM User" cloudera-scm
- 在主節點創建cloudera-manager-server的本地元數據保存目錄
[root@hadoop1 ~]# mkdir /var/cloudera-scm-server
[root@hadoop1 ~]# chown cloudera-scm:cloudera-scm /var/cloudera-scm-server
[root@hadoop1 ~]# chown cloudera-scm:cloudera-scm /opt/cloudera-manager
- 配置從節點cloudera-manger-agent指向主節點服務器
vim /opt/cloudera-manager/cm-5.7.2/etc/cloudera-scm-agent/config.ini
將server_host改爲CMS所在的主機名即hadoop1
- 主節點中創建parcel-repo倉庫目錄
[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安裝的主機是在同一個主機上。
最後三個參數是:數據庫名,數據庫用戶名,數據庫密碼。
注意:如果執行的時候報一下錯誤,可能是配置host的有問題,127.0.0.1 localhost.hadoop1 這個localhost不能少
ERROR com.cloudera.enterprise.dbutil.DbProvisioner - Exception when creating/dropping database with user 'root' and jdbc url 'jdbc:mysql://localhost/?useUnicode=true&characterEncoding=UTF-8'
java.sql.SQLException: Access denied for user 'root'@'localhost' (using password: YES)
這裏我也遇到以下另一個問題
ERROR com.cloudera.enterprise.dbutil.DbProvisioner - Exception when creating/dropping database with user 'root' and jdbc url 'jdbc:mysql://localhost/?useUnicode=true&characterEncoding=UTF-8'
java.sql.SQLException: Your password has expired. To log in you must change it using a client that supports expired passwords.
這裏可以重新設置mysql的數據,然後刷新,或者直接將過期設置不檢測
mysql> update user set password_expired='N' where user='root';
Query OK, 2 rows affected (0.00 sec)
Rows matched: 5 Changed: 2 Warnings: 0
mysql> flush privileges;
- 啓動主節點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
此時service cloudera-scm-serverstart的話會報錯:“File not found: /usr/sbin/cmf-server",因爲cloudera-scm-server裏面的變量路徑配置不正確!
[root@hadoop1 ~]# vim /etc/init.d/cloudera-scm-server
CMF_DEFAULTS=${CMF_DEFAULTS:-/etc/default}改爲=/opt/cloudera-manager/cm-5.7.2/etc/default
此時service cloudera-scm-server start就不會報錯了
同時爲了保證在每次服務器重啓的時候都能啓動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
同樣此時service cloudera-scm-agent start的話會報錯:File not found: /usr/sbin/cmf-agent,因爲cloudera-scm-agent裏面的變量路徑配置不正確!參照cms的配置
同時爲了保證在每次服務器重啓的時候都能啓動cloudera-scm-agent,應該在開機啓動腳本/etc/rc.local中加入命令:service cloudera-scm-agent restart
在瀏覽器安裝CDHs
等待主節點安裝並且啓動就在瀏覽器中進行操作了
進入192168.160.130:7180 默認使用admin admin登錄
以下在瀏覽器中使用操作安裝
選擇express版本
選擇express版本
組件提示
這裏寫圖片描述
配置主機!由於我們在各個節點都安裝啓動了agent,並且在中各個節點都在配置文件中指向hadoop1是server節點,所以各個節點的agent就會給agent發消息報告,所以這裏我們可以在“當前管理的主機”中看到三個主機,全部勾選並繼續,注意如果cloudera-scm-agent沒有設爲開機啓動,如果以上有重啓這裏可能會檢測不到其他服務器。
選擇主機
選擇cdh
選擇已有的離線包
分發parcels到各個節點
等待
之間正確性的檢測
直接下一步
這裏寫圖片描述
這裏寫圖片描述
選擇要安裝的服務,這裏選擇所有服務
這裏寫圖片描述
角色分配
這裏寫圖片描述
數據庫設置選擇
這裏寫圖片描述
集羣審覈,這裏都默認的
這裏寫圖片描述
開始安裝
這裏寫圖片描述
安裝完成
這裏寫圖片描述
完成安裝
這個時候安裝完成了,可以在瀏覽器中進入192.168.160.130:7180地址,查看集羣情況,我這裏有挺多報警,大概查看下基本都是內存或者存儲空間使用閾值的報警,由於我們是本地虛擬機的,所以這些條件都有限,這裏暫時不care這些報警了
進入主頁面查看,默認用戶名爲admin/admin
安裝完成!!!
小禮物走一走,來簡書關注我
作者:ShawnHoo
鏈接:https://www.jianshu.com/p/5d6c87413bc0
來源:簡書
簡書著作權歸作者所有,任何形式的轉載都請聯繫作者獲得授權並註明出處。