Linux高級教程(下)
四、大數(shù)據(jù)集群服務器搭建
1. ?新增Linux服務器
1.1、克隆虛擬機
學習環(huán)境中,一般使用VMware虛擬機克隆Linux系統(tǒng),用來進行集群服務器的搭建。
VMware支持兩種類型的克?。?完整克隆、鏈接克隆 ?
完整克隆是和原始虛擬機完全獨立的一個復制,它不和原始虛擬機共享任何資源??梢悦撾x原始虛擬機獨立使用。 鏈接克隆需要和原始虛擬機共享同一虛擬磁盤文件,不能脫離原始虛擬機獨立運行。但采用共享磁盤文件卻大大縮短了創(chuàng)建克隆虛擬機的時間,同時還節(jié)省了寶貴的物理磁盤空間。通過鏈接克隆,可以輕松的為不同的任務創(chuàng)建一個獨立的虛擬機。
虛擬機克隆的前置條件:虛擬機處于關閉狀態(tài)。

虛擬機克隆的流程:





1.2、修改虛擬機的硬件配置




1.3、修改虛擬機的網(wǎng)絡配置
修改主機名hostname:
修改IP地址
systemctl restart network ? # 重啟網(wǎng)絡服務
2. ?關閉防火墻
2.1、關閉firewalld
2.2、關閉SElinux
安全增強型 Linux(Security-Enhanced Linux)簡稱 SELinux,它是一個 Linux 內(nèi)核模塊,也是 Linux 的一個安全子系統(tǒng)。
SELinux 主要由美國國家安全局開發(fā)。2.6 及以上版本的 Linux 內(nèi)核都已經(jīng)集成了 SELinux 模塊。
SELinux 主要作用就是最大限度地減小系統(tǒng)中服務進程可訪問的資源(最小權限原則)。
注意需要重啟才能生效。
3. ?修改主機名
使用vi編輯器,修改主機名:
vim /etc/hostname root
重啟后生效
4. ?修改hosts映射
分別編輯每臺虛擬機的hosts文件,在原有內(nèi)容的基礎上,填下以下內(nèi)容:
注意:不要修改文件原來的內(nèi)容,三臺虛擬機的配置內(nèi)容都一樣。
5. ?SSH免密登錄
6. ?時鐘同步



阿里云時鐘同步服務器: ?ntpdate ntp4.aliyun.com
7. ?遠程文件拷貝
遠程文件拷貝命令:scp
scp是 remote file copy program 的縮寫, scp是遠程文件拷貝命令
7.1、從本機拷貝到遠程服務器

準備工作
1、文件
需求: 將本地 01.txt 文件 復制到 192.168.153.102 機器的 /export目錄下??

2、文件夾
語法格式
需求: 將本地 aaa 目錄 復制到 192.168.150.102 機器的 /export 目錄下
7.2、從遠程服務器復制到本機

準備工作
1、文件
語法格式
練習: 將 hadoop02的 111.txt 文件 復制到 hadoop01的 export目錄下
scp root@192.168.100.202:/export/a1/111.txt /export
scp root@hadoop02:/export/a1/222.txt /export
scp hadoop02:/export/a1/222.txt /export
2 目錄
語法格式
scp -r remote_username@remote_ip:remote_folder local_folder
練習: 將hadoop02的 /export/a1/ 目錄 復制到 hadoop01 的 export目錄下
scp -r root@192.168.100.202:/export/a1 /export
scp -r hadoop02:/export/a1 /export
五、Shell編程
1. ?什么是Shell
1.1、簡介
Shell 是一個用 C 語言編寫的程序, 通過 Shell 用戶可以訪問操作系統(tǒng)內(nèi)核服務。 ?
它類似于 DOS 下的 command 和后來的 cmd.exe。 Shell既是一種命令語言,又是一種程序設計語言。 ?
Shell script 是一種為shell編寫的腳本程序。 Shell 編程一般指shell腳本編程,不是指開發(fā)shell自身。
1.2、Shell解釋器
Shell編程跟java、php編程一樣,只要有一個能編寫代碼的文本編輯器和一個能解釋執(zhí)行的腳本解釋器就可以了。 ?
Linux的Shell解釋器種類眾多,一個系統(tǒng)可以存在多個 shell,可以通過cat ?/etc/shells 命令查看系統(tǒng)中安裝的 shell。 ?

bash 由于易用和免費,在日常工作中被廣泛使用。同時, bash 也是大多數(shù)Linux 系統(tǒng)默認的 Shell。
總結:java執(zhí)行需要虛擬機解釋器, 同理shell程序執(zhí)行也需要解析器
2. ?快速入門
2.1、編寫Shell腳本
使用 vi 編輯器新建一個文件hello.sh(擴展名并不影響腳本執(zhí)行)
echo命令 用于向窗口輸出文本。??

給shell程序賦予執(zhí)行權限:??
chmod +x ./hello.sh ?# 使腳本具有執(zhí)行權限 ?

2.2、執(zhí)行Shell腳本
執(zhí)行shell程序:
./hello.sh ?#執(zhí)行腳本 ?

直接寫 hello.sh,linux 系統(tǒng)會去 PATH 里尋找有沒有叫hello.sh的。 ?
用 ./hello.sh 告訴系統(tǒng)說,就在當前目錄找
還可以作為解釋器參數(shù)運行。 直接運行解釋器,其參數(shù)就是 shell 腳本的文件名,如: sh ?/root/shelldemo/hello.sh
在使用解釋器直接執(zhí)行shell程序這種方式來運行腳本,不需要考慮腳本程序的執(zhí)行權限了

小結: 使用vi編輯器,創(chuàng)建shell程序文件。通常使用.sh作為shell程序后綴名。
shell程序的基本格式:
1、指定解釋器信息。 默認:/bin/bash
2、書寫shell程序代碼
3、保存shell程序代碼
4、執(zhí)行shell程序 ? ? 提前:給shell程序授予可執(zhí)行權限 ? ?
第一種:./xxx.sh ? #在當前目錄中執(zhí)行shell程序 ? ?
第二種:/xx/xxx.sh ? #書寫全路徑的shell程序 ? ?
第三種:sh /xx/xxx.sh ?#把shell程序作用/bin/sh解釋器的參數(shù),通過運行解釋器來執(zhí)行shell