【大資料】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>