從頭學習大數據培訓課程 Hadoop 系列教程(二)批量操作多台伺服器
1. 每個虛擬機設置靜態IP
cd /etc/sysconfig/network-scripts/
ifconfig/ip add 查看網卡的硬體名稱和基本信息記下這個UUID
以下內容回帖刷新可見………………
網卡配置例子
TYPE="Ethernet"BOOTPROTO="static"IPADDR="192.168.137.190"NETMASK="255.255.255.0"GATEWAY="192.168.137.1"DNS="192.168.137.1"NM_CONTROLLED="no"DEFROUTE="yes"
PEERDNS="yes"PEERROUTES="yes"IPV4_FAILURE_FATAL="no"IPV6INIT="yes"IPV6_AUTOCONF="yes"IPV6_DEFROUTE="yes"IPV6_PEERDNS="yes"IPV6_PEERROUTES="yes"IPV6_FAILURE_FATAL="no"NAME="eth0"
DEVICE="eth0"UUID="ec7dbe05-3175-4f67-9a43-24b144ab51b5"ONBOOT="yes"VIM使用,按i進入編輯模式,按gg到文件的頂部,shift+g到文件的底部,dd刪除游標所以行,u等於word里的ctrl+z,ctrl+r等於word里的ctrl+y
vim /etc/sysconfig/network-scripts/ifcfg-<網卡的硬體名稱>配置完的網卡文件
查看結果
原來的
注意修改完文件之後用systemctl restart network.service重啟網路服務,當前的ssh就連接不上了,是因為網路IP被改變成你自己設置的靜態IP了
修改完成再連接,用ip add查看修改完成的結果
如果上不了網執行以下操作。
cat /etc/resolv.conf 查看nameserver是否被設置正確systemctl stop NetworkManager.service 停止NetworkManager服務
systemctl disable NetworkManager.service 並設置成開機不啟動systemctl restart network.service 之後重啟網路服務
vim /etc/resolv.conf 修改文件,如果不存在nameserver就在文件下面添加,如果存在就修改,把nameserver 設置成自己對應的DNS2. 修改每個機器的主機名
修改另外3台的主機名
hostnamectl set-hostname s1.hadoop3. 配置HOSTS文件
修改/etc/hosts文件
vim /etc/hosts,把剛才配置的固定IP加到文件里把其他3台機器的hosts文件也修改成上面這個樣子
4. 批量執行與批量分髮腳本使用
首先切換到hadoop用戶
ssh到別一台機器上執行命令全,例子:ssh hadoop@s1.hadoop hostnamescp一個文件到別一台機器上,例子:scp /home/hadoop/1 hadoop@s1.hadoop:/home/hadoop/把hadoop_op1.zip文件用rz命令上傳到nn1.hadoop機器上一般先切換到當前使用用戶的home目錄下
cd/cd ~unzip hadoop_op1.zip
解壓chmod -R 777 ./hadoop_op1 修改解壓之後的文件許可權測試批量SSH命令
./ssh_all.sh hostname測試批量傳文件
首先在/home/hadoop/up/目錄下創建個測試文件,這裡的文件是「1」./scp_all.sh ./up/1 /tmp/可以用./ssh_all.sh cat /tmp/1用這個命令去驗證
5. 單機hadoop用戶加上免密碼切換root用戶
1).sed -i s/#authttrequiredtpam_wheel.so/authttrequiredtpam_wheel.so/g /etc/pam.d/su
修改/etc/pam.d/su文件,將「#authttrequiredtpam_wheel.so」,替換成「authttrequiredtpam_wheel.so」2).cp /etc/login.defs /etc/login.defs_back 先備份一個
echo "SU_WHEEL_ONLY yes" >> /etc/login.defs 把「SU_WHEEL_ONLY yes」字元串追加到/etc/login.defs文件底部tail /etc/login.defs 從文件底部查看3).usermod -a -G wheel hadoop 把hadoop用戶加到wheel組裡
4).groupmems -g wheel -l 使用這個命令查看wheel組裡是否有hadoop用戶5).新建一個hainiu用戶驗證一下
輸入密碼之後提示無SU許可權,即使密碼正確也不好使
6).sed -i s/#authttsufficienttpam_wheel.so/authttsufficienttpam_wheel.so/g /etc/pam.d/su
修改/etc/pam.d/su文件將字元串「#authttsufficienttpam_wheel.so」替換成「authttsufficienttpam_wheel.so」7).驗證免密碼切換到root用戶
6. 給每個機器的hadoop用戶加上免密碼切換root用戶
配置好每個機器的root ssh免密鑰登錄
然後在nn1.hadoop機器上切換到root用戶把批量執行腳本用rz上傳到root用戶的根目錄下用unzip hadoop_op1.zip把文件解壓出來刪除沒用的只留下以下有用的,並對有用的腳本加上可執行許可權chmod -R +x ~/hadoop_op1修改腳本 vim ssh_all.sh,將使用用戶修改為root用戶
修改腳本vim scp_all.sh,將使用用戶修改為root用戶
註:在Linux中wheel組就類似於一個管理員的組。將普通用戶加入到wheel組,被加入的這個普通用戶就成了管理員組內的用戶
剝奪普通用戶切換root用戶用ssh_all.sh腳本批量修改 /etc/pam.d/su 文件,找到auth required pam_wheel.so use_uid 這一行,將行首的「#」去掉。~/hadoop_op1/ssh_all.sh sed -i s/#authttrequiredtpam_wheel.so/authttrequiredtpam_wheel.so/g /etc/pam.d/su使用~/hadoop_op1/ssh_all.sh head /etc/pam.d/su 查看每個機器上是否修改成功修改 /etc/login.defs 文件,在最後一行增加「SU_WHEEL_ONLY yes」語句。
~/hadoop_op1/ssh_all.sh "echo "SU_WHEEL_ONLY yes" >> /etc/login.defs"使用~/hadoop_op1/ssh_all.sh tail /etc/login.defs 查看每個機器上是否修改成功指定某用戶能切換到root用戶,就將他加到wheel組裡
~/hadoop_op1/ssh_all.sh usermod -a -G wheel hadoop從wheel組移出就不能切換到root用戶了~/hadoop_op1/ssh_all.sh gpasswd -d hadoop wheel查看wheel組下的用戶,也就是能切換到root的用戶有那些使用~/hadoop_op1/ssh_all.sh groupmems -g wheel -l查看每個機器上是否添加成功解釋:如果換成一個不屬於wheel組的用戶時,執行了su命令後,即使輸入了正確的root密碼,也無法登錄為root用戶--普通用戶登錄為root用戶的許可權被完全剝奪了
切換到root用戶時免密登錄修改 /etc/pam.d/su 文件,找到auth sufficient pam_wheel.so trust use_uid 這一行,將行首的「#」去掉。~/hadoop_op1/ssh_all.sh sed -i s/#authttsufficienttpam_wheel.so/authttsufficienttpam_wheel.so/g /etc/pam.d/su使用~/hadoop_op1/ssh_all.sh head /etc/pam.d/su查看每個機器上是否修改成功7. 在hadoop用戶狀態下,如何在每個機器上使用root許可權去執行命令
切換到hadoop用戶下,並用rz上傳exe.sh腳本
然後使用~/hadoop_op1/scp_all.sh ~/hadoop_op1/exe.sh /home/hadoop/把exe.sh複製到每個機器上然後使用~/hadoop_op1/ssh_all.sh ls /home/hadoop/每個機器上文件是否被分發成功使用vim將ssh_root.sh里的ssh用戶更改成hadoop
然後使用ssh_root.sh測試一下每台機器是否能從hadoop用戶切換到root許可權
~/hadoop_op1/ssh_root.sh groups,每台機器切換到root用戶並列印root用戶所屬組8. 修改每個機器的HOSTS文件
在nn1.hadoop機器上使用hadoop用戶將/etc/hosts文件拷貝到/tmp目錄下
cp /etc/hosts /tmp使用~/hadoop_op1/scp_all.sh /tmp/hosts /tmp/,把nn1.hadoop上配置好的host拷貝到每台機器的/tmp目錄下
使用~/hadoop_op1/scp_all.sh ~/hadoop_op1/up/hosts_op.sh /tmp/,把hosts_op.sh腳本拷貝到每台機器的/tmp目錄下使用~/hadoop_op1/ssh_all.sh ls -all /tmp/確認這兩個文件是否拷貝成功,並查看hosts_op.sh腳本是否擁有執行許可權使用 ~/hadoop_op1/ssh_all.sh mv /tmp/hosts /tmp/hosts_log,把每台機器上的tmp目錄下的hosts文件重命名為hosts_log
使用 ~/hadoop_op1/ssh_all.sh ls /tmp/ 查看是否重命名成功使用~/hadoop_op1/ssh_root.sh /tmp/hosts_op.sh,把每個機器上的hosts文件進行配置好的,也就是hosts_log的內容
使用~/hadoop_op1/ssh_root.sh cat /etc/hosts,查看每台機器上的hosts文件是否修改成功
也可以使用~/hadoop_op1/ssh_all.sh ping -c 1 nn1.hadoop,查看每台機器是否能ping通nn1.hadoop,如果能ping通表示hosts修改成功並生效
原文由海牛部落大數據社區提供
推薦閱讀:
※1秒1000並發 高並發需要什麼樣的伺服器?
※阿里雲跟微軟Azure 誰勝誰負?
※如何用雲伺服器建立一個minecraft伺服器?
※相對於Linux,Windows Server存在的意義是什麼?
※像 Apache、Nginx 這些網頁伺服器的工作流程是怎樣的?