一、在操作前啦鸣,先明白幾個(gè)概念,避免操作linux的時(shí)候混淆
概念一:命名
機(jī)器名 對(duì)機(jī)器起的名字
用戶名username 機(jī)器上登陸用戶的名字
主機(jī)名hostname 為了方便通過(guò)網(wǎng)絡(luò)訪問(wèn)對(duì)應(yīng)機(jī)器来氧,對(duì)IP地址取的別名
-
在后面的環(huán)境搭建過(guò)程中有三臺(tái)機(jī)器诫给,為了方便,在命名上啦扬,配置如下
機(jī)器列表 機(jī)器名 用戶名 主機(jī)名 機(jī)器1(對(duì)集群做一些臨時(shí)操作可能會(huì)用到) worker1 root(最高權(quán)限用戶)
user(普通用戶)worker1 機(jī)器2 worker2 root(最高權(quán)限用戶)
user(普通用戶)worker2 機(jī)器3 worker3 root(最高權(quán)限用戶)
user(普通用戶)worker3
概念二:用戶
- 一臺(tái)機(jī)器可以有很多個(gè)用戶蝙搔,但是只有一個(gè)權(quán)限最高的用戶,每個(gè)用戶都有一個(gè)用戶文件夾作為<span style="color:red">用戶根目錄(~/)</span>存放數(shù)據(jù)考传,<strong>所以不同用戶登陸時(shí)候吃型,訪問(wèn)到的<span style="color:red">用戶根目錄(~/)</span>是不同的</strong>
概念三:存儲(chǔ)
- 一般來(lái)講不分盤,只有一個(gè)盤(當(dāng)然你也可以進(jìn)行分區(qū)僚楞,只不過(guò)沒(méi)必要)勤晚,用戶僅僅是機(jī)器的使用者,只有使用權(quán)泉褐,只有root用戶才有操作機(jī)器所有功能赐写、目錄的能力,相當(dāng)于占有權(quán)膜赃。Windows實(shí)際上也類似挺邀,只是我們平時(shí)使用的時(shí)候基本一人一個(gè)電腦,磁盤被分了很多個(gè),而且創(chuàng)建的用戶基本都只有一個(gè)而且是管理員權(quán)限端铛,所以有一種我的電腦任我操作的感覺(jué)泣矛。
概念四:需要了解的部分目錄結(jié)構(gòu)
目錄 | 目錄路徑 | 操作權(quán)限 |
---|---|---|
電腦根目錄 | / | root權(quán)限 |
root用戶主目錄 | /root | root權(quán)限 |
普通用戶們所在位置目錄 | /home | root權(quán)限 |
普通用戶1主目錄 | /home/普通用戶1 | 普通用戶1權(quán)限 |
-
root身份的時(shí)候:
目錄 目錄路徑 root用戶主目錄 /root 或 ~/ 普通用戶1主目錄 /home/普通用戶1/ -
普通用戶1身份的時(shí)候:
目錄 目錄路徑 普通用戶1主目錄: ~/ 或 /home/普通用戶1/ 無(wú)權(quán)操作超過(guò)普通用戶1主目錄以上級(jí)別的目錄內(nèi)容或其他用戶主目錄內(nèi)容
二、下面開(kāi)始搭建環(huán)境
(虛擬機(jī)已裝好或者已經(jīng)擁有幾臺(tái)可以使用的centos7系統(tǒng)的機(jī)器)
2.1 網(wǎng)絡(luò)配置【在每臺(tái)機(jī)器都要操作】
-
手動(dòng)更改ip地址(在設(shè)置里面圖形化操作)假設(shè)有三臺(tái)機(jī)器更改ip為
機(jī)器 ip worker1 192.168.150.100 worker2 192.168.150.101 worker3 192.168.150.102 -
以root權(quán)限進(jìn)行各類操作
-
進(jìn)入root用戶身份
$ su – root//(回車后要輸入root密碼禾蚕,在安裝時(shí)候設(shè)置的root密碼)
-
用文檔編輯器編輯網(wǎng)絡(luò)配置您朽,打開(kāi)文檔進(jìn)行編輯
$ gedit /etc/sysconfig/network/ //在里面添加上如下內(nèi)容(表示使用網(wǎng)絡(luò),主機(jī)名改為對(duì)應(yīng)機(jī)器的主機(jī)名换淆,比如在worker1上操作就改為worker1) NETWORKING=yes HOSTNAME=master //保存并關(guān)閉
-
讓配置生效并修改hostname:
$ hostname worker1(每臺(tái)機(jī)器分別改為對(duì)應(yīng)主機(jī)名)
-
2.2 關(guān)閉防火墻【<span style="color:red">在每臺(tái)機(jī)器都要操作</span>】
(為了方便才關(guān)閉哗总,如果是公司生產(chǎn)環(huán)境,建議將特定端口打開(kāi)而不要關(guān)閉防火墻)
-
查看防火墻狀態(tài):
firewall-cmd --state
-
關(guān)閉防火墻:
systemctl stop firewalld.service #停止firewall
-
禁止firewall開(kāi)機(jī)啟動(dòng):
systemctl disable firewalld.service (禁用防火墻)
(所有機(jī)器都要關(guān)閉倍试、禁用)
2.3 配置host【<span style="color:red">在每臺(tái)機(jī)器都要操作</span>】
-
打開(kāi)host文件進(jìn)行編輯
$ gedit /etc/hosts
-
在里面添加如下內(nèi)容:
192.168.150.100 worker1 192.168.150.101 worker2 192.168.150.102 worker3
2.4 同步時(shí)鐘(可以忽略讯屈,為了防止機(jī)器們協(xié)同工作時(shí)的時(shí)間記錄不匹配所產(chǎn)生的錯(cuò)誤,一般安裝虛擬機(jī)的時(shí)候或者聯(lián)網(wǎng)的時(shí)候會(huì)自動(dòng)同步時(shí)間县习,所以一般不需要手動(dòng)同步了)【<span style="color:red">在每臺(tái)機(jī)器都要操作</span>】
-
用vi編輯配置
$crontab -e //進(jìn)入vi編輯模式 //按i鍵(代表insert)進(jìn)如輸入模式
-
輸入下面代碼
0 1 * * * /usr/sbin/ntpdate cn.pool.ntp.org
-
結(jié)束編輯
//按esc鍵退出輸入模式 //輸入 :wq(冒號(hào)wq)代表保存并退出
-
然后進(jìn)行同步
$ /usr/sbin/ntpdate cn.pool.ntp.org
2.5 配置免密碼登陸(user用戶登陸各臺(tái)worker機(jī)器不用輸入密碼)
(方便在后面開(kāi)啟hadoop服務(wù)的時(shí)候省的輸入多次密碼造成阻礙)
所有機(jī)器都要開(kāi)啟ssh證書登陸功能
2.5.1 查看ssh服務(wù)狀態(tài)耻煤、建立目錄
檢測(cè)ssh服務(wù)狀態(tài)
$ sudo service sshd status-
在所有機(jī)器上,以普通用戶身份查看根目錄下是否有 .ssh文件夾
-
進(jìn)入普通用戶根目錄
$ cd ~/
-
列出目錄下所有文件准颓、文件夾
$ ll -a
-
如果看見(jiàn)有.ssh就ok;如果沒(méi)有則創(chuàng)建
$ mkdir .ssh
-
2.5.2 配置ssh無(wú)密碼登錄
-
進(jìn)入.ssh文件夾
$ cd ~/.ssh
-
秘鑰生成和配置
-
方法零(推薦):
-
生成密鑰
$ ssh-keygen -t rsa //生成秘鑰棺妓,指定使用rsa加密方式
- 一路回車鍵直到生成
-
拷貝公鑰給需要免密登錄的各臺(tái)機(jī)器
ssh-copy-id 用戶名@對(duì)應(yīng)的主機(jī)名或者對(duì)應(yīng)的ip地址
-
比如發(fā)送到主機(jī)名為worker2的機(jī)器上:
$ ssh-copy-id user@worker2
-
然后該確認(rèn)確認(rèn)攘已,該輸密碼輸密碼。
-
去worker1機(jī)器上重啟終端命令行
-
測(cè)試:
$ ssh worker2或者其他主機(jī)名 //如果不需要輸入密碼怜跑,那么就成功了
-
-
-
方法一:
-
生成免密簽名
$ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa //指定加密方式為dsa無(wú)密碼放在~/.ssh目錄下样勃,id_dsa為文件名
- 一路回車鍵直到生成
-
重命名id_dsa.pub為authorized_keys
$ cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
-
將authorized_keys同時(shí)發(fā)送到其他幾臺(tái)需要被免密登陸的機(jī)器的.ssh目錄中
$ scp authorized_keys 用戶名@對(duì)應(yīng)的主機(jī)名或者對(duì)應(yīng)的ip地址:~/.ssh/authorized_keys
-
比如發(fā)送到主機(jī)名為worker2的機(jī)器上:
$ scp authorized_keys user@worker2:~/.ssh/authorized_keys
-
然后該確認(rèn)確認(rèn),該輸密碼輸密碼性芬。
-
然后去被免密登陸的機(jī)器上(自己峡眶、worker2、worker3)更改權(quán)限
//(用普通用戶身份) $ chmod 700 ~/.ssh $ chmod 600 ~/.ssh/*
-
去worker1機(jī)器上重啟終端命令行
-
測(cè)試:
$ ssh worker2或者其他主機(jī)名 //如果不需要輸入密碼植锉,那么就成功了
-
-
-
方法二:
-
生成密鑰
$ ssh-keygen -t rsa //生成秘鑰辫樱,指定使用rsa加密方式
- 一路回車鍵直到生成
-
在worker1機(jī)器上進(jìn)入.ssh目錄
$ cd ~/.ssh
-
將id_rsa.pub文件重命名為authorized_keys同時(shí)發(fā)送到自己機(jī)器和其他幾臺(tái)需要被免密登陸的機(jī)器的.ssh目錄中
$ scp id_rsa.pub 用戶名@對(duì)應(yīng)的主機(jī)名或者ip地址:~/.ssh/authorized_keys
-
比如發(fā)送到主機(jī)名為worker2的機(jī)器上:
$ scp id_rsa.pub user@worker2:~/.ssh/authorized_keys
-
然后該確認(rèn)確認(rèn),該輸密碼輸密碼俊庇。
-
然后去被免密登陸的機(jī)器上(自己狮暑、worker2、worker3)更改權(quán)限
//(用普通用戶身份) $ chmod 700 ~/.ssh $ chmod 600 ~/.ssh/*
-
去worker1機(jī)器上重啟終端命令行
-
測(cè)試:
$ ssh worker2或者其他主機(jī)名 //如果不需要輸入密碼辉饱,那么就成功了
-
-
以后就可以直接使用
ssh 主機(jī)名
在一臺(tái)機(jī)器上登陸另一臺(tái)機(jī)器對(duì)其他電腦操作-
如果不行搬男,在嘗試做以下操作
$ gedit /etc/ssh/sshd_config //在最后加上以下內(nèi)容并保存 RSAAuthentication yes PubkeyAuthentication yes //(上述內(nèi)容原本是注釋掉的,為了方便就不找出來(lái)了彭沼,直接手動(dòng)加上) //(所有機(jī)器都要做)
-
2.6 安裝java開(kāi)發(fā)環(huán)境【在每臺(tái)機(jī)器都要操作】
下載對(duì)應(yīng)版本的jdk
-
安裝java(我們將java安裝在根目錄的usr目錄缔逛,所以需要root身份權(quán)限)
-
進(jìn)入root用戶身份
$ su – root(回車后要輸入root密碼,在安裝時(shí)候設(shè)置的root密碼)
-
usr下創(chuàng)建java目錄
$ mkdir /usr/java
-
將jdk安裝包移動(dòng)到j(luò)ava目錄中解壓(假設(shè)一開(kāi)始安裝包下載在了桌面上)
-
進(jìn)入桌面目錄
$ cd /home/master/桌面
-
移動(dòng)
$ mv 安裝包的文件名 /usr/java
-
進(jìn)入java目錄
$ cd /usr/java
-
解壓
$ tar -xvf 安裝包的文件名
-
-
-
配置環(huán)境變量(為了讓user普通用戶生效新裝的java,我們更改user用戶的環(huán)境變量配置文件)
-
打開(kāi)環(huán)境變量的配置文件并編輯
$ gedit /home/user/.bash_profile
-
在里面添加如下內(nèi)容
export JAVA_HOME=/usr/java/剛剛解壓的文件夾名字(即jdk安裝包的名字)/ export PATH=$JAVA_HOME/bin:$PATH
-
使得環(huán)境變量生效
$ source /home/master/.bash_profile
-
檢測(cè)是否成功
$ java -version
如果輸出的版本號(hào)與自己下載的相同,那就對(duì)了
-
2.7 Hadoop安裝與配置(由于我們把hadoop安裝在普通用戶根目錄下褐奴,所以不需要最高權(quán)限按脚,所以下面的操作為了方便全部采用圖形化操作,當(dāng)然命令行也行)【在每臺(tái)機(jī)器都要操作】
- 將安裝包放在worker1機(jī)器的user用戶根目錄下并解壓到當(dāng)前路徑
- 比如解壓完以后文件夾叫hadoop-2.9.0
- 在worker1機(jī)器的user用戶根目錄下歉糜,新建兩個(gè)文件夾乘寒,叫hdfs、hadoopTemp
- 配置hadoop環(huán)境變量(為了讓系統(tǒng)能通過(guò)命令找到hadoop可執(zhí)行文件)
-
文本編輯器打開(kāi)環(huán)境變量配置文件(此環(huán)境變量文件僅對(duì)user普通用戶起作用)
$ gedit /home/master/.bash_profile
-
添加內(nèi)容
export HADOOP_HOME=/home/master/Hadoop-2.9.0 export PATH=$PATH:$HADOOP_HOME/bin
-
Hadoop配置[去hadoop安裝(解壓)的地方(/home/master/Hadoop-2.9.0)找文件]
-
找:/etc/hadoop/hadoop-env.sh,添加或修改內(nèi)容:
export JAVA_HOME=java安裝路徑
-
找/etc/hadoop/yarn.env.sh,添加或修改內(nèi)容:
export JAVA_HOME=java安裝路徑
-
找/etc/hadoop/core-site.xml,添加內(nèi)容
<configuration> <property> <name>fs.default.name</name> <value>hdfs://worker1:9000</value> <description>配置HDFS服務(wù)地址及端口</description> </property> <property> <name>hadoop.tmp.dir</name> <value>/home/user/hadoopTemp</value> <description>配置臨時(shí)文件存放地址</description> </property> </configuration>
-
找/etc/hadoop/hdfs-site.xml,添加內(nèi)容
<configuration> <property> <name>hdfs.name.dir</name> <value>/home/user/hdfs/name</value> <description>存放hdfs名字空間元素</description> </property> <property> <name>hdfs.data.dir</name> <value>/home/user/hdfs/data</value> <description>存放hdfs數(shù)據(jù)物理空間</description> </property> <property> <name>hdfs.replication</name> <value>1</value> <description>副本個(gè)數(shù),小于機(jī)器數(shù)量</description> </property> </configuration>
-
找/etc/hadoop/mapred-site.xml,添加內(nèi)容
<configuration> <property> <name>mapreduce.framework.name</name> <value>yarn</value> </property> </configuration>
-
找/etc/hadoop/yarn-site.xml,添加內(nèi)容
<configuration> <property> <name>yarn.nodemanager.aux-service</name> <value>mapreduce_shuffle</value> </property> <property> <name>yarn.resourcemanager.webapp.address</name> <value>worker1:18088</value> <description>hadoop的webapp訪問(wèn)地址</description> </property> </configuration>
-
找/etc/hadoop/slave文件匪补,設(shè)置slave(worker1作為老大伞辛,其他worker作為小弟節(jié)點(diǎn)配置到hadoop中)
//內(nèi)部添加 worker1 worker2 worker3 //為什么會(huì)有worker1?老大既作為老大,也和小弟一起做任務(wù)
【針對(duì)在每臺(tái)機(jī)器都要操作的安裝環(huán)境夯缺,建議先把一臺(tái)裝完蚤氏,然后把解壓好的目錄、環(huán)境變量文件直接拷貝發(fā)送到另外幾臺(tái)設(shè)備】
-
-
2.8 啟動(dòng)hadoop與測(cè)試
-
格式化namenode(第一次啟動(dòng)執(zhí)行)在hadoop安裝的根目錄下執(zhí)行:
bin/hdfs namenode -format
-
啟動(dòng)Hadoop踊兜,在hadoop安裝的根目錄下執(zhí)行:
-
啟動(dòng)NameNode和DataNode進(jìn)程
sbin/start-dfs.sh
-
啟動(dòng)ResourceManager和NodeManager進(jìn)程
sbin/start-yarn.sh
-
-
檢測(cè)是否啟動(dòng)成功
jps
-
如果出現(xiàn)如下信息竿滨,說(shuō)明啟動(dòng)成功
5509 NodeManager 5833 Jps 4683 NameNode 4796 DataNode 5421 ResourceManager 4943 SecondaryNameNode
訪問(wèn)Hadoop的webapp服務(wù)
- 在瀏覽器中輸入:http://master:18088(剛剛自己配置的地址)