1. 程式人生 > >使用阿裏雲主機離線部署CDH步驟詳解

使用阿裏雲主機離線部署CDH步驟詳解

require 系統初始 grant 內網ip 初始 cli dir 雲主機 rhel4

一、Linux文件系統準備

1. 拍攝快照

登錄阿裏雲控制臺,拍攝快照,註意有幾個關鍵點盡量拍攝快照,系統初始狀態、CM環境準備完成、CM安裝完成、CDH安裝完成。

2. 掛載設備

三個主機都執行。

  • 創建掛載目錄
$mkdir /data
  • 查看設備
$df -h
$fdish -l

得知/dev/vdb沒有掛載

  • 格式化設備
$mkfs.ext3 /dev/vdb
  • 編寫開機自動掛載腳本
$mkdir /opt/shell/
$vim /opt/shell/mymount.sh
#!/bin/bash
#
mount -o rw /dev/vdb /data
  • 修改權限
$chmod 777 /opt/shell/mymount.sh
  • 設置開機運行
$vim /etc/rc.local

在文件中加入一行

/opt/shell/mymount.sh

二、系統環境準備

1. 網絡配置

  • 修改hostname。三臺機器分別改為cdh01、cdh02、cdh03。
$vim /etc/sysconfig/network
  • 重啟網絡服務。
$service network restart
  • 修改IP與主機名的對應關系。
vi
/etc/hosts
內網ip1 cdh01
內網ip2 cdh02
內網ip3 cdh03

2. SSH兩兩免密碼登錄

三個雲主機要設置自身免密碼登錄,並且三個雲主機之間設置兩兩免密碼登錄。以cdh01為例:

  • 設置自身免密碼登錄

在cdh01產生密鑰,將公鑰追加重定向到認證文件中。在三臺機器中都執行如下命令:

$ssh-keygen -t dsa -P ‘‘ -f ~/.ssh/id_dsa
$cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
  • cdh01免密碼登錄到cdh02

將cdh01的公鑰遠程拷貝到cdh02中,這時需要輸入cdh02的密碼;再在cdh02中將已經遠程拷貝過來的cdh01的公鑰追加重定向到cdh02的認證文件中。這是因為私鑰加密,公鑰解密,cdh01與cdh02通信需要先用私鑰加密,私鑰加密的要用公鑰解密,所以要將cdh01的公鑰追加到cdh02的認證文件中。

$scp ~/.ssh/id_dsa.pub root@cdh02:~
$cat ~/id_dsa.pub >> ~/.ssh/authorized_keys
  • cdh01免密碼登錄到cdh03
$scp ~/.ssh/id_dsa.pub root@cdh03:~
$cat ~/id_dsa.pub >> ~/.ssh/authorized_keys

同理可以完成cdh02免密碼登錄到cdh01和cdh03,cdh03免密碼登錄到cdh01和cdh02。

3. 關閉防火墻

  • 臨時關閉
$service iptables stop
  • 永久關閉需重啟生效
$chkconfig iptables off

4. 關閉SELINUX

$vim /etc/selinux/config

將SELINUX=enforcing 修改為 SELINUX=disabled

  • 查看SELINUX狀態
$/usr/sbin/sestatus

執行$/usr/sbin/sestatus,可見SELINUX status:(enabled:開啟;disabled:關閉)

5. 安裝JDK

  • 采用RPM包安裝
$rpm -ivh jdk-7u79-linux-x64.rpm
  • 配置環境變量
$vim /etc/profile
export JAVA_HOME=/usr/java/jdk1.7.0_79
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
  • 使環境變量生效
$source /etc/profile

6. 安裝時間同步

  • 所有節點安裝NTP
$yum -y install ntp
  • 設置開機啟動
$chkconfig ntpd on
  • 檢查是否設置成功
$chkconfig --list ntpd
  • 設置時間同步
$ntpdate -u ntp1.aliyun.com

7. 主節點安裝MySQL

  • 查看並卸載之前版本

查看系統是否安裝了MySQL,使用命令

$rpm -qa | grep mysql

卸載命令類似下面

$rpm -ev mysql-*.RHEL4.1
$yum -y remove mysql-libs-5.1.71-1.el6.x86_64
  • 繼續查看是否有未刪盡的目錄
$find / -name mysql

刪除查找出的所有mysql目錄,例如:

$rm -rf /var/lib/mysql
$rm -rf /var/lib/mysql
$rm -rf /usr/lib64/mysql
$rm -fr /usr/include/mysql
  • 手動刪除my.cnf文件

卸載後/etc/my.cnf有可能不會刪除,需要進行手工刪除。

rm -f /etc/my.cnf
  • 再次查找機器是否安裝mysql
$rpm -qa|grep -i mysql

如果無結果,說明已經卸載徹底。

  • 安裝mysql

使用如下命令安裝Server和Client:

$rpm -ivh MySQL-server-5.6.*.rpm
$rpm -ivh MySQL-client-5.6.*.rpm
$rpm -ivh MySQL-devel-5.6.*.rpm

註意MySQL的版本選擇5.5或5.6,因其和Hadoop生態圈的Oozie、Hue、Hive/Impala、Sqoop等的兼容性比較好。

  • 啟動MySQL

查看狀態

$service mysql status

如果沒有運行,則使用如下命令啟動:

$service mysql start
  • 設置開機啟動
$chkconfig --add mysql
#或者
$chkconfig mysql on

查看是否生效

$chkconfig --list mysql
  • 查看初始密碼
$cat /root/.mysql_secret
  • 給mysql設置root密碼

使用如下命令進入mysql:

$mysql -u root -p

輸入密碼初始密碼後進入MySQL命令行,再修改密碼。

