一、NTP 配置時間服務器1.1、檢查當前系統時區1.2、同步時間1.3、檢查軟件包1.4、修改 ntp 配置文件1.5、重啟 ntp 服務1.6、設置定時同步任務二、Linux 集群服務群起腳本2.1、介紹2.2、編寫腳本三、CentOS6.8 升級到 python 到 2.73.1、環境准備3.2、安裝 Python2.7
一、NTP 配置時間服務器
當集群中各個節點的時間不同步,誤差超過某個范圍時,會導致一些集群的服務無法正常進行,這時我們應該想辦法做一個定時同步集群所有節點時間的任務。
1.1、檢查當前系統時區
選擇某台機器,作為集群中時間服務器的主節點,然后其他機器同步該機器的時間即可。但是在開始這步操作之前,我們需要確保所有節點的時區是統一的:
# date -R
顯示類似如下格式:
Sat, 07 Oct 2017 12:44:58 +0800
尖叫提示
:如果顯示的時區不是+0800,你可以刪除localtime文件夾后,再關聯一個正確時區的軟鏈接過去:
# rm -rf /etc/localtime
# ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
1.2、同步時間
如果懷疑自己本地機器的時間與標准時間相差很多,建議使用時間服務器的主節點同步一下網絡時間:
# ntpdate pool.ntp.org
1.3、檢查軟件包
1) 后邊我們要使用 ntp 服務,所以在使用該服務之前,建議檢查一下 ntp 服務是否正確安裝
# rpm -qa | grep ntp
顯示如下:
ntp-4.2.6p5-10.el6.centos.x86_64
fontpackages-filesystem-1.41-1.1.el6.noarch
ntpdate-4.2.6p5-10.el6.centos.x86_64
2) 如果沒有 ntp 服務,可使用 yum 命令進行安裝
# yum -y install ntp
1.4、修改 ntp 配置文件
我們需要修改 ntp 服務的配置文件,關閉網絡時間的同步:
# vim /etc/ntp.conf
對如下內容做出修改:
# Hosts on local network are less restricted.
# 授權192.168.25.0網段上的所有機器可以從這台機器上查詢和同步時間
restrict 192.168.25.0 mask 255.255.255.0 nomodify notrap
# 當該節點丟失網絡連接,依然可以作為時間服務器為集群中的其他節點提供時間同步
server 127.127.1.0
fudge 127.127.1.0 stratum 10
# Please consider joining the pool (http://www.pool.ntp.org/join.html).
#集群在局域網中,不使用其他的網絡時間
#server 0.centos.pool.ntp.org iburst
#server 1.centos.pool.ntp.org iburst
#server 2.centos.pool.ntp.org iburst
#server 3.centos.pool.ntp.org iburst
尖叫提示
:
nomodify:客戶端不能使用 ntpc 與 ntpq 修改服務器的時間參數
notrap:不提供 trap 遠程時間登錄的功能
1.5、重啟 ntp 服務
CentOS6:
# service ntpd restart
# chkconfig ntpd on
CentOS7:
# systemctl restart ntpd.service
# systemctl enable ntpd.service
1.6、設置定時同步任務
1) 首先在其他節點上關閉 ntp 服務
CentOS6:
# service ntpd stop
# chkconfig ntpd off
CentOS7:
# systemctl stop ntpd.service
# systemctl disable ntpd.service
查看 ntp 進程 id:
# pgrep ntpd
2) 其他節點手動同步第一台時間服務器的時間進行測試
# ntpdate hadoop102
3) 其他節點制定計划任務,周期性同步時間
# crontab -e
# .------------------------------------------minute(0~59)
# | .----------------------------------------hours(0~23)
# | | .--------------------------------------day of month(1~31)
# | | | .------------------------------------month(1~12)
# | | | | .----------------------------------day of week(0~6)
# | | | | | .--------------------------------command
# | | | | | |
# | | | | | |
*/10 * * * * /usr/sbin/ntpdate hadoop102
4) 重啟定時任務
CentOS6:
# service crond restart
CentOS7:
# systemctl restart crond.service
5) 查看任務
# crontab -l
二、Linux 集群服務群起腳本
2.1、介紹
寫這個腳本,純粹是為了偷懶,方便,不然用 linux 干嘛?
目的:在一台服務器上執行一個腳本,啟動所有集群節點上的相關進程。
描述:Resourcemanager、HMaster 和 Zookeeper 等節點可能需要登錄到節點所在機器啟動。
在開始之前呢,我們先了解一些概念:
登錄 Shell:粗放來講,就是你手動使用 CRT 登錄 Linux 的時候。此種情形,系統環境信息的讀取順序:/etc/profile、~/.bash_profile、~/.bash_login、~/.profile
非登錄Shell:粗放來講,就是你使用 ssh 登錄某台機器的時候。此種情形,系統環境信息的讀取順序:/etc/bash.bashrc、~/.bashrc
解決方案:了解完 Shell 這個小知識之后,你應該明白 ssh 到遠程節點啟動的對應服務的時候,其實是沒有 JDK 配置的環境的,所以,在每台機器中先執行:
$ cat /etc/profile >> ~/.bashrc
將我們配置的 profile 變量追加到 .bashrc 中即可。
2.2、編寫腳本
1) 啟動腳本:start-cluster.sh
#!/bin/bash
echo "================ 開始啟動所有節點服務 ==========="
echo "================ 正在啟動 Zookeeper ==========="
for i in atguigu@hadoop102 atguigu@hadoop103 atguigu@hadoop104
do
ssh $i 'source /etc/profile;/opt/module/zookeeper-3.4.10/bin/zkServer.sh start'
done
echo "================ 正在啟動 HDFS ==========="
ssh atguigu@hadoop102 '/opt/module/hadoop-2.7.2/sbin/start-dfs.sh'
echo "================ 正在啟動 YARN ==========="
ssh atguigu@hadoop103 '/opt/module/hadoop-2.7.2/sbin/start-yarn.sh'
echo "================ hadoop102 節點正在啟動 JobHistoryServer ==========="
ssh atguigu@hadoop102 '/opt/module/hadoop-2.7.2/sbin/mr-jobhistory-daemon.sh start historyserver'
2) 停止腳本:stop-cluster.sh
#!/bin/bash
echo "================ 開始停止所有節點服務 ==========="
echo "================ hadoop102 節點正在停止 JobHistoryServer ==========="
ssh atguigu@hadoop102 '/opt/module/hadoop-2.7.2/sbin/mr-jobhistory-daemon.sh stop historyserver'
echo "================ 正在停止 YARN ==========="
ssh atguigu@hadoop103 '/opt/module/hadoop-2.7.2/sbin/stop-yarn.sh'
echo "================ 正在停止 HDFS ==========="
ssh atguigu@hadoop102 '/opt/module/hadoop-2.7.2/sbin/stop-dfs.sh'
echo "================ 正在停止 Zookeeper ==========="
for i in atguigu@hadoop102 atguigu@hadoop103 atguigu@hadoop104
do
ssh $i 'source /etc/profile;/opt/module/zookeeper-3.4.10/bin/zkServer.sh stop'
done
3) 查看進程腳本:util.sh
#!/bin/bash
for i in atguigu@hadoop102 atguigu@hadoop103 atguigu@hadoop104
do
echo "================ $i 的所有進程 ==========="
ssh $i '/opt/module/jdk1.8.0_144/bin/jps'
done
尖叫提示
:腳本學會之后,如果后續再有新的節點需要添加到群起任務中,可以自行解決之。尖叫提示
:啟動與停止注意腳本的執行順序,而且停止腳本的停止過程應該是啟動過程的倒序。
三、CentOS6.8 升級到 python 到 2.7
由於 HUE 框架依賴 python2.7,而 CentOS7 以下的系統使用的都是 python2.6,並且 CentOS6.8 的 yum 也是依賴 2.6,所以升級過程會稍微繁瑣,特此予以講解。
3.1、環境准備
1) 查看 python 版本
# python –v
2) 安裝 GCC 與 wget,用於編譯源碼包與資源下載
# yum install gcc gcc-c++
# yum install wget
3) 安裝 xz 工具,用於解壓 tar.xz 格式文件
# wget http://down1.chinaunix.net/distfiles/xz-5.0.3.tar.bz2
# cd xz-5.0.3
# ./configure
# make
# make install
3.2、安裝 Python2.7
1) 下載解壓 Python 安裝包
# wget https://www.python.org/ftp/python/2.7.11/Python-2.7.11.tar.xz
# xz -d Python-2.7.11.tar.xz
# tar -xf Python-2.7.11.tar
2) 編譯安裝 python
# cd Python-2.7.11
# ./configure
# make
# make install
3) 將系統指向的 python 從 2.6 修改到 2.7 版本
# /usr/local/bin/python2.7 -V
# mv /usr/bin/python /usr/bin/python.bak
# ln -s /usr/local/bin/python2.7 /usr/bin/python
4) 將 yum 對 python 的引用重新指向 python2.6 (即:yum 使用 2.6,系統用 2.7)
# vi /usr/bin/yum
修改:
!/usr/bin/python
改為:
!/usr/bin/python2.6
5) 檢查 python 版本,檢查 yum 是否可用
# python -V