離線部署 CDH 5.12.1 及使用 CDH 部署 Hadoop 大資料平臺叢集服務

搜雲庫技術團隊發表於2018-01-10

Cloudera Manager

Cloudera Manager 分為兩個部分:CDH和CM。

CDH是Cloudera Distribution Hadoop的簡稱,顧名思義,就是cloudera公司釋出的Hadoop版本,封裝了Apache Hadoop,提供Hadoop所有的服務,包括HDFS,YARN,MapReduce以及各種相關的components:HBase, Hive, ZooKeeper,Kafka等。

CM是cloudera manager的簡稱,是CDH的管理平臺,主要包括CM server, CM agent。通過CM可以對CDH進行配置,監測,報警,log檢視,動態新增刪除各種服務等。

一、準備工作

環境

JDK:1.8  
centos:7.3

作業系統:CentOS 6
JDK 版本:1.7.0_80

所需安裝包及版本說明:由於我們的作業系統為CentOS7,需要下載以下檔案:

cloudera-manager-centos7-cm5.12.1_x86_64.tar.gz

CDH-5.12.1-1.cdh5.12.1.p0.3-el7.parcel

CDH-5.12.1-1.cdh5.12.1.p0.3-el7.parcel.sha1

manifest.json
複製程式碼

Cloudera Manager 下載目錄
archive.cloudera.com/cm5/cm/5/

CDH 下載目錄
archive.cloudera.com/cdh5/parcel…

manifest.json 下載
archive.cloudera.com/cdh5/parcel…

CHD5 相關的 Parcel 包放到主節點的/opt/cloudera/parcel-repo/目錄中

CDH-5.12.1-1.cdh5.12.1.p0.3-el7.parcel.sha1 重新命名為 CDH-5.12.1-1.cdh5.12.1.p0.3-el7.parcel.sha

這點必須注意,否則,系統會重新下載 CDH-5.12.1-1.cdh5.12.1.p0.3-el6.parcel 檔案

本文采用離線安裝方式,線上安裝方式請參照官方文

主機名 ip地址 安裝服務
node1 (Master) 192.168.252.121 jdk、cloudera-manager、MySql
node2 (Agents) 192.168.252.122 jdk、cloudera-manager
node3 (Agents) 192.168.252.123 jdk、cloudera-manager
node4 (Agents) 192.168.252.124 jdk、cloudera-manager
node5 (Agents) 192.168.252.125 jdk、cloudera-manager
node6 (Agents) 192.168.252.126 jdk、cloudera-manager
node7 (Agents) 192.168.252.127 jdk、cloudera-manager

二、系統環境搭建

1、網路配置(所有節點)

修改 hostname

命令格式

hostnamectl set-hostname <hostname>
複製程式碼

依次修改所有節點 node[1-7]

hostnamectl set-hostname node1
複製程式碼

重啟伺服器

reboot
複製程式碼

修改對映關係

1.在 node1 的 /etc/hosts 檔案下新增如下內容

$ vi /etc/hosts
複製程式碼

2.檢視修改後的/etc/hosts 檔案內容

[root@node7 ~]# cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6

192.168.252.121 node1
192.168.252.122 node2
192.168.252.123 node3
192.168.252.124 node4
192.168.252.125 node5
192.168.252.126 node6
192.168.252.127 node7
複製程式碼

2、SSH 免密碼登入

1.在叢集node1的 /etc/ssh/sshd_config 檔案去掉以下選項的註釋

vi /etc/ssh/sshd_config 
複製程式碼
RSAAuthentication yes      #開啟私鑰驗證
PubkeyAuthentication yes   #開啟公鑰驗證
複製程式碼

2.將叢集node1 修改後的 /etc/ssh/sshd_config 通過 scp 命令複製傳送到叢集的每一個節點

for a in {2..7} ; do scp /etc/ssh/sshd_config node$a:/etc/ssh/sshd_config ; done
複製程式碼

3.生成公鑰、私鑰

1.在叢集的每一個節點節點輸入命令 ssh-keygen -t rsa -P '',生成 key,一律回車

ssh-keygen -t rsa -P ''
複製程式碼

