CDH 5.x 離線安裝指南

簡述


hadoop 體系衍生了許多商業發行版,其中國內最常用的是 CDH。CDH是在原生 apache hadoop 的基礎上封裝的發行版,擁有 Cloudera Manager (簡稱CM,是一個管理、監控CDH運行的軟件),將 hadoop 集羣很好的監控和管理了起來,目前 CDH 最高版本是 5.7.x,對應 apache hadoop 2.7.x,這裏我們採用 CDH 5.7.0。其安裝的簡要說明及系統要求見以下鏈接:
Download Cloudera Manager

CDH 的安裝相比原生 hadoop 安裝,將會少敲很多命令,少寫很多配置文件,但是在過程中許多步驟都需要用到 root 權限。整個安裝過程,大致上可以分成兩個步驟:首先是先安裝 CM 控制檯(即一個web管理界面),然後通過 CM 來安裝 CDH。也就是說,整個CDH集羣的安裝,是可以在CM界面上進行操作的,包括後面添加節點,也是在CM界面上進行操作。

搭建過程


系統環境

CentOS release 6.5 x64
CDH 5.7.0
三臺主機節點,內存都爲10G

節點角色說明
IP 主機名 角色描述
10.1.2.126 hadoop01 CM, Agent
10.1.2.142 hadoop02 Agent
10.1.2.144 hadoop03 Agent

一開始可能只有一臺機器,那麼本文的的所有安裝步驟可以先只在其中一臺機器上操作,那麼這臺機器也就是主控節點了,因爲這臺機器上將會安裝CM,那麼以後集羣添加其他機器便可以在CM上操作了。例如,選擇 hadoop01 作爲主控節點,hadoop02和hadoop03 當做受控節點,那麼僅需要在 hadoop01 節點上執行本文的所有安裝步驟。等安裝完成,CM界面可以正常打開運行,再添加 hadoop02和hadoop03 節點。

配置主機域名
  • 分別在每一臺主機上操作
  • 方法1:
sudo vim /etc/sysconfig/network
HOSTNAME=hadoop01
# 修改 HOSTNAME 爲該節點主機名,例如 hadoop01
# 然後重新啓動即可
  • 方法2:
sudo vim /etc/hostname # centos系統可能沒有該文件,創建即可
hadoop01 # 該節點主機名

將該文件內容修改爲對應的主機名,例如 hadoop02

域名解析
  • 配置 /etc/hosts,將以下代碼追加到文件末尾即可
  • 分別在所有三臺主機上操作
sudo vim /etc/hosts
10.1.2.126 hadoop01 
10.1.2.142 hadoop02 
10.1.2.144 hadoop03

!!! Ubuntu系統,須刪掉 /etc/hosts 映射 127.0.1.1/127.0.0.1 !!!
Check that there isn't an entry for your hostname mapped to 127.0.0.1 or 127.0.1.1 in /etc/hosts (Ubuntu is notorious for this).
127.0.1.1 h01.vm.com # must remove

不然可能會引起 hadoop、zookeeper 節點間通信的問題

服務器安全配置
  • 分別在所有三臺主機上操作
  • 關閉 iptables (如果不允許關閉,則採用配置 iptables 策略的方法)
service iptables stop    # 臨時關閉
chkconfig iptables off  # 永久關閉 重啓後生效
# ACCEPT=允許  DROP=拒絕

# 443
iptables -A INPUT -p tcp -s 10.1.2.0/24 --dport 443 -j ACCEPT # 允許10.1.2.0的IP訪問本機443端口
iptables -A OUTPUT -p tcp --sport 443 -m state --state ESTABLISHED -j ACCEPT # 允許443端口出

