Hadoop
Hadoop是一個開源的分布式計算框架,旨在處理大規(guī)模數(shù)據(jù)集和進行并行計算。核心包括兩個組件:HFDS、MapReduce。
配置方案
各虛擬機的用戶名分別為test0、test1、test2,主機名為hadoop100、hadoop101、hadoop102
虛擬機的分配如下:
- hadoop100:NameNode + ResourceManager
- hadoop101:DataNode + NodeManager
- hadoop102:SecondaryNameNode
其中Master為hadoop100,這個配置方案可以提供集群的基本功能,Master節(jié)點負責管理整個文件系統(tǒng)的元數(shù)據(jù)和資源調(diào)度,而Worker節(jié)點負責存儲數(shù)據(jù)和執(zhí)行任務(wù)。
各節(jié)點的作用:
- NameNode:負責管理整個分布式文件系統(tǒng)的命名空間和文件元數(shù)據(jù)。它是HDFS的主節(jié)點,負責存儲文件系統(tǒng)的元數(shù)據(jù)信息,并處理客戶端的文件操作請求。將一臺虛擬機作為NameNode節(jié)點可以提供高可靠性和容錯性。
- SecondaryNameNode:主要負責協(xié)助NameNode進行元數(shù)據(jù)備份和檢查點操作。它定期從NameNode獲取編輯日志,并創(chuàng)建檢查點,從而減少NameNode對元數(shù)據(jù)的負擔和故障恢復(fù)時間。請注意,SecondaryNameNode并不是NameNode的備份,無法自動接管NameNode的角色。
- HDFS DataNode:負責存儲和管理實際的數(shù)據(jù)塊。它接收并處理從NameNode分配的數(shù)據(jù)塊寫入請求,并執(zhí)行數(shù)據(jù)塊的讀取和復(fù)制操作。HDFS DataNode節(jié)點存儲實際的數(shù)據(jù)塊和后續(xù)讀寫操作。
安裝Hadoop
上傳壓縮包,并解壓
tar zxvf hadoop-3.3.6.tar.gz
打開環(huán)境變量注冊表
vim /etc/profile
配置環(huán)境變量
export HADOOP_HOME=/opt/hadoop
export PATH=$PATH:$HADOOP_HOME/bin
export PATH=$PATH:$HADOOP_HOME/sbin
配置生效
source /etc/profile
進入Hadoop
的安裝目錄,編輯/etc/hadoop/hadoop-env.sh
文件,設(shè)置JAVA_HOME
為您的JDK
安裝路徑
export JAVA_HOME=/opt/dev/jdk1.8.0_151
檢查是否安裝完成,使用命令查看hfs中的根目錄
hadoop fs -ls /
由于Hadoop單機模式是一種用于開發(fā)和測試的模式,它并不需要進行集群和分布式環(huán)境的設(shè)置。在Hadoop單機模式下,默認情況下,Hadoop會使用當前用戶的身份進行操作,而無需輸入密碼。
配置Hadoop分布式集群
前提條件:
- 三臺Linux系統(tǒng)虛擬機(可使用VMWare軟件進行克隆)定義為hadoop100、hadoop101、hadoop102
- 所有虛擬機都需要聯(lián)通網(wǎng)絡(luò)
- 虛擬機之間區(qū)別主機名
- 三臺虛擬機都擁有相同路徑版本的 JDK 和 Hadoop
設(shè)置主機名
首先分別打開三臺虛擬機,分別使用下列指令將主機名修改。
由于NetworkManager服務(wù)的配置問題,直接使用hostname指令設(shè)置主機名在重啟后會失效,需要每次開機重啟,若想永久修改主機名生效,則修改/etc/hostname文件
vi /etc/hostname
下述的hadoop100是指新的主機名。同理修改其他的虛擬機主機名
hadoop100
分別檢查虛擬機網(wǎng)絡(luò),當有數(shù)據(jù)返回時則無問題
ping www.baidu.com
編輯主機名列表文件
vi /etc/hosts
在文件加入,指定IP地址對應(yīng)的hostname
192.168.10.128 badoop100
192.168.10.130 hadoop101
192.168.10.131 hadoop102
重啟生效
reboot
在主機驗證
ping hadoop101
分發(fā) JDK 和 Hadoop
如果沒有安裝JDK和Hadoop,則可先在某一臺虛擬機上安裝完畢:
tar -zxvf /opt/jdk1.8.0_151.tar.gz
然后在該虛擬機上通過下列的集群分發(fā)腳本將 JDK和Hadoop分別分發(fā)到其他的虛擬機中,后續(xù)要輸入yes和當前將要連接的hadoop101的密碼:
# 將當前JDK發(fā)送到test1用戶下主機名為hadoop101的/opt/dev/jdk1.8.0_151路徑
scp -r /opt/dev/jdk1.8.0_151 test1@hadoop101:/opt/dev/jdk1.8.0_151
# 將Hadoop發(fā)送到test2用戶下主機名為hadoop102的/opt/dev/jdk1.8.0_151路徑
scp -r /opt/hadoop/bin/hadoop test1@hadoop102:/opt/hadoop/bin/hadoop
記得配置環(huán)境變量,查看環(huán)境變量profile文件
vim /etc/profile
目標虛擬機都要設(shè)置環(huán)境變量
export JAVA_HOME=/opt/dev/jdk1.8.0_151
export CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/bin
export PATH=$PATH:$JAVA_HOME/bin
export HADOOP_HOME=/opt/hadoop
export PATH=$PATH:$HADOOP_HOME/bin
export PATH=$PATH:$HADOOP_HOME/sbin
讓配置文件生效
source /etc/profile
輸入java指令檢驗Java是否安裝成功
java -version
輸入hadoop指令查看是否安裝成功
hadoop
設(shè)置免密登錄
配置SSHD:如果免密登錄不生效或出現(xiàn)連接錯誤,可能是由于目標節(jié)點的SSH服務(wù)器配置不正確。在目標節(jié)點上,編輯/etc/ssh/sshd_config
文件,確保以下設(shè)置:
vim /etc/ssh/sshd_config
PubKeyAuthentication yes
PasswordAuthentication no
重啟ssh服務(wù):
sudo service ssh restart
分別在三個虛擬機中的~/.ssh
目錄下生成id_rsa和id_rsa.pub文件,分別對應(yīng)著私鑰和公鑰:
ssh-keygen -t rsa
將公鑰復(fù)制到其他虛擬機上,實現(xiàn)SSH的無密碼登錄:
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
修改authorized_keys文件的權(quán)限
chmod 600 ~/.ssh/authorized_keys
將主節(jié)點的公鑰文件分發(fā)到集群中的各個節(jié)點上,使得節(jié)點可以進行免密登錄??梢允褂胹sh-copy-id命令實現(xiàn)自動分發(fā)。運行以下命令,其中test1、test2是目標節(jié)點的登錄用戶名,hadoop101、hadoop102是節(jié)點主機名:
ssh-copy-id -i ~/.ssh/id_rsa.pub test1@hadoop101
ssh-copy-id -i ~/.ssh/id_rsa.pub test2@hadoop102
輸入完成后,輸入目標機的密碼,將主節(jié)點的公鑰添加到從節(jié)點的~/.ssh/authorized_keys
文件中。
遠程登錄目標機,測試是否成功共享密鑰,如果可以成功登錄且不用輸入密碼,則表示免密登錄已經(jīng)配置成功:
ssh test1@hadoop101
ssh test2@hadoop102
配置hadoop-env.sh
打開文件
vi etc/hadoop/hadoop-env.sh
修改文件
export JAVA_HOME=/opt/dev/jdk1.8.0_381
配置core-site.xml
打開文件
vi etc/hadoop/core-site.xml
修改文件:
fs.defaultFS:該參數(shù)是配置指定HDFS的通信地址。
hadoop.tmp.dir:該參數(shù)配置的是Hadoop臨時目錄
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://hadoop100:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/hadoopTmp/</value>
</property>
</configuration>
配置hdfs-site.xml
打開文件
vi etc/hadoop/hdfs-site.xml
修改文件:
dfs.namenode.http-address:該參數(shù)是配置NameNode的http訪問地址和端口號。因為在集群規(guī)劃中指定hadoop100設(shè)為NameNode的服務(wù)器,故設(shè)置為hadoop100:9870。
dfs.namenode.secondary.http-address:該參數(shù)是配置SecondaryNameNode的http訪問地址和端口號。在集群規(guī)劃中指定hadoop102設(shè)為SecondaryNameNode的服務(wù)器,故設(shè)置為hadoop102:50090。
dfs.replication:該參數(shù)是配置HDFS副本數(shù)量。
dfs.namenode.name.dir:該參數(shù)是設(shè)置NameNode存放的路徑。
dfs.datanode.data.dir:該參數(shù)是設(shè)置DataNode存放的路徑。
<configuration>
<property>
<name>dfs.namenode.http-address</name>
<value>hadoop100:9870</value>
</property>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>hadoop102:50090</value>
</property>
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>/opt/hadoopTmp/dfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>/opt/hadoopTmp/dfs/data</value>
</property>
</configuration>
配置yarn-site.xml
打開文件
vi etc/hadoop/yarn-site.xml
修改文件:
參數(shù)說明:
yarn.resourcemanager.hostsname:該參數(shù)是指定ResourceManager運行在那個節(jié)點上。
yarn.resourcemanager.webapp.address:該參數(shù)是指定ResourceManager服務(wù)器的web地址和端口。
yarn.nodemanager,aux-services:該參數(shù)是指定啟動時加載server的方式。
yarn.nodemanager.aux-services.mapreduce.shuffle.class:該參數(shù)是指定使用mapreduce_shuffle中的類。
yarn.log-aggregation-enable:該參數(shù)是配置是否啟用日志聚集功能。
yarn.log-aggregation.retain-seconds:該參數(shù)是配置聚集的日志在HDFS上保存的最長時間。
yarn.nodemanager.remote-app-log-dir:該參數(shù)是指定日志聚合目錄。
<configuration>
<property>
<name>yarn.resourcemanager.hostsname</name>
<value>hadoop100</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.address</name>
<value>hadoop100:8088</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
<value>org.apache.hadoop.mapred.ShuffleHandler</value>
</property>
<property>
<name>yarn.log-aggregation-enable</name>
<value>true</value>
</property>
<property>
<name>yarn.log-aggregation.retain-seconds</name>
<value>106800</value>
</property>
<property>
<name>yarn.nodemanager.remote-app-log-dir</name>
<value>/user/hadoopcontainer/logs</value>
</property>
</configuration>
配置mapred-site.xml
打開文件
vi etc/hadoop/mapred-site.xml
修改文件參數(shù)說明:
mapreduce.framework.name:該參數(shù)是指定MapReduce框架運行在YARN上。
mapreduce.jobhistory.address:該參數(shù)是設(shè)置MapReduce的歷史服務(wù)器安裝的位置及端口號。
mapreduce.jobhistory.webapp.address:該參數(shù)是設(shè)置歷史服務(wù)器的web頁面地址和端口。
mapreduce.jobhistory.intermediate-done-dir:該參數(shù)是設(shè)置存放日志文件的臨時目錄。
mapreduce.jobhistory.done-dir:該參數(shù)是設(shè)置存放運行日志文件的最終目錄。
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>mapreduce.jobhistory.address</name>
<value>hadoop102:10020</value>
</property>
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>hadoop102:19888</value>
</property>
<property>
<name>mapreduce.jobhistory.intermediate-done-dir</name>
<value>${hadoop.tmp.dir}/mr-history/tmp</value>
</property>
<property>
<name>mapreduce.jobhistory.done-dir</name>
<value>${hadoop.tmp.dir}/mr-history/done</value>
</property>
</configuration>
配置主次節(jié)點
PS:hadoop3以后slaves改為workers,新建文件
vim etc/hadoop/slaves
vim etc/hadoop/workers
添加所有節(jié)點的主機名:
hadoop100
hadoop101
hadoop102
分發(fā)配置文件
在其他節(jié)點查看下當前存放hadoop目錄是否具有權(quán)限寫入,否則后續(xù)分發(fā)將失敗
ls -ld /opt/hadoop
如果沒有權(quán)限,則輸入下列指令開放hadoop目錄的寫入權(quán)限
sudo chmod -R 777 /opt/hadoop
將上述配置好的hadoop相關(guān)文件分發(fā)到其他虛擬機:
scp -r /opt/hadoop/* test1@hadoop101:/opt/hadoop/
scp -r /opt/hadoop/* test2@hadoop102:/opt/hadoop/
在主節(jié)點創(chuàng)建日志文件夾
sudo mkdir /opt/hadoopTmp/dfs/name
sudo mkdir /opt/hadoopTmp/dfs/data
啟動集群
在主節(jié)點輸入格式化命令:
hdfs namenode -format
啟動集群
start-all.sh
停止集群
stop-all.sh
驗證是否成功
jps
當看到下列內(nèi)容表示成功:
Master: NameNode、DataNode、ResourceManager、NodeManager
slave1: SecondaryNameNode、DataNode、NodeManager
slave2: DataNode、NodeManager
Web端訪問
關(guān)閉防火墻:
service iptables stopservice iptables stop
訪問HDFS:ip地址:9870;
訪問YARN:ip地址:8088;
版本注意事項
-
Hadoop3版本后,NameNode、Secondary NameNode, DataNode的端口出現(xiàn)了變化。文章來源:http://www.zghlxwxcb.cn/news/detail-842693.html
2版本端口號 3版本端口號 namenode 8020 9820 namenode htttp web 50070 9870 namenode https web 50470 9871 secondnamenode https web 50091 9869 secondnamenode https web 50091 9869 secondnamenode http web 50090 9868 datanode ipc 50020 9867 datanode 50010 9866 datanode http web 50075 9864 datanode https web 50475 9865 -
Hadoop3版本之前的主從節(jié)點文件為slaves,3之后為workers文章來源地址http://www.zghlxwxcb.cn/news/detail-842693.html
到了這里,關(guān)于Linux環(huán)境搭建Hadoop及完全分布式集群的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!