mysql>SET PASSWORD = PASSWORD(newpwd);
mysql>quit;

退出後再用新密碼測試

$mysql -uroot -pnewpwd 

如果可以登錄成功,則表示mysql數據庫已經安裝成功。

8. 下載安裝第三方依賴包

所有節點都需下載安裝依賴包。

$yum -y install chkconfig python 2.6 required for CDH 5 bind-utils psmisc libxslt zlib sqlite cyrus-sasl-plain cyrus-sasl-gssapi fuse fuse-libs redhat-lsb 

三、安裝Cloudera Manager Server&Agent

1. 安裝 Cloudera Manager Server&Agent

  • 上傳文件

拷貝cloudera-manager-el6-cm5.6.1_x86_64.tar.gz 到所有Server、Agent節點

  • 創建 cm 目錄
$mkdir /opt/cloudera-manager 
  • 解壓 cm 壓縮包
$tar -zxvf /opt/tools/cdh/cloudera-manager-el6-cm5.6.1_x86_64.tar.gz -C /opt/cloudera-manager 

2. 創建用戶 cloudera-scm(所有節點)

  • 所有節點創建用戶
$useradd --system --home=/opt/cloudera-manager/cm-5.6.1/run/cloudera-scm-server --no-create-home --shell=/bin/false --comment "Cloudera SCM User" cloudera-scm
  • 查看用戶是否成功創建:
$cat /etc/passwd 

3. 配置CM Agent

所有的Agent機器都需要修改

修改文件/opt/cloudera-manager/cm-5.6.1/etc/cloudera-scm-agent/config.ini中server_host以及server_port。

server_host=cdh01,server_port 7182

4. 配置CM server數據庫

在主節點執行。

  • 拷貝jar包

拷貝/opt/tools/cdh/目錄下的mysql jar文件到目錄/usr/share/java/中,並且jar包名要修改為mysql-connector-java.jar。如果沒有java目錄需要先創建。

$mkdir /usr/share/java
$cp /opt/tools/cdh/mysql-connector-java-5.1.26-bin.jar /usr/share/java/mysql-connector-java.jar  

因為在啟動時會到這個目錄下找jar包,如果沒有找到就認為沒有jar包,會報數據庫JDBC connection的錯誤。

  • 創建臨時賬戶

進入mysql,創建臨時賬戶,來於建立數據庫。

mysql>grant all on *.* to temp@% identified by temp with grant option;
mysql>FLUSH PRIVILEGES;
  • 執行scm_prepare_database.sh腳本
$cd /opt/cloudera-manager/cm-5.6.1/share/cmf/schema/
$./scm_prepare_database.sh mysql temp -h cdh01 -utemp -ptemp --scm-host cdh01 scm scm scm
  • 刪除臨時用戶
mysql> drop user temp@%;

5. 創建Parcel目錄

  • Server節點

在Server節點創建parcel-repo目錄並修改權限。

$mkdir -p /opt/cloudera/parcel-repo
$chown cloudera-scm:cloudera-scm /opt/cloudera/parcel-repo
  • Agent節點

所有Agent節點創建parcels目錄並修改權限。

$mkdir -p /opt/cloudera/parcels
$chown cloudera-scm:cloudera-scm /opt/cloudera/parcels

6. 制作CDH本地源

直接上傳已下載文件CDH-5.6.1-1.cdh5.6.1.p0.3-el6.parcel.sha1和CDH-5.6.1-1.cdh5.6.1.p0.3-el6.parcel。或者直接用wget下載:

$wget http://archive-primary.cloudera.com/cdh5/parcels/5.6.1/CDH-5.6.1-1.cdh5.6.1.p0.3-el6.parcel.sha1 >> /dev/null &
$wget http://archive-primary.cloudera.com/cdh5/parcels/5.6.1/CDH-5.6.1-1.cdh5.6.1.p0.3-el6.parcel >> /dev/null & 

將這兩個文件拷貝到/opt/cloudera/parcel-repo目錄下。

7. 啟動CM Manager&Agent服務

  • 進入目錄
$cd /opt/cloudera-manager/cm-5.6.1/etc/init.d/
  • 先啟動Server

首次啟動會自動創建表以及數據,不要立即關閉或重啟,否則需要刪除所有表及數據重新安裝。

$./cloudera-scm-server start
  • 後啟動所有Agents
$./cloudera-scm-agent start
  • 查看日誌

Cloudera Manager的安裝日誌在/opt/cloudera-manager/cm-5.6.1/log目錄下,其中有agent、server和cmf三個文件夾。server在啟動的時候會啟動很多腳本,對數據庫的創建、包的操作,會花費一段時間。

四、安裝CDH

1. CDH集群的安裝

  • 登錄到CM客戶端(瀏覽器)

地址:http://cdh01公網ip:7180/

用戶名:admin

密碼:admin

  • Cloudear Manager部署版本的選擇

技術分享圖片

  • 為CDH集群的安裝指定主機

將三臺雲主機全選。

  • 選擇儲存庫

使用Parcel方法,CDH版本選擇5.6.1。

  • 集群正確性檢測

技術分享圖片

如果出現警告,按提示解決即可

例如:echo never > /sys/kernel/mm/transparent_hugepage/defrag”以禁用此設置。然後將同一命令添加到 /etc/rc.local 等初始腳本中,以便在系統重啟時予以設置。

  • 自定義腳本分配

技術分享圖片

2. 為集群添加Hive服務

技術分享圖片

技術分享圖片

技術分享圖片

3. 為集群添加Sqoop服務

技術分享圖片

最終可見安裝完成的界面如下:

技術分享圖片

使用阿裏雲主機離線部署CDH步驟詳解