1 前言
下面我們配置下單namenode節(jié)點(diǎn)hadoop集群,使用vmware虛擬機(jī)環(huán)境搭建。vmware虛擬機(jī)的配置,在下面鏈接2有,或者自行查閱文檔。hadoop安裝包可到官網(wǎng)下載,當(dāng)前相關(guān)軟件環(huán)境如下:
軟件 | 版本 | 說(shuō)明 |
---|---|---|
hadoop | 3.3.4 | jar包 |
vmware | 15.5 | 虛擬機(jī) |
centos | 7.6 | 服務(wù)器操作系統(tǒng) |
xshell | 6 | 遠(yuǎn)程連接 |
jdk | 1.8 | java運(yùn)行環(huán)境 |
2 集群規(guī)劃
在前面的準(zhǔn)備章節(jié),我們準(zhǔn)備了基于vmware的三臺(tái)虛擬機(jī),現(xiàn)服務(wù)規(guī)劃如下:
節(jié)點(diǎn) | 服務(wù) |
---|---|
node1 | NameNode、DataNode、SecondaryNameNode |
node2 | DataNode |
node3 | DataNode |
Hadoop HDFS的角色包含:
- NameNode:主節(jié)點(diǎn)管理者
- DataNode:從節(jié)點(diǎn)工作者
- SecondaryNameNode:主節(jié)點(diǎn)輔助
3 hadoop安裝包上傳與安裝
3.1 上傳解壓
- 上傳hadoop安裝包到node節(jié)點(diǎn)中,如下圖3.1-1所示
-
解壓縮安裝包到
/export/server
中tar -zxvf hadoop-3.3.4.tar.gz -C /export/server
-
構(gòu)建軟連接
cd /export/server ln -s /export/server/hadoop-3.3.4 hadoop
4 hadoop配置
配置HDFS集群,主要涉及以下文件的修改:
- workers:配置從節(jié)點(diǎn)(DataNode)有哪些
- hadoop-env.sh:配置hadoop的相關(guān)變量
- core-site.xml:hadoop的核心配置文件
- hadfs-site.xml:HDFS核心配置文件
這些文件在$HADOOP_HOME/etc/hadoop
文件夾中
ps:$HADOOP_HOME是后續(xù)我們要設(shè)置的環(huán)境變量,其指代Hadoop安裝文件夾即/export/server/hadoop
-
配置workers
# 進(jìn)入配置文件目錄 cd etc/hadoop # 編輯workers文件 vim workers # 填入如下內(nèi)容 node1 node2 node3
- 記錄node1,node2,node3三個(gè)從節(jié)點(diǎn)
-
配置hadoop-en.sh
# 填入如下內(nèi)容 export JAVA_HOME=/export/server/jdk export HADOOP_HOME=/export/server/hadoop export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop export HADOOP_LOG_DIR=$HADOOP_HOME/logs
- JAVA_HOME:jdk安裝目錄
- HADOOP_HOME:hadoop安裝目錄
- HADOOP_CONF_DIR:hadoop配置文件目錄
- HADOOP_LOG_DIR:hadoop日志存放目錄
-
配置
core-site.xml
,此處配置NameNode會(huì)報(bào)錯(cuò),后面問(wèn)題集我們?cè)诜治?/strong>在文件內(nèi)部填入如下內(nèi)容 <configuration> <property> <name>fs.defaultFS</name> <value>hdfs://node1:8020</value> </property> <property> <name>io.file.buffer.size</name> <value>131072</value> </property> </configuration>
- key:fs.defaultFS;含義:HDFS文件系統(tǒng)的網(wǎng)絡(luò)通訊路徑;值:hdfs://node1:8020
- 協(xié)議為hdfs://
- namenode為node1
- namenode通訊端口為8020
- key:io.file.buffer.size含義:io操作文件緩沖區(qū)大小值:131072 bit
- hdfs://node1:8020為整個(gè)HDFS內(nèi)部的通訊地址,應(yīng)用協(xié)議為hdfs://(Hadoop內(nèi)置協(xié)議)表明DataNode將和node1的8020端口通訊,node1是NameNode所在機(jī)器此配置固定了node1必須啟動(dòng)NameNode進(jìn)程
- key:fs.defaultFS;含義:HDFS文件系統(tǒng)的網(wǎng)絡(luò)通訊路徑;值:hdfs://node1:8020
-
配置hdfs-site.xml
# 在文件內(nèi)部填入如下內(nèi)容 <configuration> <property> <name>dfs.datanode.data.dir.perm</name> <value>700</value> </property> <property> <name>dfs.namenode.name.dir</name> <value>/data/nn</value> </property> <property> <name>dfs.namenode.hosts</name> <value>node1,node2,node3</value> </property> <property> <name>dfs.blocksize</name> <value>268435456</value> </property> <property> <name>dfs.namenode.handler.count</name> <value>100</value> </property> <property> <name>dfs.datanode.data.dir</name> <value>/data/dn</value> </property> </configuration>
- key:dfs.datanode.data.dir.perm;含義:hdfs文件系統(tǒng),默認(rèn)創(chuàng)建的文件權(quán)限設(shè)置值:700,即:rwx------
- key:dfs.namenode.name.dir;含義:NameNode元數(shù)據(jù)的存儲(chǔ)位置值:/data/nn,在node1節(jié)點(diǎn)的/data/nn目錄下
- key:dfs.namenode.hosts含義:NameNode允許哪幾個(gè)節(jié)點(diǎn)的DataNode連接(即允許加入集群)值:node1、node2、node3,這三臺(tái)服務(wù)器被授權(quán)
- key:dfs.blocksize含義:hdfs默認(rèn)塊大小值:268435456(256MB)
- key:dfs.namenode.handler.count;含義:namenode處理的并發(fā)線(xiàn)程數(shù);值:100,以100個(gè)并行度處理文件系統(tǒng)的管理任務(wù)
- key:dfs.datanode.data.dir;含義:從節(jié)點(diǎn)DataNode的數(shù)據(jù)存儲(chǔ)目錄;值:/data/dn,即數(shù)據(jù)存放在node1、node2、node3,三臺(tái)機(jī)器的/data/dn內(nèi)
根據(jù)上面配置的NameNode和DataNode數(shù)據(jù)存放位置
-
namenode數(shù)據(jù)存放node1的/data/nn
-
datanode數(shù)據(jù)存放node1、node2、node3的/data/dn
-
在node1節(jié)點(diǎn):
mkdir -p /data/nn mkdir /data/dn
-
在node2和node3節(jié)點(diǎn):
mkdir -p /data/dn
5 從節(jié)點(diǎn)同步和環(huán)境變量配置
目前,已經(jīng)基本完成Hadoop的配置操作,可以從node1將hadoop安裝文件夾遠(yuǎn)程復(fù)制到node2、node3
-
分發(fā)
# 在node1執(zhí)行如下命令 cd /export/server scp -r hadoop-3.3.4 node2:`pwd`/ scp -r hadoop-3.3.4 node3:`pwd`/
-
在node2執(zhí)行,為hadoop配置軟鏈接
# 在node2執(zhí)行如下命令 ln -s /export/server/hadoop-3.3.4 /export/server/hadoop
-
在node3執(zhí)行,為hadoop配置軟鏈接
# 在node3執(zhí)行如下命令 ln -s /export/server/hadoop-3.3.4 /export/server/hadoop
一步一步配置相對(duì)清晰,但是也繁瑣,xshell有如下功能,可以在所有會(huì)話(huà)窗口執(zhí)行相同的操作
配置環(huán)境變量:
在Hadoop文件夾中的bin、sbin兩個(gè)文件夾內(nèi)有許多的腳本和程序,現(xiàn)在來(lái)配置一下環(huán)境變量
-
vim /etc/profile,node1,node2,node3執(zhí)行相同操作
# 在/etc/profile文件底部追加如下內(nèi)容 export HADOOP_HOME=/export/server/hadoop export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
6 創(chuàng)建用戶(hù)
hadoop部署的準(zhǔn)備工作基本完成為了確保安全,hadoop系統(tǒng)不以root用戶(hù)啟動(dòng),我們以普通用戶(hù)hadoop來(lái)啟動(dòng)整個(gè)Hadoop服務(wù)所以,現(xiàn)在需要對(duì)文件權(quán)限進(jìn)行授權(quán)。
ps:請(qǐng)確保已經(jīng)提前創(chuàng)建好了hadoop用戶(hù)(前置準(zhǔn)備章節(jié)中有講述),并配置好了hadoop用戶(hù)之間的免密登錄以root身份,在node1、node2、node3三臺(tái)服務(wù)器上均執(zhí)行如下命令
# 以root身份,在三臺(tái)服務(wù)器上均執(zhí)行
chown -R hadoop:hadoop /data
chown -R hadoop:hadoop /export
7 集群?jiǎn)?dòng)
前期準(zhǔn)備全部完成,現(xiàn)在對(duì)整個(gè)文件系統(tǒng)執(zhí)行初始化,在node1節(jié)點(diǎn)上操作
# 確保以hadoop用戶(hù)執(zhí)行
su - hadoop
# 格式化namenode
hadoop namenode -format
# 一鍵啟動(dòng)hdfs集群
start-dfs.sh
# 一鍵關(guān)閉hdfs集群
stop-dfs.sh
# 如果遇到命令未找到的錯(cuò)誤,表明環(huán)境變量未配置好,可以以絕對(duì)路徑執(zhí)行
/export/server/hadoop/sbin/start-dfs.sh
/export/server/hadoop/sbin/stop-dfs.sh
啟動(dòng)完成后,可以在瀏覽器打開(kāi):http://node1:9870,即可查看到hdfs文件系統(tǒng)的管理網(wǎng)頁(yè),如下圖6-1所示
8 問(wèn)題集
出了問(wèn)題首先,查看日志,在配置文件$HADOOP_home/logs
下面記錄日志。
一些常見(jiàn)的報(bào)錯(cuò),比如命令不存在,或者因?yàn)榇中膯卧~寫(xiě)錯(cuò),這里不再分析,可以去鏈接1視頻P23-24查看原因或者自行查閱相關(guān)文檔。下面主要分析一些本人遇到的非常見(jiàn)錯(cuò)誤
8.1 Invalid URI for NameNode address (check fs.defaultFS): file:/// has no authority.
-
日志報(bào)錯(cuò)內(nèi)容
2023-08-27 11:40:09,808 ERROR org.apache.hadoop.hdfs.server.namenode.SecondaryNameNode: Failed to start secondary namenode java.lang.IllegalArgumentException: Invalid URI for NameNode address (check fs.defaultFS): file:/// has no authority. at org.apache.hadoop.hdfs.DFSUtilClient.getNNAddress(DFSUtilClient.java:781) at org.apache.hadoop.hdfs.DFSUtilClient.getNNAddressCheckLogical(DFSUtilClient.java:810) at org.apache.hadoop.hdfs.DFSUtilClient.getNNAddress(DFSUtilClient.java:772) at org.apache.hadoop.hdfs.server.namenode.NameNode.getServiceAddress(NameNode.java:534) at org.apache.hadoop.hdfs.server.namenode.SecondaryNameNode.initialize(SecondaryNameNode.java:231) at org.apache.hadoop.hdfs.server.namenode.SecondaryNameNode.<init>(SecondaryNameNode.java:194) at org.apache.hadoop.hdfs.server.namenode.SecondaryNameNode.main(SecondaryNameNode.java:690)
-
報(bào)錯(cuò)NameNode URI配置有問(wèn)題,這個(gè)配置我們是按照視頻做了,配置如下
<configuration> <property> <name>fs.defaultFS</name> <value>hdfs://node1:8020</value> </property>
-
-
解決方案:修改配置如下
<property> <name>fs.default.name</name> <value>hdfs://node1:8020</value> </property>
-
具體原理可以查看官方文檔解釋或者下面鏈接3
結(jié)語(yǔ)
如果小伙伴什么問(wèn)題或者指教,歡迎交流。
?QQ:806797785
參考鏈接:
[1]大數(shù)據(jù)視頻[CP/OL].2020-04-16.p14-p24.
[2]0101前期準(zhǔn)備-大數(shù)據(jù)學(xué)習(xí)[CP/OL].文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-676848.html
[3]Hadoop的core-site.xml配置文件里的fs.default.name和fs.defaultFS[CP/OL].文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-676848.html
到了這里,關(guān)于0201hdfs集群部署-hadoop-大數(shù)據(jù)學(xué)習(xí)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!