好的h5網(wǎng)站企業(yè)網(wǎng)站模板免費下載
一:概述
????????Hadoop 是一個開源的分布式計算框架,廣泛應(yīng)用于大數(shù)據(jù)處理。偽分布式集群是 Hadoop 的一種部署模式,它可以在單臺機器上模擬集群環(huán)境,適合初學者進行學習和實驗。本文將詳細介紹如何在單臺機器上搭建 Hadoop 3.4.1 的偽分布式集群。
二:具體說明
? ? ? ? 2.1 環(huán)境準備
需要安裝好虛擬機CentOS8,并且已經(jīng)配置了SSH遠程連接,以便于更好的操作。
我演示的是在CentOS8中配置偽分布式集群搭建。
? ? ? ? 首先,我們需要在虛擬機中配置java環(huán)境,詳細過程如下所示:
?
? 首先將jdk的安裝包,通過文件傳輸工具傳輸?shù)?usr/local/soft/jdk中,讓后將其解壓的jdk8目錄中
接下來在/etc/profile中配置環(huán)境變量
vim /etc/profile
在文件中添加如下的內(nèi)容
JAVA_HOME路徑為jdk的解壓根目錄。
配置完成之后,保存。
為了能夠使這個配置生效,需要使用以下的命令來重新加載這個配置文件。
source /etc/profile
接著查看是否配置成功,這里和Win中查看方法相同
java -version
如果出現(xiàn)以下圖片的內(nèi)容,則證明配置成功。
如果沒有,說明配置文件中配置的路徑有誤或者未執(zhí)行重新加載配置文件的命令。
?2.2 搭建Hadoop偽分布式集群
? ? ? ? 將hadoop的安裝包上傳到虛擬機的/opt目錄中
? ?配置免密登錄
? ? ? ? 修改主機名
vim /etc/hostname
# 或者使用以下的命令
hostnamectl set-hostname master
將默認的主機名改為master,保存并退出
接下來修改hosts文件
vim /etc/hosts
?接著重啟虛擬機,并生成公鑰和私鑰對。
cd .ssh
ssh-keygen -t rsa
? ? ? ? 接著使用下面命令進行免密登錄配置
ssh-copy-id master
? ? ? ? 利用以下的命令檢查免密登錄是否成功。
ssh master
? ? ? ? 如果出現(xiàn)上圖中的內(nèi)容,則說明配置免密登錄成功了。
配置HDFS
? ? ? ? 將上傳到/usr/local/soft/hadoop/hadoop3.4.1中的壓縮包解壓到/usr/local/soft/hadoop/hadoop3.4.1/中
通過以下的命令配置hadoop-env.sh文件
cd /usr/local/soft/hadoop/hadoop3.4.1/hadoop3.4.1/etc/hadoop
cd /etc/hadoop
?????????接著去編輯這個hadoop目錄中的hadoop-env.sh文件,在里面添加JDK的家目錄
? ? ? ? 通過以下的步驟去進行。
如果你不知道這個已經(jīng)配置好的jdk家目錄中,可以使用以下的命令打印出這個路徑
echo $JAVA_HOME
vim hadoop-env.sh
????????
?然后保存并且退出。
? ? ? ? 接下來配置core-site.xml
vim core-site.xml
<configuration><property><name>fs.defaultFS</name><value>hdfs://master:8020</value></property><property><name>hadoop.tmp.dir</name><value>/usr/local/soft/hadoop/hadoop3.4.1/hadoop3.4.1/data</value></property>
</configuration>
? ? ? ? 再接下來配置hdfs-site.xml
vim hdfs-site.xml
<configuration><property><name>dfs.replication</name><value>1</value></property>
</configuration
? ? ? ? 接下來,格式化HDFS
hdfs namenode -format
? ? ? ? 2.3 HDFS的啟動和停止
? ? ? ? 啟動之前,需要做一些準備
? ?進入到sbin目錄中,修改四個文件
對于start-dfs.sh和stop-dfs.sh文件,尾部添加如下的參數(shù)
cd /usr/local/soft/hadoop/hadoop3.4.1/hadoop3.4.1/sbin
HDFS_DATANODE_USER=root
HADOOP_SECURE_DN_USER=hdfs
HDFS_NAMENODE_USER=root
HDFS_SECONDARYNAMENODE_USER=root
[root@master sbin]# vim start-dfs.sh
[root@master sbin]# vim stop-dfs.sh
[root@master sbin]# vim start-yarn.sh
[root@master sbin]# vim stop-yarn.sh

