視頻課程地址:https://www.bilibili.com/video/BV1WY4y197g7
課程資料鏈接:https://pan.baidu.com/s/15KpnWeKpvExpKmOC8xjmtQ?pwd=5ay8
Hadoop入門學習筆記(匯總)
二、在虛擬機里部署HDFS集群
下載Hadoop:https://www.apache.org/dyn/closer.cgi/hadoop/common/hadoop-3.3.4/hadoop-3.3.4.tar.gz
本次演示部署結構如下圖所示:
本次部署服務清單如下表所示:
節(jié)點 | 部署的服務 |
---|---|
node1 | NameNode、DataNode、SecondaryNameNode |
node2 | DataNode |
node3 | DataNode |
2.1. 部署node1虛擬機
1、將下載好的Hadoop壓縮包上傳至node1虛擬機的root目錄;
2、將Hadoop壓縮包解壓至/export/server
目錄下
tar -zxvf hadoop-3.3.4.tar.gz -C /export/server/
3、創(chuàng)建hadoop目錄的軟鏈接
# 切換工作目錄
cd /export/server/
# 創(chuàng)建軟連接
ln -s /export/server/hadoop-3.3.4/ hadoop
4、hadoop目錄結構如下
目錄 | 存放內容 |
---|---|
bin | 存放Hadoop的各類程序(命令) |
etc | 存放Hadoop的配置文件 |
include | 存放Hadopp用到的C語言的頭文件 |
lib | 存放Linux系統(tǒng)的動態(tài)鏈接庫(.so文件) |
libexec | 存放配置Hadoop系統(tǒng)的腳本文件(.sh和.cmd文件) |
licenses_binary | 存放許可證文件 |
sbin | 管理員程序(super bin) |
share | 存放二進制源碼(jar包) |
5、配置workers文件
cd etc/hadoop/
vim workers
將workers文件原有的內容刪掉,改為
node1
node2
node3
保存即可;
6、配置hadoop-env.sh文件,使用vim hadoop-env.sh
打開,修改以下配置:
# 指明JDK安裝目錄
export JAVA_HOME=/export/server/jdk
# 指明HADOOP安裝目錄
export HADOOP_HOME=/export/server/hadoop
# 指明HADOOP配置文件的目錄
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
#指明HADOOP運行日志文件的目錄
export HADOOP_LOG_DIR=$HADOOP_HOME/logs
7、配置core-site.xml文件,使用vim core-site.xml
打開文件,修改以下配置:
<configuration>
<property>
<!--HDFS 文件系統(tǒng)的網(wǎng)絡通訊路徑-->
<name>fs.defaultFS</name>
<value>hdfs://node1:8020</value>
</property>
<property>
<!--io 操作文件緩沖區(qū)大小-->
<name>io.file.buffer.size</name>
<value>131072</value>
</property>
</configuration>
8、配置hdfs-site.xml文件,修改以下配置:
<configuration>
<property>
<!--hdfs 文件系統(tǒng),默認創(chuàng)建的文件權限設置-->
<name>dfs.datanode.data.dir.perm</name>
<!-- 700權限即rwx------ -->
<value>700</value>
</property>
<property>
<!--NameNode 元數(shù)據(jù)的存儲位置-->
<name>dfs.namenode.name.dir</name>
<!-- 在 node1 節(jié)點的 /data/nn 目錄下 -->
<value>/data/nn</value>
</property>
<property>
<!--NameNode 允許哪幾個節(jié)點的 DataNode 連接(即允許加入集群)-->
<name>dfs.namenode.hosts</name>
<value>node1,node2,node3</value>
</property>
<property>
<!--hdfs 默認塊大小-->
<name>dfs.blocksize</name>
<!--268435456即256MB-->
<value>268435456</value>
</property>
<property>
<!--namenode 處理的并發(fā)線程數(shù)-->
<name>dfs.namenode.handler.count</name>
<value>100</value>
</property>
<property>
<!--從節(jié)點 DataNode 的數(shù)據(jù)存儲目錄,即數(shù)據(jù)存放在node1、node2、node3三臺機器中的路徑-->
<name>dfs.datanode.data.dir</name>
<value>/data/dn</value>
</property>
</configuration>
9、根據(jù)上一步的配置項,在node1節(jié)點創(chuàng)建/data/nn
和/data/dn
目錄,在node2和node3節(jié)點創(chuàng)建/data/dn
目錄;
10、將已配置好的hadoop程序從node1分發(fā)到node2和node3:
# 切換工作目錄
cd /export/server/
# 將node1的hadoop-3.3.4/目錄復制到node2的同樣的位置
scp -r hadoop-3.3.4/ node2:`pwd`/
# 將node1的hadoop-3.3.4/目錄復制到node3的同樣的位置
scp -r hadoop-3.3.4/ node3:`pwd`/
11、將Hadoop加入環(huán)境變量,使用vim /etc/profile
打開環(huán)境變量文件,將以下內容添加在文件末尾:
export HADOOP_HOME=/export/server/hadoop
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
執(zhí)行source /etc/profile
命令使環(huán)境變量配置生效;
12、修改相關目錄的權限:
chown -R hadoop:hadoop /data
chown -R hadoop:hadoop /export/
2.2. 部署node2和node3虛擬機
本小節(jié)內容如無特殊說明,均需在node2和node3虛擬機分別執(zhí)行!
1、為hadoop創(chuàng)建軟鏈接,命令都是一樣的,如下所示:
cd /export/server/
ln -s /export/server/hadoop-3.3.4/ hadoop
2、將Hadoop加入環(huán)境變量,使用vim /etc/profile
打開環(huán)境變量文件,將以下內容添加在文件末尾:
export HADOOP_HOME=/export/server/hadoop
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
執(zhí)行source /etc/profile
命令使環(huán)境變量配置生效;
3、修改相關目錄的權限:
chown -R hadoop:hadoop /data
chown -R hadoop:hadoop /export/
2.3. 初始化并啟動Hadoop集群(格式化文件系統(tǒng))
1、在node1虛擬機上執(zhí)行以下命令:
# 切換為hadoop用戶
su - hadoop
# 格式化namenode
hadoop namenode -format
2、啟動集群,在node1虛擬機上執(zhí)行以下命令:
# 一鍵啟動整個集群,包括namenode、secondarynamenode和所有的datanode
start-dfs.sh
# 查看當前系統(tǒng)中正在運行的Java進程,可以看到每臺虛擬機上hadoop的運行情況
jps
3、執(zhí)行上述步驟之后,我們可以在我們自己的電腦(非虛擬機)上查看 HDFS WEBUI(即HADOOP管理頁面),可以通過訪問namenode所在服務器的9870端口查看,在本案例中因為namenode處于node1虛擬機上,所以可以訪問http://node1:9870/打開。PS:因為之前我們已經(jīng)配置了本機的hosts文件,所以這里可以使用node1訪問,其實這個地址對應的就是http://192.168.88.101:9870/。
4、如果看到以下界面,代表Hadoop集群啟動成功了。
2.4. 快照部署好的集群
為了保存剛部署好的集群,在后續(xù)如果出現(xiàn)無法解決的問題,不至于重新部署一遍,使用虛擬機快照的方式進行備份。
1、一鍵關閉集群,在node1虛擬機執(zhí)行以下命令:
# 切換為hadoop用戶
su - hadoop
# 一鍵關閉整個集群
stop-dfs.sh
關閉完成后,可以在node1、node2、node3虛擬機中使用jps
命令查看相應Java進程是否已消失。
2、關閉三臺虛擬機;
3、在VMware中,分別在三臺虛擬機上右鍵,“快照”-“拍攝快照”功能創(chuàng)建快照。
2.5. 部署過程中可能會遇到的問題
- 在以Hadoop用戶身份執(zhí)行
start-dfs.sh
命令時,提示Permission denied。此時需要檢查三臺虛擬機上相關路徑(/data、/export/server及其子路徑)上hadoop用戶是否具有讀、寫、執(zhí)行的權限。 - 在執(zhí)行
start-dfs.sh
命令后,使用jps
命令可以查看已啟動的服務,若發(fā)現(xiàn)有服務未啟動成功的,可以查看/export/server/hadoop/logs目錄下的日志文件,若在日志文件中看到類似于無權限、不可訪問等報錯信息,同樣需要檢查對應機器的相關路徑權限。 - 執(zhí)行
hadoop namenode -format
、start-dfs.sh
、stop-dfs.sh
等Hadoop相關命令時,若提示command not found,則代表著環(huán)境變量沒配置好,需要檢查三臺機器的/etc/profile文件的內容(需要使用source
命令使環(huán)境變量生效)以及hadoop的軟連接是否正確。 - 執(zhí)行
start-dfs.sh
命令后,node1的相關進程啟動成功,但node2和node3沒有啟動的,需要檢查workers文件的配置是否有node2和node3。 - 若在日志文件中看到WstxEOFException或Unexpected EOF等信息,大概率是xml配置文件有問題,需要仔細檢查core-site.xml和hdfs-site.xml文件里面的內容(少了某個字母或字符、寫錯了某個字母或字符),尤其是符號。
綜上,常見出錯點總結為:
- 權限未正確配置;
- 配置文件錯誤;
- 未格式化
2.5. Hadoop HDFS集群啟停腳本
注意:在使用以下命令前,一定要確保當前是hadoop用戶,否則將報錯或沒有效果!??!
-
Hadoop HDFS 組件內置了HDFS集群的一鍵啟停腳本。
-
$HADOOP_HOME/sbin/start-dfs.sh,一鍵啟動HDFS集群
執(zhí)行流程:- 在執(zhí)行此腳本的機器上,啟動SecondaryNameNode;
- 讀取
core-site.xml
內容(fs.defaultFS項),確定NameNode所在機器,啟動NameNode; - 讀取
workers
內容,確定DataNode所在機器,啟動全部DataNode。
-
$HADOOP_HOME/sbin/stop-dfs.sh,一鍵關閉HDFS集群
執(zhí)行流程:- 在執(zhí)行此腳本的機器上,關閉SecondaryNameNode;
- 讀取
core-site.xml
內容(fs.defaultFS項),確定NameNode所在機器,關閉NameNode; - 讀取
workers
內容,確認DataNode所在機器,關閉全部NameNode。
-
-
除了一鍵啟停外,也可以單獨控制某個進程的啟停。
-
$HADOOP_HOME/sbin/hadoop-daemon.sh,此腳本可以單獨控制所在機器的進程啟停
用法:hadoop-daemon.sh (start|status|stop) (namenode|secondarynamenode|datanode)
文章來源:http://www.zghlxwxcb.cn/news/detail-790941.html -
$HADOOP_HOME/sbin/hdfs,此程序也可以單獨控制所在機器的進程啟停
用法:hdfs --daemon (start|status|stop) (namenode|secondarynamenode|datanode)
文章來源地址http://www.zghlxwxcb.cn/news/detail-790941.html
-
到了這里,關于Hadoop入門學習筆記——二、在虛擬機里部署HDFS集群的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!