Hadoop 在 VMware 虚拟机上的部署手册

 

1. 前置条件

 

1.1 硬件与软件要求

 

  • 宿主机:实验室电脑(建议至少 4 核 CPU、16GB 内存、100GB 可用硬盘空间)。

  • 虚拟化软件:VMware Workstation(推荐 16.x 或更高版本)。

  • 虚拟机配置

    • 数量:每位同学 1 台虚拟机,建议至少 3-5 台组成集群。

    • 配置:每台虚拟机 2 核 CPU、4GB 内存、20GB 硬盘。

  • 操作系统:Ubuntu 20.04 LTS。

  • Hadoop 版本:3.3.6。

 

1.2 网络规划

 

  • 网络模式:使用 VMware 的 NAT 模式桥接模式(桥接模式更接近真实网络环境)。

  • IP 分配

    • Master 节点:192.168.1.100(固定 IP)。

    • Slave 节点:192.168.1.101, 192.168.1.102, ...(依次递增)。

  • 主机名:master, slave1, slave2, ...。

 


2. 虚拟机准备

 

2.1 创建基础虚拟机

 

  1. 安装 VMware Workstation
    在实验室电脑上安装 VMware Workstation(若未安装,可从官网下载)。

  2. 创建第一台虚拟机

    • 打开 VMware,选择“创建新虚拟机”。

    • 选择 Ubuntu 20.04 ISO 文件(从 ubuntu.com 下载)。

    • 配置:2 核 CPU、4GB 内存、20GB 硬盘。

    • 网络适配器:选择“桥接模式”或“NAT 模式”。

    • 安装 Ubuntu 系统,设置用户名为 hadoopuser(或其他统一名称)。

  3. 克隆虚拟机

    • 安装完成后,右键基础虚拟机 -> “管理” -> “克隆”,创建多个副本(例如 3 台:1 个 Master,2 个 Slave)。

    • 为每台虚拟机设置唯一的主机名和 IP。

 

2.2 配置网络

 

  1. 修改主机名
    在每台虚拟机中:
    bash
    收起自动换行复制

    	sudo hostnamectl set-hostname master  # Master 节点
    	sudo hostnamectl set-hostname slave1  # Slave1 节点
    	sudo hostnamectl set-hostname slave2  # Slave2 节点

  2. 设置固定 IP(以桥接模式为例):
    编辑网络配置文件:
    bash
    收起自动换行复制
    sudo nano /etc/netplan/01-netcfg.yaml
    示例(Master 节点):
    yaml
    收起自动换行复制

    	network:
    	  version: 2
    	  ethernets:
    	    ens33:
    	      dhcp4: no
    	      addresses:
    	        - 192.168.1.100/24
    	      gateway4: 192.168.1.1
    	      nameservers:
    	        addresses: [8.8.8.8, 8.8.4.4]

    Slave1 为 192.168.1.101,Slave2 为 192.168.1.102,依此类推。
    应用配置:
    bash
    收起自动换行复制
    sudo netplan apply

  3. 配置 hosts 文件
    在每台虚拟机中编辑 /etc/hosts:
    bash
    收起自动换行复制
    sudo nano /etc/hosts
    添加:
    text
    收起自动换行复制

    	192.168.1.100 master
    	192.168.1.101 slave1
    	192.168.1.102 slave2

  4. 测试网络
    bash
    收起自动换行复制

    	ping master
    	ping slave1
    	ping slave2

    确保节点间可互相 ping 通。

 


3. 安装与配置 Hadoop

 

3.1 安装依赖

 

在每台虚拟机上执行:

 

  1. 安装 Java
    bash
    收起自动换行复制

    	sudo apt update
    	sudo apt install openjdk-11-jdk -y
    	java -version

  2. 安装 SSH
    bash
    收起自动换行复制

    	sudo apt install openssh-server openssh-client -y
    	ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
    	cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
    	chmod 600 ~/.ssh/authorized_keys

  3. 配置 SSH 无密码登录
    在 Master 节点生成密钥并分发:
    bash
    收起自动换行复制

    	ssh-copy-id hadoopuser@master
    	ssh-copy-id hadoopuser@slave1
    	ssh-copy-id hadoopuser@slave2

    测试:ssh slave1(应无需密码)。

 