?????
對于start-yarn.sh和stop-yarn.sh文件,尾部添加下列參數(shù):
YARN_RESOURCEMANAGER_USER=root
HADOOP_SECURE_DN_USER=yarn
YARN_NODEMANAGER_USER=root
/usr/local/soft/hadoop/hadoop3.4.1/hadoop3.4.1
# 啟動命令
sbin/start-dfs.sh
# 關(guān)閉命令
sbin/stop-dfs.sh
????????
? ? ? ? 在 Hadoop 的配置文件中定義運行服務(wù)的用戶。編輯? ?
$HADOOP_HOME/etc/hadoop/hadoop-env.sh ? 文件,添加以下內(nèi)容:bashexport HDFS_NAMENODE_USER="root"
export HDFS_DATANODE_USER="root"
export HDFS_SECONDARYNAMENODE_USER="root"
????????注意:雖然這里使用了 ? root ? 用戶,但在實際生產(chǎn)環(huán)境中,建議使用非 ? root ? 用戶來運行 Hadoop 服務(wù),以增強安全性
? ??
? ? ? ? 我們發(fā)現(xiàn),現(xiàn)在執(zhí)行,剛才那個錯誤已經(jīng)沒有了,但是又出現(xiàn)了一個錯誤。這個要去將/etc/hosts中以下內(nèi)容注釋掉
vim /etc/hosts
? ? ? ? 接著殺死,已經(jīng)啟動的進程,然后重新啟動,看是否還有這個錯誤/警告。
? ? ? ? 重現(xiàn)啟動,發(fā)現(xiàn)已經(jīng)沒有了警告。
????????
????????
? ? ? ? 2.4 YARN的相關(guān)配置?
????????(1)配置yarn-site.xml
vim yarn-site.xml
<configuration><property><name>yarn.resourcemanager.hostsname</name><value>master</value></property><property><name>yarn.nodemanager.aux-services</name><value>mapreduce_shuffle</value></property>
</configuration>
????????(2)配置mapred-site.xml
????????把mapred-site.xml.template修改成mapred-site.xml,如果不是則不需要修改
# cp mapred-site.xml.template mapred-site.xml
vim mapred-site.xml
<configuration>
<property><name>mapreduce.framework.name</name><value>yarn</value>
</property>
</configuration>
????????啟動和停止YARN
啟動命令:
start-dfs.sh
?暫停命令:
stop-dfs.sh
同理dfs的啟動,若不能成功啟動,則需退回/opt/hadoop目錄下使用sbin/start-yarn.sh或sbin/stop-yarn.sh
????????
????????在 Hadoop 的配置文件中定義運行服務(wù)的用戶。編輯 ? $HADOOP_HOME/etc/hadoop/hadoop-env.sh ? 文件,添加以下內(nèi)容:export YARN_RESOURCEMANAGER_USER="root"
export YARN_NODEMANAGER_USER="root"
????????
vim $HADOOP_HOME/etc/hadoop/hadoop-env.sh
? ? ? ? 接下來,就可以順利啟動成功了!!
????????
? ? ? ? ? ? ? ? 2.5 web頁面訪問管理
首先需要關(guān)閉防火墻,我們這里直接關(guān)閉,一般開發(fā)中,只是開放指定端口
[root@master hadoop3.4.1]# systemctl stop firewalld
[root@master hadoop3.4.1]# systemctl disable firewalld
Removed /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
? ? ? ? 接下來去訪問HDFS和YARN的Web界面
http://master:9870/
http://master:8088/
????????
????????? dfs.namenode.http-address ?:NameNode 的 HTTP 服務(wù)端口(默認為 ? 50070 ?,Hadoop 3.x 中為 ? 9870 ?)。? ? dfs.datanode.http.address ?:DataNode 的 HTTP 服務(wù)端口(默認為 ? 50075 ?,Hadoop 3.x 中為 ? 9864 ?)