4.在叢集的node1 節點輸入命令

將叢集每一個節點的公鑰id_rsa.pub放入到自己的認證檔案中authorized_keys;

for a in {1..7}; do ssh root@node$a cat /root/.ssh/id_rsa.pub >> /root/.ssh/authorized_keys; done
複製程式碼

5.在叢集的node1 節點輸入命令

將自己的認證檔案 authorized_keys 通過scp命令複製傳送到每一個節點上去:/root/.ssh/authorized_keys`

for a in {1..7}; do scp /root/.ssh/authorized_keys root@node$a:/root/.ssh/authorized_keys ; done
複製程式碼

6.在叢集的每一個節點節點輸入命令

接重啟ssh服務

sudo systemctl restart sshd.service
複製程式碼

7.驗證 ssh 無密登入

開一個其他視窗測試下能否免密登陸

例如:在node3

ssh root@node2
複製程式碼

exit 退出

3、關閉防火牆

systemctl stop firewalld.service
複製程式碼

4、關閉 SELINUX

檢視

[root@node1 ~]# getenforce
Enforcing
[root@node1 ~]# /usr/sbin/sestatus -v
SELinux status:  
複製程式碼

臨時關閉

## 設定SELinux 成為permissive模式
## setenforce 1 設定SELinux 成為enforcing模式
setenforce 0
複製程式碼

永久關閉

vi /etc/selinux/config
複製程式碼

SELINUX=enforcing 改為 SELINUX=disabled

設定後需要重啟才能生效

PS 我是修改node1/etc/selinux/config 後,把配置檔案複製到其他節點

for a in {2..7}; do scp /etc/selinux/config root@node$a:/etc/selinux/config ; done
複製程式碼

重啟所有節點

reboot
複製程式碼

5、安裝 JDK

下載Linux環境下的jdk1.8,請去(官網)中下載jdk的安裝檔案

我在百度雲盤分下的連結:pan.baidu.com/s/1jIFZF9s 密碼:u4n4

上傳在 /opt 目錄

解壓

cd /opt
tar zxvf jdk-8u144-linux-x64.tar.gz
mv jdk1.8.0_144/ /lib/jvm
複製程式碼

配置環境變數

vi /etc/profile
複製程式碼
#jdk
export JAVA_HOME=/lib/jvm
export JRE_HOME=${JAVA_HOME}/jre   
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib   
export PATH=${JAVA_HOME}/bin:$PATH 
複製程式碼

使環境變數生效

source /etc/profile
複製程式碼

驗證

[root@localhost ~]# java -version
java version "1.8.0_144"
Java(TM) SE Runtime Environment (build 1.8.0_144-b01)
Java HotSpot(TM) 64-Bit Server VM (build 25.144-b01, mixed mode)
複製程式碼

6、設定 NTP

所有節點安裝 NTP

yum install ntp
複製程式碼

設定同步

ntpdate -d 182.92.12.11
複製程式碼

7、安裝配置 MySql

主節點 安裝 MySql

MySQL依賴於libaio 庫

yum search libaio
yum install libaio
複製程式碼

下載,解壓,重新命名

通常解壓在 /usr/local/mysql

mysql-5.7.19-linux-glibc2.12-x86_64 資料夾,重新命名成mysql,這樣就湊成/usr/local/mysql目錄了

cd /opt/
wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.19-linux-glibc2.12-x86_64.tar.gz
tar -zxvf /opt/mysql-5.7.19-linux-glibc2.12-x86_64.tar.gz -C /usr/local/
mv /usr/local/mysql-5.7.19-linux-glibc2.12-x86_64/ /usr/local/mysql
複製程式碼

1. 新建使用者組和使用者

groupadd mysql
useradd mysql -g mysql
複製程式碼

2. 建立目錄並授權

cd /usr/local/mysql/ 
mkdir data mysql-files
chmod 750 mysql-files
chown -R mysql .
chgrp -R mysql .
複製程式碼

3. 初始化MySQL

bin/mysqld --initialize --user=mysql # MySQL 5.7.6 and up
複製程式碼

4. 注意密碼 mysql 臨時密碼

[注意]root@localhost生成臨時密碼:;b;s;)/rn6A3,也就是root@localhost:後的字串

2017-09-24T08:34:08.643206Z 1 [Note] A temporary password is generated for root@localhost: D<qha)5gtr<!
複製程式碼

5. 授予讀寫許可權

chown -R root .
chown -R mysql data mysql-files
複製程式碼

6. 新增到MySQL 啟動指令碼到系統服務

cp support-files/mysql.server /etc/init.d/mysql.server
複製程式碼

7. 給日誌目錄授予讀寫許可權

mkdir /var/log/mariadb
touch /var/log/mariadb/mariadb.log
chown -R mysql:mysql /var/log/mariadb
複製程式碼

8. 修改 /etc/my.cnf

vi /etc/my.cnf
複製程式碼

修改 [mysqld]組下的 socket 路徑,註釋掉/var/lib/mysql/mysql.sock,加一行為tmp/mysql.soc

[mysqld]
datadir=/var/lib/mysql
#socket=/var/lib/mysql/mysql.sock
socket=/tmp/mysql.sock
複製程式碼

9.啟動MySQL服務

service mysql.server start
複製程式碼

或者

/usr/local/mysql/support-files/mysql.server start
複製程式碼

10. 登入MySQL

/usr/local/mysql/bin/mysql -uroot -p
Enter password: 
複製程式碼

如果不知道密碼 密碼在,安裝MySQL步驟 4 ,有提到,怎麼找初始化臨時密碼

11. 設定MySQL密碼

登陸成功後,設定MySQL密碼

mysql> ALTER USER   'root'@'localhost' identified by 'mima';
mysql> flush privileges;
複製程式碼

12. 開啟遠端登入

mysql> grant all privileges on *.*  to  'root'@'%'  identified by 'mima'  with grant option;
mysql> flush privileges;
mysql> exit;
複製程式碼

8、下載依賴包

yum -y install chkconfig
yum -y install bind-utils
yum -y install psmisc
yum -y install libxslt
yum -y install zlib
yum -y install sqlite
yum -y install cyrus-sasl-plain
yum -y install cyrus-sasl-gssapi
yum -y install fuse
yum -y install portmap
yum -y install fuse-libs
yum -y install redhat-lsb
複製程式碼

三、cloudera manager Server & Agent 安裝

1、安裝 CM Server & Agent

在所有節點,建立/opt/cloudera-manager

mkdir /opt/cloudera-manager
複製程式碼

把下載好的cloudera-manager-centos7-cm5.12.1_x86_64.tar.gz安裝包上傳至 node1 節點/opt/目錄

在 node1 節點拷貝 cloudera-manager-centos7-cm5.12.1_x86_64.tar.gz 到所有 Server、Agent 節點建立 /opt/cloudera-manager 目錄:

for a in {2..7}; do scp /opt/cloudera-manager-*.tar.gz root@node$a:/opt/ ; done
複製程式碼

所有 Server、Agent 節點節點解壓安裝 Cloudera Manager Server & Agent

cd /opt
tar xvzf cloudera-manager*.tar.gz -C /opt/cloudera-manager
複製程式碼

2、建立使用者 cloudera-scm(所有節點)

cloudera-scm 使用者說明,摘自官網:

Cloudera Manager Server and managed services are configured to use the user account cloudera-scm by default, creating a user with this name is the simplest approach. This created user, is used automatically after installation is complete.

Cloudera管理器伺服器和託管服務被配置為在預設情況下使用使用者帳戶Cloudera-scm,建立具有這個名稱的使用者是最簡單的方法。建立使用者,在安裝完成後自動使用。

執行:在所有節點建立cloudera-scm使用者

useradd --system --home=/opt/cloudera-manager/cm-5.12.1/run/cloudera-scm-server/ --no-create-home --shell=/bin/false --comment "Cloudera SCM User" cloudera-scm
複製程式碼

3、配置 CM Agent

修改 node1 節點

/opt/cloudera-manager/cm-5.12.1/etc/cloudera-scm-agent/config.ini中的server_host為主節點的主機名。

cd /opt/cloudera-manager/cm-5.12.1/etc/cloudera-scm-agent/
vi config.ini
複製程式碼

在node1 操作將 node1 節點修改後的 (複製到所有節點)

for a in {1..7}; do scp /opt/cloudera-manager/cm-5.12.1/etc/cloudera-scm-agent/config.ini root@node$a:/opt/cloudera-manager/cm-5.12.1/etc/cloudera-scm-agent/config.ini ; done
複製程式碼

4、配置 CM Server 的資料庫

在主節點 node1 初始化CM5的資料庫:

下載 mysql 驅動包

cd /opt/cloudera-manager/cm-5.12.1/share/cmf/lib
wget http://maven.aliyun.com/nexus/service/local/repositories/hongkong-nexus/content/Mysql/mysql-connector-java/5.1.38/mysql-connector-java-5.1.38.jar
複製程式碼

啟動MySQL服務

service mysql.server start
複製程式碼
cd /opt/cloudera-manager/cm-5.12.1/share/cmf/schema/

./scm_prepare_database.sh mysql cm -h node1 -uroot -pmima --scm-host node1 scm scm scm
複製程式碼

看到如下資訊,恭喜您,配置沒毛病

[main] DbCommandExecutor              INFO  Successfully connected to database.
All done, your SCM database is configured correctly!

複製程式碼

格式:

scm_prepare_database.sh mysql cm -h <hostName> -u<username>  -p<password> --scm-host <hostName>  scm scm scm

對應於:資料庫型別  資料庫 伺服器 使用者名稱 密碼  –scm-host  Cloudera_Manager_Server 所在節點……
複製程式碼

5、建立 Parcel 目錄

Manager 節點建立目錄/opt/cloudera/parcel-repo,執行:

將下載好的檔案

CDH-5.12.1-1.cdh5.12.1.p0.3-el7.parcel
CDH-5.12.1-1.cdh5.12.1.p0.3-el7.parcel.sha
manifest.json
複製程式碼

拷貝到該目錄下。

mkdir -p /opt/cloudera/parcel-repo
chown cloudera-scm:cloudera-scm /opt/cloudera/parcel-repo
cd /opt/cloudera/parcel-repo

複製程式碼

重新命名,CDH-5.12.1-1.cdh5.12.1.p0.3-el7.parcel.sha1 否則,系統會重新下載 CDH-5.12.1-1.cdh5.12.1.p0.3-el7.parcel

mv CDH-5.12.1-1.cdh5.12.1.p0.3-el7.parcel.sha1 CDH-5.12.1-1.cdh5.12.1.p0.3-el7.parcel.sha
複製程式碼

Agent 節點建立目錄/opt/cloudera/parcels,執行:

mkdir -p /opt/cloudera/parcels
chown cloudera-scm:cloudera-scm /opt/cloudera/parcels
複製程式碼

6、啟動 CM Manager&Agent 服務

注意,mysql 服務啟動,防火牆關閉

在 node1 (master) 執行:

Server

/opt/cloudera-manager/cm-5.12.1/etc/init.d/cloudera-scm-server start
複製程式碼

在 node2-7 (Agents) 執行:

Agents

/opt/cloudera-manager/cm-5.12.1/etc/init.d/cloudera-scm-agent start
複製程式碼

訪問 http://Master:7180 若可以訪問(使用者名稱、密碼:admin),則安裝成功。

Manager 啟動成功需要等待一段時間,過程中會在資料庫中建立對應的表需要耗費一些時間。

四、CDH5 安裝

CM Manager && Agent 成功啟動後,登入前端頁面進行 CDH 安裝配置。

離線部署 CDH 5.12.1 及使用 CDH 部署 Hadoop 大資料平臺叢集服務

離線部署 CDH 5.12.1 及使用 CDH 部署 Hadoop 大資料平臺叢集服務

離線部署 CDH 5.12.1 及使用 CDH 部署 Hadoop 大資料平臺叢集服務

免費版本的 CM5 已經去除 50 個節點數量的限制。

離線部署 CDH 5.12.1 及使用 CDH 部署 Hadoop 大資料平臺叢集服務

各個 Agent 節點正常啟動後,可以在當前管理的主機列表中看到對應的節點。

離線部署 CDH 5.12.1 及使用 CDH 部署 Hadoop 大資料平臺叢集服務

選擇要安裝的節點,點繼續。

離線部署 CDH 5.12.1 及使用 CDH 部署 Hadoop 大資料平臺叢集服務

點選,繼續,如果配置本地 Parcel 包無誤,那麼下圖中的已下載,應該是瞬間就完成了,然後就是耐心等待分配過程就行了,大約 10 多分鐘吧,取決於內網網速。

(若本地 Parcel 有問題,重新檢查步驟三、5 是否配置正確)

離線部署 CDH 5.12.1 及使用 CDH 部署 Hadoop 大資料平臺叢集服務

離線部署 CDH 5.12.1 及使用 CDH 部署 Hadoop 大資料平臺叢集服務

點選,繼續,如果配置本地Parcel包無誤,那麼下圖中的已下載,應該是瞬間就完成了,然後就是耐心等待分配過程就行了,大約10多分鐘吧,取決於內網網速。

離線部署 CDH 5.12.1 及使用 CDH 部署 Hadoop 大資料平臺叢集服務

離線部署 CDH 5.12.1 及使用 CDH 部署 Hadoop 大資料平臺叢集服務

遇到問題

問題一
接下來是伺服器檢查,可能會遇到以下問題:

Cloudera 建議將 /proc/sys/vm/swappiness 設定為最大值 10。當前設定為 30。

使用 sysctl 命令在執行時更改該設定並編輯 /etc/sysctl.conf,以在重啟後儲存該設定。

您可以繼續進行安裝,但 Cloudera Manager 可能會報告您的主機由於交換而執行狀況不良。以下主機將受到影響:node[2-7]

echo 0 > /proc/sys/vm/swappiness
複製程式碼

問題二
已啟用透明大頁面壓縮,可能會導致重大效能問題。請執行
echo never > /sys/kernel/mm/transparent_hugepage/defragecho never > /sys/kernel/mm/transparent_hugepage/enabled
以禁用此設定,然後將同一命令新增到 /etc/rc.local 等初始化指令碼中,以便在系統重啟時予以設定。以下主機將受到影響: node[2-7]

echo never > /sys/kernel/mm/transparent_hugepage/defrag
echo never > /sys/kernel/mm/transparent_hugepage/enabled 
複製程式碼

離線部署 CDH 5.12.1 及使用 CDH 部署 Hadoop 大資料平臺叢集服務

離線部署 CDH 5.12.1 及使用 CDH 部署 Hadoop 大資料平臺叢集服務

離線部署 CDH 5.12.1 及使用 CDH 部署 Hadoop 大資料平臺叢集服務

離線部署 CDH 5.12.1 及使用 CDH 部署 Hadoop 大資料平臺叢集服務

離線部署 CDH 5.12.1 及使用 CDH 部署 Hadoop 大資料平臺叢集服務

離線部署 CDH 5.12.1 及使用 CDH 部署 Hadoop 大資料平臺叢集服務

離線部署 CDH 5.12.1 及使用 CDH 部署 Hadoop 大資料平臺叢集服務

離線部署 CDH 5.12.1 及使用 CDH 部署 Hadoop 大資料平臺叢集服務

五、指令碼

MySql 建庫&&刪庫

1、MySql 建庫&&刪庫

amon

create database amon DEFAULT CHARACTER SET utf8; 
grant all on amon.* TO 'amon'@'%' IDENTIFIED BY 'amon';
複製程式碼

hive

create database hive DEFAULT CHARACTER SET utf8; 
grant all on hive.* TO 'hive'@'%' IDENTIFIED BY 'hive';
複製程式碼

oozie

create database oozie DEFAULT CHARACTER SET utf8; 
grant all on oozie.* TO 'oozie'@'%' IDENTIFIED BY 'oozie';
複製程式碼

Contact

關注公眾號-搜雲庫
搜雲庫

相關文章