# zookeeper
iptables -A INPUT -p tcp -s 10.1.2.0/24 --dport 2181 -j ACCEPT
iptables -A OUTPUT -p tcp --sport 2181 -m state --state ESTABLISHED -j ACCEPT
iptables -A INPUT -p tcp -s 10.1.2.0/24 --dport 2888 -j ACCEPT
iptables -A OUTPUT -p tcp --sport 2888 -m state --state ESTABLISHED -j ACCEPT
iptables -A INPUT -p tcp -s 10.1.2.0/24 --dport 3888 -j ACCEPT
iptables -A OUTPUT -p tcp --sport 3888 -m state --state ESTABLISHED -j ACCEPT

# yarn

# 重啓 iptables
service iptables save
service iptables restart
  • 關閉 SELinux
setenforce 0 # 臨時生效
sudo vim /etc/selinux/config
SELINUX=disabled
# 將 SELINUX 設置爲 disabled 即永久關閉了 SELinux
配置免密碼ssh登錄

hadoop 主節點需要能遠程登陸集羣內的所有節點(包括自己),以執行命令。所以需要配置免密碼的ssh登陸。可選的ssh祕鑰對生成方式有rsa和dsa兩種,這裏選擇rsa。

  • 分別所有節點操作
ssh-keygen -t rsa
# 注意在接下來的命令行交互中,直接按回車跳過輸入密碼
  • 分別在所有節點操作:以下命令將本節點的公鑰 id_rsa.pub 文件的內容追加到遠程主機的 authorized_keys 文件中(默認位於 ~/.ssh/)
ssh-copy-id root@hadoop01 # root是遠程主機用戶名
ssh-copy-id root@hadoop02
ssh-copy-id root@hadoop03
  • 在每個節點上測試無密碼 ssh 登錄到 hadoop01 hadoop02 hadoop03
ssh hadoop01
ssh hadoop02
ssh hadoop03

!!! 注意使用rsa模式生成密鑰對時,不要輕易覆蓋原來已有的,確定無影響時方可覆蓋 !!!

安裝jdk(在所有節點操作)
  1. 先查詢看系統是否已安裝 openjdk
sudo rpm -qa openjdk
  1. 卸載 openjdk
sudo rpm -e --nodeps 上面步驟找到的包名
...
  1. 安裝 jdk
# jdk-7u67-linux-x64.rpm 需要事先下載好
sudo rpm -ivh jdk-7u67-linux-x64.rpm
  1. 配置環境變量
sudo vim /etc/profile
# 在該文件末尾添加以下行
JAVA_HOME=/usr/java/jdk1.7.0_67
PATH=$PATH:$JAVA_HOME/bin
CLASSPATH=.:$JAVA_HOME/lib/jt.jar:$JAVA_HOME/lib/tools.jar
export JAVA_HOME PATH CLASSPATH
  1. 使環境變量立即生效
source /etc/profile
  1. 測試jdk安裝是否成功
java -version
# 如顯示了jdk的版本,則安裝成功
時間同步:在內網中搭建 ntp 服務器
  1. 安裝 ntp(在所有節點操作)
sudo yum install ntp
  1. 設置NTP服務開機啓動(在所有節點操作)
chkconfig ntpd on
chkconfig --list ntpd
# 2-5爲on即成功
  1. 配置主節點(在 hadoop01 操作)
vim /etc/ntp.conf

該配置文件全部內容如下

driftfile /var/lib/ntp/ntp.drift #草稿文件

# Hosts on local network are less restricted.
# 允許內網其他機器同步時間
restrict 10.1.2.0 mask 255.255.255.0 nomodify notrap
 
# Use public servers from the pool.ntp.org project.
# Please consider joining the pool (http://www.pool.ntp.org/join.html).
# 中國這邊最活躍的時間服務器 : [http://www.pool.ntp.org/zone/cn](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
 
#broadcast 192.168.1.255 autokey        # broadcast server
#broadcastclient                        # broadcast client
#broadcast 224.0.1.1 autokey            # multicast server
#multicastclient 224.0.1.1              # multicast client
#manycastserver 239.255.254.254         # manycast server
#manycastclient 239.255.254.254 autokey # manycast client
 
