虚拟机配置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