虛擬機器配置Hadoop 叢集教程(參考Hadoop+Spark 大資料巨量分析與機器學習)
- 配置完偽分散式虛擬機器後,可以繼續配置hadoop叢集。配置偽分散式hadoop可以參考:http://dblab.xmu.edu.cn/blog/2441-2/ 教程裡也有配置叢集,但是是用物理機配置的,我們這裡還是選擇用虛擬機器配置。
規劃
- 一臺主要計算機master,在HDFS擔任NameNode角色、在MapReduce擔任ResourceManager;
- 有多臺計算機data1、data2、data3,在HDFS中擔任DataNode角色、在MapReduce中擔任NodeManager角色;
- 結構圖如下,ip地址應根據自身情況而定;
Step1. 把Single Node Cluster 複製到 data1
- 通過複製虛擬機器減少不必要的操作
Step2. 設定VirtualBox網絡卡
- 四臺虛擬機器,每臺都設定兩張網絡卡,網絡卡1設定為“NAT網絡卡”,網絡卡2設定為“僅主機介面卡”,用於建立內部網路,內部網路連線虛擬主機與Host主機。
在設定Host-Only網路時若顯示介面未指定,可以到虛擬機器管理中,點選主機網路管理器,新增一塊虛擬網絡卡。
- 我們將配置虛擬主機master、data1、data2、data3的IP為:
192.168.47.100
192.168.47.101
192.168.47.102
192.168.47.103
Step3. 設定data1伺服器
-
編輯網路配置檔案設定固定ip
sudo gedit /etc/network/interfaces# interfaces(5) file used by ifup(8) and ifdown(8) auto lo iface lo inet loopback # NAT interface auto enp0s3 iface enp0s3 inet dhcp # host only interface auto enp0s8 iface enp0s8 inet static address 192.168.47.101 netmask 255.255.255.0 network 192.168.47.0 brodcast 192.168.47.255
-
設定hostname主機名
sudo gedit /etc/hostname
將內容改為data1 -
設定hosts檔案
sudo gedit /etc/hosts127.0.0.1 localhost 127.0.1.1 hadoop 192.168.47.100 master 192.168.47.101 data1 192.168.47.102 data2 192.168.47.103 data3 # The following lines are desirable for IPv6 capable hosts ::1 ip6-localhost ip6-loopback fe00::0 ip6-localnet ff00::0 ip6-mcastprefix ff02::1 ip6-allnodes ff02::2 ip6-allrouters
-
編輯core-site.xml檔案
sudo gedit /usr/local/hadoop/etc/hadoop/core-site.xml<configuration> <property> <name>hadoop.tmp.dir</name> <value>file:/usr/local/hadoop/tmp</value> <description>Abase for other temporary directories.</description> </property> <property> <name>fs.defaultFS</name> <value>hdfs://master:9000</value> </property> </configuration>
-
編輯yarn-site.xml檔案
sudo gedit /usr/local/hadoop/etc/hadoop/yarn-site.xml<configuration> <!-- Site specific YARN configuration properties --> <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.resourcemanager.resource-tracker.address</name> <value>master:8025</value> </property> <property> <name>yarn.resourcemanager.scheduler.address</name> <value>master:8030</value> </property> <property> <name>yarn.resourcemanager.address</name> <value>master:8050</value> </property> </configuration>
-
編輯mapred-site.xml檔案
sudo gedit /usr/local/hadoop/etc/hadoop/mapred-site.xml
<configuration>
<property>
<name>mapred.job.tracker</name>
<value>master:54311</value>
</property>
</configuration>
- 編輯hdfs-site.xml
sudo gedit /usr/local/hadoop/etc/hadoop/hdfs-site.xml<configuration> <property> <name>dfs.replication</name> <value>3</value> </property> <property> <name>dfs.datanode.data.dir</name> <value>file:/usr/local/hadoop/hadoop_data/hdfs/datanode</value> </property> </configuration>
- 重啟data1,終端輸入ifconfig得到結果如下:
開啟瀏覽器,確認對外網路連線正常
- data1關機
Step4. 複製data1到data2、data3、master
- 將data1虛擬機器複製到data2、3和master虛擬機器,名稱可以在複製時更改。選擇重置mac地址,完全複製,需要等待一段時間。複製好後結果如下:
Step5. 設定data2、data3伺服器
- sudo gedit /etc/network/interfaces
sudo gedit /etc/hostname - 啟動data2虛擬機器,設定data2固定IP地址
改ip地址為127.168.47.102和名字data2 - 啟動data3虛擬機器,設定data2固定IP地址
改ip地址為127.168.47.103和名字data3
Step6. 設定master伺服器
在NameNode伺服器中需要設定:固定IP,hostname,hdfs-site.xml,masters,slaves
-
啟動master虛擬機器,設定ip和hostname
-
編輯hdfs-site.xml檔案
sudo gedit /usr/local/hadoop/etc/hadoop/hdfs-site.xml<configuration> <property> <name>dfs.replication</name> <value>3</value> </property> <property> <name>dfs.namenode.name.dir</name> <value>file:/usr/local/hadoop/hadoop_data/hdfs/namenode</value> </property> </configuration>
-
編輯master檔案,告訴Hadoop系統哪一臺伺服器是NameNode
sudo gedit /usr/local/hadoop/etc/hadoop/master
將檔案內容設定為master -
編輯slaves檔案,高速Hadoop系統哪些伺服器是DataNode
sudo gedit /usr/local/hadoop/etc/hadoop/slaves
將內容設定為:
data1
data2
data3
Step7. master連線到data1、data2、data3,建立HDFS目錄
之前我們已經建立了master與data1、2、3伺服器。接下來要建立NameNode(master)的SSH連線到DataNode(data1、2、3),並建立HDFS相關目錄。
-
啟動四臺伺服器
-
在master伺服器的終端程式中輸入ssh data1通過SSH登入到data1虛擬機器
-
連線到data1後我們將在data1中建立HDFS相關目錄如下,在master的終端中輸入下列程式
刪除hdfs所有目錄:
sudo rm -rf /usr/local/hadoop/hadoop_data/hdfs
建立DataNode儲存目錄:
sudo mkdir -p /usr/local/hadoop/hadoop_data/hdfs/datanode
將目錄的所有者更改為hduser
sudo chown hduser:hduser -R /usr/local/hadoop
-
輸入exit命令登出,再次登入data2,參照上述做法建立HDFS目錄
-
date3操作類似
Step8. 建立並格式化NameNode HDFS目錄
- 重新建立NameNode HDFS目錄
在master的終端程式中輸入下列命令,建立NameNode HDFS目錄:
刪除之前的HDFS目錄
sudo rm -rf /usr/local/hadoop/hadoop_data/hdfs
建立NameNode目錄
mkdir -p /usr/local/hadoop/hadoop_data/hdfs/namenode
將目錄所有者更改為hduser
sudo chown -R hduser:hduser /usr/local/hadoop - 格式化NameNode HDFS目錄
cd /usr/local/hadoop
./bin/hadoop namenode -format
Step9. 啟動Hadoop Multi Node Cluster
- 啟動Hadoop Multi Node Cluster
到此為止,我們已經完成了Hadoop cluster的構建,可以在master終端中輸入下列命令開始操作:
start-dfs.sh
start-yarn.sh
或者
start-all.sh