虛擬機軟件:VMware
centos7操作系統(tǒng):CentOS-7-x86_64-DVD-1810
JDK 1.8
hadoop 3.2.0
虛擬機安裝
參考文章centos7安裝手冊
JDK安裝
hadoop3.2.0需要安裝JDK1.8
下載路徑:https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
或者直接使用yum安裝JDK
1丝格、檢查是否安裝
yum list installed | grep java
2撑瞧、檢查發(fā)現(xiàn)已經(jīng)有安裝JDK,如果需要重新安裝需要卸載
yum -y remove java-1.7.0-openjdk*
yum -y remove tzdata-java.noarch
3显蝌、查看yum列表中的JDK
yum search java | grep -i --color jdk
4预伺、安裝需要的jdk版本
yum install -y java-1.8.0-openjdk java-1.8.0-openjdk-devel
5、查看JDK是否安裝成功
java -version
6曼尊、配置環(huán)境變量
ls /usr/lib/jvm
JDK默認安裝路徑/usr/lib/jvm
7酬诀、在/etc/profile文件添加如下命令(profile 為全局環(huán)境信息,如果想在固定用戶下設置jdk環(huán)境變量涩禀, 可以設置~/.bash_profile)
# set java environment
JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.181-7.b13.el7.x86_64
PATH=$PATH:$JAVA_HOME/bin
CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export JAVA_HOME CLASSPATH PATH
8料滥、保存關(guān)閉profile文件,執(zhí)行如下命令生效
source /etc/profile
9艾船、查看JDK變量
echo $JAVA_HOME
echo $PATH
echo $CLASSPATH
配置免密碼登錄
更改主機名
hadoop安裝葵腹,我們這里集群部署高每,需要準備三個虛擬機,分別為node1,node2,node3
為什么需要三個虛擬機践宴?具體三個虛擬機分別是什么角色鲸匿?詳細參考本文最后部分。
三個虛擬機分別的IP地址如下
主機名 | IP地址 |
---|---|
node1 | 192.168.199.220 |
node2 | 192.168.199.221 |
node3 | 192.168.199.222 |
1阻肩、查看當前主機名
hostname
2带欢、更改/etc/sysconfig下的network文件
vi /etc/sysconfig/network
3、配置主機名與IP映射關(guān)系
192.168.199.220 node1
192.168.199.221 node2
192.168.199.222 node3
vi /etc/hosts
4烤惊、重啟虛擬機乔煞,查看主機名是否修改
克隆虛擬機
以上修改主機名為node1;node2\node3需要分別根據(jù)node1虛擬機克隆出來
1柒室、設置node1虛擬機配置(考慮單個主機運行三個虛擬機環(huán)境渡贾,每個虛擬占用最低資源)
2、克隆node2虛擬機
3雄右、啟動node2虛擬機空骚,更改主機名,更改步驟見上部分
4擂仍、查看node2的使用的網(wǎng)卡
ifconfig
5囤屹、更改IP地址(我的網(wǎng)卡名 ifcfg-ens33) 然后保存
vi /etc/sysconfig/network-scripts/ifcfg-ens33
6、重啟服務器查看IP地址及hostname
7逢渔、node3配置與node2方式一致
配置SSH免密碼登錄
主要步驟主要是生成密鑰和復制公鑰
配置node1對node1的免密登錄
1肋坚、登錄node1 生成密鑰,連續(xù)按回車
ssh-keygen
2、執(zhí)行完會在當前目錄生成.ssh文件夾复局,根據(jù)上圖的提示可以看出 (id_rsa. 密鑰) (id_rsa.pub 公鑰)
3冲簿、把公鑰復制到node1\node2\node3;注意node1同樣需要設置
以下設置node1 對node1的免密登錄設置
ssh-copy-id -i ./id_rsa.pub root@node1
上圖輸入指令后亿昏,按默認選擇yes執(zhí)行峦剔,輸入目標node1的root密碼
4、測試免密登錄配置是否成功,如果未提示輸入密碼角钩,則成功
ssh node1
5吝沫、查看node1 下.ssh文件夾,多兩個文件
authorized_keys:存放遠程免密登錄的公鑰,主要通過這個文件記錄多臺機器的公鑰
id_rsa : 生成的私鑰文件
id_rsa.pub : 生成的公鑰文件
know_hosts : 已知的主機公鑰清單
配置node1對node2的免密登錄
1递礼、生成密鑰惨险,如果執(zhí)行過,直接復制公鑰至node2,上一步我已經(jīng)生成公鑰與密鑰脊髓,此時可以直接拷貝公鑰至node2中辫愉,執(zhí)行命令
cd /root/.ssh
ssh-copy-id -i ./id_rsa.pub root@node2
命令輸入后按照順序,回車将硝,輸入yes恭朗,輸入node2的root密碼
2屏镊、測試免密登錄是否成功
ssh node2
3、接下來配置
-- node1=> node3 方法同上
為什么這樣配置服務器痰腮,node1為什么需要免密登錄node2和node3
我們此處只需要配置node1至其他服務器的免密登錄即可而芥。node1為NameNode 作為主節(jié)點和服務節(jié)點,node2作為存儲數(shù)據(jù)的數(shù)據(jù)節(jié)點
以下介紹三個虛擬機服務器的分工與結(jié)構(gòu)
NameNode: 接受客戶端的讀寫服務,比如文件的上傳和下載,保存元數(shù)據(jù)谈秫,比如文件的大小、文件創(chuàng)建時間楞件、文件的擁有者、權(quán)限、路徑和文件名。元數(shù)據(jù)存放在內(nèi)存中趋翻,不會和磁盤發(fā)生交互。
DataNode: 簡稱DN盒蟆,與NameNode對應,主要用來存儲數(shù)據(jù)內(nèi)容师骗,本地磁盤目錄存儲數(shù)據(jù)塊(Block),以文件形式分別存儲在不同的DataNode節(jié)點上历等,同時存儲Block的元數(shù)據(jù)信息文件。
Secondary NameNode:上面提到的NameNode 的元數(shù)據(jù)存儲在內(nèi)存中辟癌,為了保證數(shù)據(jù)不丟失寒屯,需要將數(shù)據(jù)保存起來,這里涉及的文件包括fsimage和edits黍少。fsimage是整個元數(shù)據(jù)文件寡夹,在集群剛開始搭建時是空的,對元數(shù)據(jù)增刪改的操作放到edits文件中厂置。Secondary NameNode完成數(shù)據(jù)的合并操作菩掏,每隔3600秒更新一次
Hadoop 3的HDFS的完全分布式搭建
在搭建Hadoop3的完全分布式之前需要準備三臺機器作為三個節(jié)點,當然我們使用的是三個虛擬機昵济;這里假設三臺服務器的名字為node1智绸、node2、node3访忿,其中node1為NameNode(簡寫NN),node2為Secondary NameNode 簡寫(SN),同時node1瞧栗、node2、node3都設置為DataNode簡寫為(DN),如下表海铆。
最后如果在node1上啟動集群迹恐,需要node1免密碼登錄到node2卧斟、node3上開啟相應的服務殴边,下一章節(jié)說明如何設置:hadoop3.2安裝手冊
node1 | node2 | node3 |
---|---|---|
NN | SN | -- |
DN | DN | DN |