# allow update time by the upper server 
# 允許上層時間服務器主動修改本機時間
restrict 210.72.145.44 nomodify notrap noquery
restrict 202.112.10.36 nomodify notrap noquery
restrict 59.124.196.83 nomodify notrap noquery
 
# Undisciplined Local Clock. This is a fake driver intended for backup
# and when no outside source of synchronized time is available. 
# 外部時間服務器不可用時,以本地時間作爲時間服務
server  127.127.1.0     # local clock
fudge   127.127.1.0 stratum 10
  • 保存後重啓服務
service ntpd restart

# 查看同步狀態
netstat -tlunp | grep ntp
watch ntpd –p

# 手動同步 
ntpdate –u ip
  • 配置子節點(在所有非主節點操作)
vim /etc/ntp.conf

該配置文件全部內容如下

driftfile /var/lib/ntp/ntp.drift # 草稿文件

# 日誌文件
statsdir /var/log/ntpstats/

statistics loopstats peerstats clockstats
filegen loopstats file loopstats type day enable
filegen peerstats file peerstats type day enable
filegen clockstats file clockstats type day enable

# 讓NTP Server爲內網的ntp服務器
server 10.1.2.126
fudge 10.1.2.126 stratum 5

# 不允許來自公網上ipv4和ipv6客戶端的訪問
restrict -4 default kod notrap nomodify nopeer noquery 
restrict -6 default kod notrap nomodify nopeer noquery

# Local users may interrogate the ntp server more closely.
restrict 127.0.0.1
restrict ::1
  • 保存後重啓服務(在每一臺子節點操作)
service ntpd restart

# 手工同步
netdate -u 10.1.2.126
準備包(用parcel 方式安裝)
  1. cloudera-manager-agent-5.7.0-1.cm570.p0.76.el6.x86_64.rpm
  2. cloudera-manager-daemons-5.7.0-1.cm570.p0.76.el6.x86_64.rpm
  3. cloudera-manager-server-5.7.0-1.cm570.p0.76.el6.x86_64.rpm
  4. cloudera-manager-server-db-2-5.7.0-1.cm570.p0.76.el6.x86_64.rpm
  5. enterprise-debuginfo-5.7.0-1.cm570.p0.76.el6.x86_64.rpm
  6. oracle-j2sdk1.7-1.7.0+update67-1.x86_64.rpm
  1. CDH-5.7.0-1.cdh5.7.0.p0.45-el6.parcel
  2. CDH-5.7.0-1.cdh5.7.0.p0.45-el6.parcel.sha1
  3. cloudera-manager-installer.bin
  4. manifest.json
  1. cloudera-manager-installer.bin
配置 cloudera yum 源(在 hadoop01 操作)
  1. 添加 cloudera-manager 源
cd /etc/yum.repos.d
wget http://archive.cloudera.com/cm5/redhat/5/x86_64/cm/cloudera-manager.repo
vim cloudera-manager.repo
# 修改該文件以下內容
baseurl=http://archive.cloudera.com/cm5/redhat/6/x86_64/cm/5.7.0/
gpgcheck = 0
enabled  =1
  1. 添加 cloudera-cdh5 源
cd /etc/yum.repos.d
wget http://archive.cloudera.com/cdh5/redhat/6/x86_64/cdh/cloudera-cdh5.repo
vim cloudera-cdh5.repo
# 修改該文件以下內容
baseurl=http://archive.cloudera.com/cdh5/redhat/6/x86_64/cdh/5.7.0/
gpgcheck = 0
enabled  =1
  1. 更新源
sudo yum update 
安裝 mysql

(略)

安裝 CM(注意安裝順序)
  • 只需要在 hadoop01 節點安裝