3.2 安装 Hadoop

 

  1. 下载并解压(每台虚拟机执行):
    bash
    收起自动换行复制

    	wget https://dlcdn.apache.org/hadoop/common/hadoop-3.3.6/hadoop-3.3.6.tar.gz
    	tar -xzf hadoop-3.3.6.tar.gz
    	sudo mv hadoop-3.3.6 /usr/local/hadoop

  2. 设置环境变量(每台虚拟机):
    编辑 ~/.bashrc:
    bash
    收起自动换行复制
    nano ~/.bashrc
    添加:
    bash
    收起自动换行复制

    	export HADOOP_HOME=/usr/local/hadoop
    	export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
    	export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64

    应用:
    bash
    收起自动换行复制
    source ~/.bashrc

 

3.3 配置 Hadoop

 

  1. 编辑配置文件(位于 $HADOOP_HOME/etc/hadoop/,每台虚拟机一致):

    • core-site.xml:
      xml
      收起自动换行复制

      		<configuration>
      		    <property>
      		        <name>fs.defaultFS</name>
      		        <value>hdfs://master:9000</value>
      		    </property>
      		</configuration>

    • hdfs-site.xml:
      xml
      收起自动换行复制

      		<configuration>
      		    <property>
      		        <name>dfs.replication</name>
      		        <value>2</value>
      		    </property>
      		    <property>
      		        <name>dfs.namenode.name.dir</name>
      		        <value>/home/hadoopuser/hadoopdata/namenode</value>
      		    </property>
      		    <property>
      		        <name>dfs.datanode.data.dir</name>
      		        <value>/home/hadoopuser/hadoopdata/datanode</value>
      		    </property>
      		</configuration>

    • mapred-site.xml:
      xml
      收起自动换行复制

      		<configuration>
      		    <property>
      		        <name>mapreduce.framework.name</name>
      		        <value>yarn</value>
      		    </property>
      		</configuration>

    • yarn-site.xml:
      xml
      收起自动换行复制

      		<configuration>
      		    <property>
      		        <name>yarn.nodemanager.aux-services</name>
      		        <value>mapreduce_shuffle</value>
      		    </property>
      		    <property>
      		        <name>yarn.resourcemanager.hostname</name>
      		        <value>master</value>
      		    </property>
      		</configuration>

  2. 配置 workers 文件(仅 Master 节点):
    bash
    收起自动换行复制
    nano $HADOOP_HOME/etc/hadoop/workers
    输入:
    text
    收起自动换行复制

    	slave1
    	slave2

  3. 设置 JAVA_HOME(每台虚拟机):
    编辑 $HADOOP_HOME/etc/hadoop/hadoop-env.sh:
    bash
    收起自动换行复制
    export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64

  4. 创建数据目录(每台虚拟机):
    bash
    收起自动换行复制

    	mkdir -p ~/hadoopdata/namenode
    	mkdir -p ~/hadoopdata/datanode
    	chmod -R 755 ~/hadoopdata

 


4. 启动与验证

 

4.1 启动 Hadoop(仅在 Master 节点)

 

  1. 格式化 HDFS
    bash
    收起自动换行复制
    $HADOOP_HOME/bin/hdfs namenode -format

  2. 启动服务
    bash
    收起自动换行复制

    	$HADOOP_HOME/sbin/start-dfs.sh
    	$HADOOP_HOME/sbin/start-yarn.sh

 

4.2 验证

 

  1. 检查进程

    • Master:jps,应看到 NameNode, ResourceManager。

    • Slave:jps,应看到 DataNode, NodeManager。

  2. 访问 Web UI

 

4.3 测试运行

 

  1. 上传文件到 HDFS
    bash
    收起自动换行复制

    	$HADOOP_HOME/bin/hdfs dfs -mkdir /input
    	echo "Hello Hadoop Cluster" > test.txt
    	$HADOOP_HOME/bin/hdfs dfs -put test.txt /input

  2. 运行 WordCount 示例
    bash
    收起自动换行复制

    	$HADOOP_HOME/bin/hadoop jar $HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.6.jar wordcount /input /output
    	$HADOOP_HOME/bin/hdfs dfs -cat /output/part-r-00000

 


5. 管理与维护

 

  • 停止服务(Master 节点):
    bash
    收起自动换行复制

    	$HADOOP_HOME/sbin/stop-dfs.sh
    	$HADOOP_HOME/sbin/stop-yarn.sh

  • 查看日志:$HADOOP_HOME/logs。

  • 扩展集群:新增 Slave 节点时,更新 workers 文件并重启服务。

 


6. 注意事项

 

  • 资源限制:确保宿主机资源足够,避免虚拟机性能瓶颈。

  • 网络问题:若 ping 不通,检查 VMware 网络设置或防火墙。

  • 教学管理:建议每位同学记录自己的 IP 和主机名,便于协调。

作者:信息技术教研室  创建时间:2025-02-25 21:37
最后编辑:信息技术教研室  更新时间:2025-08-13 10:53