從頭學習大數據培訓課程 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 設置成自己對應的DNS

2. 修改每個機器的主機名

修改另外3台的主機名

hostnamectl set-hostname s1.hadoop

3. 配置HOSTS文件

修改/etc/hosts文件

vim /etc/hosts,把剛才配置的固定IP加到文件里

把其他3台機器的hosts文件也修改成上面這個樣子

4. 批量執行與批量分髮腳本使用

首先切換到hadoop用戶

ssh到別一台機器上執行命令全,例子:ssh hadoop@s1.hadoop hostname

scp一個文件到別一台機器上,例子: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 這些網頁伺服器的工作流程是怎樣的?

TAG:Hadoop | 大数据 | 服务器配置 |