cd CM包的下載目錄
rpm -ivh cloudera-manager-daemons-5.7.0-1.cm570.p0.76.el6.x86_64.rpm
rpm -ivh cloudera-manager-agent-5.7.0-1.cm570.p0.76.el6.x86_64.rpm
rpm -ivh cloudera-manager-server-5.7.0-1.cm570.p0.76.el6.x86_64.rpm
rpm -ivh cloudera-manager-server-db-2-5.7.0-1.cm570.p0.76.el6.x86_64.rpm
rpm -ivh enterprise-debuginfo-5.7.0-1.cm570.p0.76.el6.x86_64.rpm
rpm -ivh oracle-j2sdk1.7-1.7.0+update67-1.x86_64.rpm
  • 執行安裝
rm -f /etc/cloudera-scm-server/db.properties
cd CM包的下載目錄
./cloudera-manager-installer.bin --skip_repo_package=1

後面按照提示操作

  • 創建 mysql 數據庫
mysql -u用戶名 -p
# 然後在mysql控制檯執行以下語句
CREATE DATABASE IF NOT EXISTS cmf DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
  • 修改 CM 配置文件使支持mysql
vim /etc/cloudera-scm-server/db.properties
# 修改以下配置
com.cloudera.cmf.db.type=mysql
com.cloudera.cmf.db.host=localhost:3306
com.cloudera.cmf.db.name=cmf
com.cloudera.cmf.db.user=USER
com.cloudera.cmf.db.password=PASSWORD
  • 添加 com.mysql.jdbc.Driver 到 /usr/share/cmf/lib
wget -c http://cdn.mysql.com//Downloads/Connector-J/mysql-connector-java-5.1.39.tar.gz
tar zxf mysql-connector-java-5.1.39.tar.gz
cp mysql-connector-java-5.1.39/mysql-connector-java-5.1.39-bin.jar /usr/share/cmf/lib/
rm mysql-connector-java-5.1.39 -Rf mysql-connector-java-5.1.39.tar.gz
安裝 cloudera-manager-agent (在所有節點操作)
  1. 將所需軟件從 hadoop01 複製到其他節點
scp -r /data/soft/* hadoop02:/data/soft
scp -r /data/soft/* hadoop03:/data/soft
  1. 執行安裝
rpm -ivh cloudera-manager-daemons-5.7.0-1.cm570.p0.76.el6.x86_64.rpm
rpm -ivh cloudera-manager-agent-5.7.0-1.cm570.p0.76.el6.x86_64.rpm
rpm -ivh enterprise-debuginfo-5.7.0-1.cm570.p0.76.el6.x86_64.rpm
rpm -ivh oracle-j2sdk1.7-1.7.0+update67-1.x86_64.rpm
將 cdh 複製到/opt/cloudera/parcel-repo
  • 在 hadoop01 操作
cd CDH包的下載目錄
cp ./* /opt/cloudera/parcel-repo
cd /opt/cloudera/parcel-repo
mv CDH-5.7.0-1.cdh5.7.0.p0.45-el6.parcel.sha1 CDH-5.7.0-1.cdh5.7.0.p0.45-el6.parcel.sha
  • 檢驗哈希碼
cd /opt/cloudera/parcel-repo
vim CDH-5.7.0-1.cdh5.7.0.p0.45-el6.parcel.sha
# 查看該文件內容是否與以下鏈接的文件內容一致
# http://archive.cloudera.com/cdh5/parcels/5.7.0/manifest.json
# parcelName: "CDH-5.7.0-1.cdh5.7.0.p0.45-el5.parcel" 所對應的 hash 值
# 如不一致,則將線上的hash值替換到 CDH-5.7.0-1.cdh5.7.0.p0.45-el6.parcel.sha 文件中
重啓 CM 服務
service cloudera-scm-server-db restart
service cloudera-scm-server restart
service cloudera-scm-agent restart
啓動 CM Web 界面安裝 CDH
  • 如果訪問 refused to connect,請耐心等待片刻,服務啓動需要時間
  1. 訪問 http://hadoop01:7180/
    默認帳號密碼是 admin / admin
    強烈要求登錄後修改密碼

  2. 後面的步驟都在 web 界面操作,這裏暫不說明

  3. 這裏展示一張安裝好後,並添加了些許服務的效果圖


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章