Linux操作系統篇
Hadoop通常都是搭建在Linux操作系統之上,故在搭建Hadoop實驗環境之前,首先需要創建Linux系統環境。由於我們只是搭建Hadoop實驗環境,而不是生產環境,因此,為簡單起見,就採用虛擬機VMware+Linux操作系統RedHat(小紅帽)。本文先介紹Linux操作系統的安裝過程,以及Linux操作系統的一些相關基礎知識,後續文章再接著介紹Hadoop實驗環境的搭建及Hadoop等一系列的知識,敬請期待。
1、實驗介質準備
下面列出的軟體包是本文需要進行安裝使用的,其他需要安裝的軟體包會在後續的文章中列出來。在這裡要說明下,這些軟體版本並不是一成不變的,可以根據自己的習慣或偏好,選擇安裝其他的軟體包進行替代。但要注意的是,選擇安裝的軟體包一定要符合自己電腦操作系統的實際情況,避免出現不必要的麻煩。
VMware12 (最常使用的虛擬機)
注意:版本不能太低,否則可能不支持安裝的Linux操作系統;
rhel-server-7.4-x86_64 (RedHat操作系統鏡像文件)
注意:可以根據自己的情況,選擇安裝不同的Linux操作系統;
jdk-8u144-linux-x64.tar.gz (64位的Java開發工具包)
注意:由於Hadoop是使用Java編寫的,必須安裝Java JDK才能運行;
putty及mtputty (遠程登錄工具,mtputty為putty的多窗口插件)
注意:該工具是為了方便遠程登錄Linux系統,可以同時打開多個窗口;
winscp (免費的FTP工具)
注意:該工具是為了方便Windows系統和Linux系統之間上傳/下載文件;
tree-1.6.0-10.el7.x86_64.rpm (tree命令rpm安裝包)
注意:該工具能在Linux系統命令行中以樹形方式顯示目錄結構;
2、Linux操作的安裝
VMWare軟體的安裝過程實在過於簡單,在此就不做介紹了。下面直接介紹虛擬機的創建及Linux操作系統的安裝。
1)文件菜單里點擊新建虛擬機; 2)選擇自定義(高級),點擊下一步;
3)使用默認設置,點擊下一步; 4)選擇稍後安裝操作系統,點擊下一步;
5)選擇客戶機操作系統,點擊下一步;注意:此處一定要勾選Linux(L),並且版本要選擇Red HatEnterprise Linux 7 64位,根據自己的實際情況進行選擇,不能選錯;
6)設置虛擬機名稱和位置,點擊下一步;注意:後續總共需要創建5台虛擬機,虛擬機命名最好容易記憶,且編號連續(例如hadoop221~hadoop225),虛擬機保存位置最好是統一放到同一個目錄下;並且該位置路徑不能包含漢字及空格,否則虛擬機運行可能會出現問題。
7)使用默認設置,點擊下一步;8)使用默認設置,點擊下一步,
注意:此虛擬機的內存使用默認值就夠用;
9)設置網路類型,選擇使用僅主機模式網路,點擊下一步;注意:為了防止後續出現網路上的問題,此處一定設置為使用僅主機模式網路,這樣虛擬機啟動後會自動使用主機網路進行聯網,簡單易行;
10)使用默認選項,點擊下一步; 11)使用默認選項,點擊下一步;
12)選擇創建新虛擬磁碟,點擊下一步;
13)設置最大磁碟大小(GB),可以盡量設置得大一些,點擊下一步;注意:不是設置為多大容量,創建虛擬機時就立刻為其分配該容量的空間,是按實際需要進行分配,並以該值為上限;
14)使用默認設置,點擊下一步; 15)點擊完成,終結虛擬機的安裝;
16)點擊hadoop221,再點擊編輯虛擬機設置;
17)點擊CD/DVD(SATA),選擇使用ISO映像文件,並點擊瀏覽找到對應的Red Hat系統映像文件,如:rhel-server-7.4-x86_64-dvd.iso,點擊確定;
18)點擊開啟此虛擬機,啟動Linux系統的安裝過程;19)選擇第一個選項,並點擊回車鍵;
20)使用默認選項,點擊Continue;
21)點擊DATE & TIME,選擇設置時區,設置完成後點擊Done,注意:中國時區只有上海一個選項;
22)回到如下圖界面,配置安裝選項,結束後點擊Begin Installation;注意:進入SOFTWARE SELECTION選項後需要先勾選上Development Tools,因為這樣安裝時會自動安裝gcc編譯器,後續安裝的Redis是使用c語言編寫,需要使用到gcc編譯器,然後根據自己的情況決定是否勾選上」Server with GUI」安裝圖形界面的Linux系統,但其實用不到;進入INSTALLATION DESTINATION選項中,選擇先前創建好的硬碟;為了防止出現其他異常情況,需要禁用KUDUMP(去掉勾選Enable kdump)和關閉SECURITY POLICY安全策略(關閉Apply security policy開關按鈕);
23)進入NETWORK & HOST NAME頁面配置網路和主機名,配置結束後點擊Done返回到該界面,再點擊Begin Installation執行安裝過程;注意:首先需要將Ethernet(ens33)網卡開關打開,然後在Host name中輸入對應的主機名,如hadoop221,並點擊Apply使用;點擊Configure進入配置IP地址,在General下勾選上Automaticallyconnect to this network when it is available,在IPv4Settings下點擊Add配置IP地址,設置該IP地址之前,到Windows命令行下查看VMnet1的IP地址,如:192.168.12.1,這裡配置的IP地址需要跟VMnet1在同一個網段,否則Windows系統無法和Linux系統進行通信;配置IP為192.168.12.221,子網掩碼為255.255.255.0;同時在Method選項中選擇Manual;
24)點擊「ROOT PASSWORD」,設置root用戶的密碼,注意:後續都使用root用戶,密碼就簡單設置為root;
25)點擊Reboot,重啟系統,輸入用戶名:root,輸入密碼:root,完成安裝嚮導;
然後,按照上述安裝方式,再創建另外四台虛擬機,並安裝好Linux操作系統(注意:虛擬機命名為hadoop222~ hadoop225,IP地址配置為192.168.12.222~192.168.12.225,其他配置均一致)。
3、Linux操作系統基礎
Linux是一個自由、免費且源碼開放的操作系統,它是開源軟體中最著名的例子,其主要目的是為了建立不受任何商品化軟體版權制約的,全世界都能使用的類Unix兼容產品。Linux最初是由芬蘭赫爾辛基大學學生Linus Torvalds設計Linux系統核心,後來經過眾多自由軟體愛好者的共同努力,逐漸發展壯大,在不到三年的時間裡就發展成為了一個功能完善、穩定可靠的操作系統。總體來說,Linux操作系統具有如下的特點:開放性、多用戶、多任務、豐富的網路功能、可靠的系統安全、良好的可移植性、良好的用戶界面(包括命令界面和圖形界面)、出色的速度/性能以及標準兼容性。
A、Linux操作系統的體系結構
Linux操作系統一般有四個主要部分:內核、shell、文件系統和應用程序。內核、shell和文件系統一起構成了基本的操作系統結構,它們使得用戶可以運行程序、管理文件並使用系統。內核是操作系統的核心,具有很多最基本功能,它負責管理系統的進程、內存、設備驅動程序、文件和網路系統,決定著系統的性能和穩定性;shell是系統的用戶界面,提供了用戶與內核進行交互操作的一種介面,它接收用戶輸入的命令並把它送入內核去執行,是一種命令解釋器;文件系統是文件存放在磁碟等存儲設備上的組織方法,Linux系統能支持多種目前流行的文件系統,如ETX2、ETX3、FAT、FAT32、VFAT以及ISO9660等。Linux操作系統的部分層次結構如下圖所示:
B、Linux操作系統的目錄結構
文件結構是文件存放在磁碟等存儲設備上的組織方法,主要體現為對文件和目錄的組織。目錄提供了管理文件的一個方便有效的途徑,Linux使用標準的目錄結構,在安裝的時候,就已經為用戶創建了文件系統和完整而固定的目錄組織形式,並指定了各個目錄的作用和其中的文件類型。
Linux操作系統採用的是樹型購,最上層是根目錄,其它的所有目錄都是從根目錄出發而生成的。其目錄結構如下圖所示:
home存放所有用戶文件的根目錄
存放二進位可執行文件(ls,cat,mkdir等)
proc虛擬文件系統,存放當前內存的映射
usr用於存放系統應用程序,比較重要的目錄/usr/local 本地管理員軟體安裝目錄
boot存放用於系統引導時使用的各種文件
lib存放跟文件系統中的程序運行所需要的共享庫及內核模塊
dev用於存放設備文件
etc存放系統配置文件
var用於存放運行時需要改變數據的文件
tmp用於存放各種臨時文件
mnt系統管理員安裝臨時文件系統的安裝點
root超級用戶目錄
opt額外安裝的可選應用程序包所放置的位置
C、目錄/文件操作命令介紹
1)ls 顯示文件和目錄列表
ls -l—— 列出文件的詳細信息,等同於ll命令;
ls -a ——列出當前目錄下所有文件,包含隱藏文件和隱藏目錄,帶.的就是隱藏的,如隱藏文件:/root/.bash_profile,該文件用於設置root用戶下的環境變數;隱藏目錄: /root/.ssh,該目錄用於保存root用戶的公鑰和私鑰,可用於免密碼登錄(hadoop、spark需要配置免密碼登錄)。
類比HDFS上的查看命令:hdfs dfs -ls /
2)mkdir 創建目錄
mkdir –p—— 父目錄不存在的情況下,先創建父目錄,再生成該目錄
注意:為了後續文章描述的方便,在此處做出如下約定,
mkdir /root/training—— 創建安裝目錄,專門用於安裝軟體的目標目錄;
mkdir /root/tools—— 軟體介質目錄,專門用於存放需要安裝的軟體介質
類比HDFS上的創建目錄命令:hdfs dfs -mkdir /data
3)cd 切換目錄
使用方法:cd 路徑 如:cd ~/root/tools
注意:~代表當前用戶(即root用戶)的家目錄,等同於/root
.代表當前目錄;..代表上級目錄
4)touch 生成一個空文件
echo生成一個帶內容的文件,使用方法為:echo 字元內容 > 文件名
如:echo helloworld > a.txt
touch命令更常用的方式是用它查看環境變數的內容,如:echo $JAVA_HOME
5)cat、tac 顯示文本文件內容
cat是從第一行開始顯示;
tac是從最後一行開始顯示;
more命令:分頁顯示文件內容,如:more data.txt
類比HDFS上查看文件內容的命令:hdfs dfs -cat /data/data.txt
6)cp 複製文件或目錄
基本拷貝:cp data.txt a.txt
scp是在網路上進行拷貝的命令(安裝Hadoop、Spark、Storm全分布環境的時候需要用到)
如:scp /root/training/hadoop2.7.3 root@hadoop222:/root/training
類比HDFS上拷貝文件的命令:hdfs dfs -cp /data/data.txt /data/bbb.txt
7)rm 刪除文件
rm -r ——同時刪除該目錄下的所有文件
rm -f ——強制刪除文件或目錄
如:rm -rfa.txt;rm –rf /root/data
類比HDFS上刪除文件/目錄的命令: hdfs dfs -rmr /data
8)tar命令:打包壓縮命令
Linux上常用軟體安裝介質的後綴為.tar.gz格式,如:hadoop-2.7.3.tar.gz,
jdk-8u144-linux-x64.tar.gz
使用舉例:tar -zxvf hadoop-2.7.3.tar.gz –C /root/training
-x:解壓;-c:建立壓縮文檔;-t:查看內容;
-u:更新源壓縮包中的文件;-r:向壓縮歸檔文件末尾追加文件。
注意:這五個是獨立的命令參數,壓縮/解壓都要用到其中一個,可以和別的命令連用但只能用其中的一個。
-v:顯示所有過程;-z:有gzip屬性的,即gz;
-f:使用文件名字,是最後一個參數,後面只能接文件名;
-C:dir參數,將tar的工作目錄進行切換,也就是將文件解壓到指定目錄。
9)kill 命令
kill命令最常用的參數為-9,用於殺死指定的進程,如:kill -9 PID
另外一個參數:kill -3 PID,對於Java程序來說,可以列印出其Thread Dump信息(分析死鎖、性能瓶頸非常管用)
10)find 在文件系統中查找指定的文件
該命令後面的參數為-name 文件名
如: find . -name *.txt,.表示當前目錄和子目錄,*為通配符
11)man命令幫助信息查詢
列印出相應命令的使用幫助信息
如:man ls,man touch
12)Linux通道
簡單地說,一個通道接受一個工具軟體的輸出,然後把那個輸出輸入到其他工具軟體。使用Unix/Linux的辭彙,這個通道接受一個過程的標準輸出,並把這個標準的輸出作為另一個過程的標準輸入。如果沒有重新定向這個輸出,這個輸出就在屏幕上顯示出來。使用一個通道,可以重新定向這個輸出,這樣它就變成了另一個工具軟體的標準輸入。
簡單概括,該命令的使用格式為:命令1 | 命令2,把命令1的輸出作為命令2的輸入
如:cat data.txt| more
grep best /home/* |more
ps -ef——查看所有的進程
ps -ef | grep java——把所有的進程進行過濾,只查看java的進程
13)RPM軟體包管理
RPM是RedHat Package Manager(RedHat軟體包管理工具)的縮寫,這一文件格式名稱上雖然打上了RedHat的標誌,但是其原始設計理念是開放式的,現在包括OpenLinux、SUSE以及Turbo Linux等Linux的髮型版本都有採用,可以算是公認的行業標準了。
RPM文件在Linux系統中的安裝最為簡便,作為一個軟體包管理工具,RPM管理著系統已安裝的所有RPM程序組件的資料,也可以使用RPM來卸載相關的應用程序。
-i:安裝應用程序
-e:卸載應用程序
-vh:顯示安裝進度
-U:升級軟體包
-qa:顯示所有已安裝軟體包
-qa | grep:檢測是否已安裝某軟體包
如:rpm –qa | grep tree ,檢測是否已安裝tree命令工具
14)其他常用命令
mv—— 移動文件或目錄,也可以對文件或目錄進行改名
如:mv/root/data/a.txt /root/temp/
grep—— 在指定的文本文件中查找指定的字元串
如:grep best/root/book.txt
more,less —— 分頁顯示文本文件內容
head,tail —— 分別顯示文件開頭/結尾內容
ln—— 建立鏈接文件
假如當前所在目錄為/root/local,而需要經常訪問/usr/local/linux/work,那麼就可以在/root/local下建立一個鏈接文件linkwork,建立兩者之間的鏈接
如:ln –s /usr/local/linux/work /root/local/linkwork
wc—— 統計文本文檔的行數,字數,字元數
pwd—— 顯示當前工作目錄
clear—— 清屏,即將屏幕顯示的內容清空
shutdowm—— 系統關機
-r:關機後重啟; -h:關機後不重新啟動; -now:立即關機
halt—— 關機後關閉電源
reboot—— 重新啟動
D、vi編輯器介紹
vi編輯器的命令格式為:vi 文件名,如果文件存在,就打開該文件;如果文件不存在,就創建該文件並打開。
vi編輯器有三種運行模式,如下:
編輯模式(默認進入便是該模式):等待編輯命令的輸入;在編輯模式下,按i 鍵就進入到插入模式,可輸入文本信息;在編輯模式下,輸入:就進入到命令模式;在編輯模式下,按/鍵就進入到搜索模式,可搜索相應的字元串;
插入模式:在該模式下,可以輸入文本信息,完成後按esc鍵,則回到編輯模式;
命令模式:在該模式下,可以使用如下這些命令:
w ——保存;
q—— 退出;
wq—— 保存退出;
!—— 在命令後加上! ,表示強制執行;
set number—— 打開行號;
set nonumber—— 關閉行號;
set wrap—— 換行顯示;
set nowrap—— 不換行顯示
E.Linux系統管理
stat—— 顯示指定文件的相關信息,比ls命令顯示的內容更詳細
如:stat /root/tools/hadoop-2.7.3.tar.gz
who—— 顯示當前在線登錄用戶
hostname—— 顯示主機名稱
uname—— 顯示系統信息
df—— 顯示文件系統磁碟空間的使用情況
top—— 顯示當前系統中耗費資源最多的進程
如:top –d 2,每兩秒鐘更新一次top,觀察整體信息
ps—— 顯示當前時刻進程的狀態
如:ps –ef使用標準格式顯示每個進程的狀態信息
du—— 顯示指定文件(目錄)已使用的磁碟空間的總量(磁碟塊數)
free—— 顯示當前內存和交換空間的使用情況
ifconfig—— 顯示網路介面信息,查看網卡IP地址等信息經常用到
ping—— 測試網路的連通性
如:ping 192.168.12.222
netstat—— 顯示網路連接狀態信息
F、用戶和組賬戶管理
Linux操作系統是一個多用戶操作系統,它允許多用戶同時登錄到系統上並使用資源,系統會根據賬戶來區分每個用戶的文件、進程、任務和工作環境,使得每個用戶工作都不受干擾。
用戶賬戶
普通用戶賬戶:普通用戶在系統上的任務是進行普通操作
超級用戶賬戶:管理員在系統上的任務是對普通用戶和整個系統進行管理,對系統具有絕對的控制權,能夠對系統進行一切操作
組賬戶
私有組:當創建一個用戶時沒有指定屬於哪個組,Linux就會建立一個與用戶同名的私有組,此私有組只含有該用戶
標準組:當創建一個用戶時可以選定一個標準組,如果一個用戶同時屬於多個組時,登錄後所屬的組為主組,其他的為附加組
賬戶系統文件(/etc/passwd)
每行定義一個用戶賬戶,此文件對所有用戶可讀,每行賬戶包含如下信息:
用戶名:口令:用戶標識號:組標識號:注釋:宿主目錄:命令解釋器
如:root:x:0:0:RedHat Linux:/root:/bin/bash
口令是x,說明用戶的口令是被/etc/shadow文件保護的
用戶標識號,系統內唯一,root用戶的UID為0,普通用戶從500開始,1-499是系統的標準賬戶
宿主目錄,用戶登錄系統後所進入的目錄
命令解釋器,指定該用戶使用的shell,默認的是/bin/bash
賬戶系統文件(/etc/shadow)
為了增加系統的安全性,用戶口令通常用shadow passwords進行保護,只有root可讀,每行包含如下信息:
用戶名:口令:最後一次修改時間:最小時間間隔:最大時間間隔:警告時間:不活動時間:失效時間:標誌
最後一次修改時間,從1970-1-1起,到用戶最後一次更改口令的天數
最小時間間隔,從1970-1-1起,到用戶可以更改口令的天數
最大時間間隔,從1970-1-1起,必須更改的口令天數
警告時間,在口令過期之前幾天通知
不活動時間,在用戶口令過期後到禁用賬戶的天數
賬戶系統文件(/etc/group)
將用戶進行分組時,Linux對用戶進行管理及控制訪問許可權的一種手段,一個組中可以有多個用戶,一個用戶可以同時屬於多個組,該文件對所有用戶可讀。
格式為:組名:組口令:組標識號:組內用戶列表
如:root:x:0:root daemon:x:1: bin:x:2: sys:x:3:
賬戶系統文件(/etc/gshadow)
該文件用於定義用戶組口令、組管理員等信息,是/etc/group的加密資訊文件,比如用戶組(Group)管理密碼就是存放在這個文件中,只有root用戶可讀。
格式為:組名:組口令:組管理者:組內用戶列表
如:root:::root bin:::root,bin,daemon
管理用戶和組常用命令
su用戶名 —— 切換用戶賬戶,如su root,su - root
id用戶名 —— 顯示用戶的UID,GID信息
whoami—— 顯示當前用戶名稱
groups—— 顯示用戶所屬組
passwd用戶賬戶名 —— 設置用戶口令
passwd –d用戶賬戶名 —— 刪除賬戶口令
useradd用戶名—— 新增用戶
useradd –m用戶名 —— 參數-m用於設定系統添加賬戶時自動建立用戶根目錄
G、Linux許可權管理
目錄和文件可擁有:讀r、寫w以及執行x的許可權,可使用ls –l命令查看當前目錄下文件及目錄的許可權信息。
許可權對文件的作用
r:讀取文件內容(可用於cat、more、head、tail等命令)
w:編輯、新增、修改文件內容(可用於vi、echo等命令),但不包含刪除文件
x:可執行
對於文件來說,最高許可權是執行許可權(x),所以文件要盡量少賦予執行許可權。
許可權對目錄的作用
r:可以查看目錄下所有的文件(可用於ls命令)
w:具有修改目錄結構的許可權,如新建文件和目錄,刪除此目錄下文件和目錄,重命名此目錄下文件和目錄,剪切此目錄下文件或目錄,(可用於touch、rm、mv、cp等命令)
x:可以進入目錄(用於cd命令)
對目錄來說,最高許可權是寫許可權(w),所以目錄要盡量少賦予寫許可權。
舉例:
在上圖中可以看到,每個文件最前面有一組字元,如drwxr-xr-x,總共有十位,第一位是標識位,用於標識是目錄(d)還是文件(-);後面九位每三位為一組,前三位代表當前用戶的許可權;中間三位代表同組用戶的許可權;最後三位代表其他用戶的許可權。每一組中的三位依次代表可讀、可寫、可執行的許可權,如果擁有相應的許可權,對應的那位就賦值為1;否則,就賦值為0,這三位都是二進位位,也可轉換為十進位數。
比如data.txt文件的許可權為-rwxrw-r--,表示該文件是文件類型,當前用戶root對該文件擁有可讀可寫可執行的許可權;同組用戶對該文件擁有可讀可寫的許可權;其他用戶對該文件只擁用可讀許可權。可以使用chmod命令對data.txt文件的許可權進行修改,從上圖可以看到,運行chmod 764 data.txt後,data.txt文件的許可權變為了-rwxrw-r--。
類比HDFS上修改文件許可權的命令:hdfs dfs –chmod764 /data/data.txt
4、軟體安裝和配置
A、安裝putty和winscp
putty(包括mtputty)遠程登錄工具和winscp FTP工具都是windows程序,跟安裝普通的軟體沒有區別,這裡就不再講述其安裝過程。注意,在安裝其他Linux軟體包前,需要先安裝這兩個程序,以方便從windows端上傳相應的軟體包到Linux系統中。
B、安裝Java JDK
首先,使用windows上安裝的winscp工具將JDK安裝包、tree安裝包一併上傳到Linux系統/root/tools目錄下,然後進入到該目錄下,使用tar命令對jdk軟體包進行解壓即可,如下:
tar -zxvf jdk-8u144-linux-x64.tar.gz -C ~/training/
C、設置JDK環境變數
使用命令vi /root/.bash_profile,編輯該隱藏文件.bash_profile,在文件末尾添加如下幾行文字:
JAVA_HOME=/root/training/jdk1.8.0_144
export JAVA_HOME
PATH=$JAVA_HOME/bin:$PATH
export PATH
注意:保存退出後,運行命令source /root/.bash_profile使環境變數生效;
然後,運行命令java –version檢驗java環境變數是否配置生效,如下:
C、安裝tree命令工具
在/tools/目錄下直接使用命令rpm -ivh tree-1.6.0-10.el7.x86_64.rpm安裝即可。使用方法為:tree –d –L 數字
-d:只顯示目錄,可省略,則既顯示目錄又顯示文件
-L:表示最多顯示的目錄層級數目
如:[root@hadoop221 jdk1.8.0_144]# tree -d -L 2
Linux操作系統博大精深,本文只對將來Hadoop學習過程中可能會使用到的Linux知識點進行了簡單介紹,具體內容可以上網進行更深入的學習,在此就不再過多贅述,敬請期待下篇文章的更新!
參考資料:
——《百度百科》
——《CSDN博客》
——《潭州大叔就課程課件》
TAG:程序猿的修身養性 |