1. 程式人生 > 實用技巧 >【大資料】Hadoop的全分散式安裝

【大資料】Hadoop的全分散式安裝

準備

叢集伺服器準備

在虛擬機器中建立四個配置為1核,2G記憶體,20G儲存的虛擬機器。(在這裡有任何問題,請參考上篇博文——>傳送門

必要的軟體工具準備

FileZilla Client(FTP客戶端)

MobaXterm(SSH客戶端)

hadoop-3.3.1(hadoop核心檔案)

這裡不提供下載地址,有需要請直接參考上篇博文

配置

將四個虛擬機器的源全部變更為清華源或其他國內源

傳送門

將四個虛擬機器安裝Java環境,同時設定環境變數

請直接參考上篇博文

使用SFTP軟體,將下載好的hadoop-3.3.1包放置在固定目錄下並解壓

這裡安裝路徑統一為/data/hadoop

執行命令如下:
mkdir /data/hadoop tar -zxvf hadoop-3.3.0.tar.gz -C /data/hadoop

修改各個主機的節點名稱,便於後續配置

# 在主機一上,設定為hadoopmaster
hostnamectl set-hostname hadoopmaster
# 在主機二上,設定為hadoopnode2
hostnamectl set-hostname hadoopnode2
# 在主機三上,設定為hadoopnode3
hostnamectl set-hostname hadoopnode3
# 在主機四上,設定為hadoopnode4
hostnamectl set
-hostname hadoopnode4

修改各個主機的host檔案,便於後續配置

下面的ip是對應我的虛擬機器的ip,這裡需要自己檢視自己虛擬機器分配的ip。

192.168.206.128 hadoopmaster
192.168.206.132 hadoopnode2
192.168.206.133 hadoopnode3
192.168.206.131 hadoopnode4

在每臺虛擬機器中執行命令,並新增上述程式碼:

vim /etc/hosts

這裡需要說明一下,由於虛擬機器的ip是通過DHCP服務獲取的,所以若分配IP更改,則會導致各個伺服器之間通訊受阻,建議將伺服器設定為靜態IP,保證通訊不中斷,這個操作為可選操作,未來有時間我會新增,目前暫時不表。

許可權配置

由於目前全部伺服器的賬號均為root,之前的博文中提及root使用者可能會存在問題,hadoop不建議使用此賬戶管理hadoop

因此,這裡需要建立普通使用者用於對hadoop進行管理。

這裡給每個機器建立一個名為hadoop的賬戶。

adduser hadoop
passwd hadoop
#輸入你的密碼

配置節點間ssh免金鑰登入

需要配置 master 主機(node1)到 slave1(node2) , slave2(node3),slave3(node4)和其本身的 SSH 免密登入

# 在node1主機上執行
su hadoop
ssh-keygen -t rsa
ssh-copy-id hadoop@hadoopmaster
ssh-copy-id hadoop@hadoopnode2
ssh-copy-id hadoop@hadoopnode3
ssh-copy-id hadoop@hadoopnode4

配置各個節點間的hadoop的JAVA_HOME

vim /data/hadoop/hadoop-3.3.0/etc/hadoop/hadoop-env.sh

修改JAVA_HOME

export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.262.b10-0.el7_8.x86_64/

儲存即可

在hadoopmaster主機上配置NameNode節點

# 在hadoopmaster主機上執行
vim /data/hadoop/hadoop-3.3.0/etc/hadoop/core-site.xml
# 修改為如下配置


<configuration>
  <property>
    <name>fs.default.name</name>
    <value>hdfs://hadoopmaster:9000</value>
  </property>
</configuration>

在hadoopmaster上配置HDFS

# 在hadoopmaster主機上執行
vim /data/hadoop/hadoop-3.3.0/etc/hadoop/hdfs-site.xml
# 修改為如下配置
<configuration>
  <property>
      <name>dfs.namenode.name.dir</name>
      <value>/data/hadoop/data/nameNode</value>
  </property>

  <property>
      <name>dfs.datanode.data.dir</name>
      <value>/data/hadoop/data/dataNode</value>
  </property>

  <property>
      <name>dfs.replication</name>
      <value>3</value>
  </property>
</configuration>

上述配置中,第一個是配置NameNode節點,第二個配置DataNode節點,第三個配置副本數量。注意第三個若從節點有三個,則副本數量必然<=3,以此類推。具體原因,後續慢慢介紹

在hadoopmaster上配置MR、YARN

# 在hadoopmaster主機上執行
vim /data/hadoop/hadoop-3.3.0/etc/hadoop/mapred-site.xml
# 修改為如下配置
<configuration>
  <property>
      <name>mapreduce.framework.name</name>
      <value>yarn</value>
  </property>
  
  <property>
      <name>yarn.app.mapreduce.am.env</name>
      <value>HADOOP_MAPRED_HOME=$HADOOP_HOME</value>
  </property>
  
  <property>
      <name>mapreduce.map.env</name>
      <value>HADOOP_MAPRED_HOME=$HADOOP_HOME</value>
  </property>
  
  <property>
      <name>mapreduce.reduce.env</name>
      <value>HADOOP_MAPRED_HOME=$HADOOP_HOME</value>
  </property>
</configuration>

vim /data/hadoop/hadoop-3.3.0/etc/hadoop/yarn-site.xml
# 修改為如下配置
<configuration>   <property>   <name>yarn.resourcemanager.hostname</name>   <value>hadoopmaster</value>   </property>   <property>     <name>yarn.nodemanager.aux-services</name>     <value>mapreduce_shuffle</value>   </property> </configuration>

配置 Workers 節點

vim /data/hadoop/hadoop-3.3.0/etc/hadoop/workers

#修改配置為

hadoopnode2
hadoopnode3
hadoopnode4

拷貝分發至其他節點,無需再次配置

scp /data/hadoop/hadoop-3.3.0/etc/hadoop/* hadoopnode2:/data/hadoop/hadoop-3.3.0/etc/hadoop/
scp /data/hadoop/hadoop-3.3.0/etc/hadoop/* hadoopnode3:/data/hadoop/hadoop-3.3.0/etc/hadoop/
scp /data/hadoop/hadoop-3.3.0/etc/hadoop/* hadoopnode4:/data/hadoop/hadoop-3.3.0/etc/hadoop/

關閉其他節點防火牆,防止出現其他可能的問題

由於這裡僅僅用於學習,因此可以如此做。在生產環境過程中,這裡是需要防火牆安全的,要做更加精細化的安全策略。

systemctl stop firewalld
systemctl disable firewalld

測試

初始化HDFS

可將Hadoop相關命令放置到系統環境變數中,這裡我不做贅述,需要請移步上篇博文。

hdfs namenode -format

說明成功初始化!

開啟HDFS叢集

start-dfs.sh

說明成功!然後,在各個節點輸入jps,檢視目前執行的hadoop程序

說明叢集正常工作!

開啟YARN

start-yarn.sh

訪問叢集視覺化介面

訪問:http://192.168.206.128:8088/

成功!

訪問:http://192.168.206.128:9870/

若無法訪問,請在hdfs-site.xml檔案中新增

<property>
  <name>dfs.namenode.http-address</name>
  <value>0.0.0.0:9870</value>
</property>