基于你的服务器配置(3 台服务器,每台 16 核、128 GB 内存、1TB SSD 和 4TB SATA 硬盘),以下是如何安装和配置一个 Hadoop/HDFS 集群 的详细指南。


1. Hadoop 集群规划

在 Hadoop 集群中,HDFS 是分布式存储系统,通常需要以下角色:

  1. NameNode:负责管理文件系统的元数据(如文件和块的映射)。
  2. DataNode:负责实际存储数据块,并执行存储操作。
  3. Secondary NameNode:辅助 NameNode 进行元数据检查点操作(并非备份)。
  4. ResourceManager:负责管理集群资源(YARN)。
  5. NodeManager:负责每个节点上的任务调度和资源管理。

节点角色规划

基于你的 3 台服务器,可以采用以下规划:


2. 准备工作

2.1 操作系统和用户

确保所有服务器都运行 Linux/Ubuntu (建议 Ubuntu 22.04) 系统,并创建统一的 Hadoop 用户:

创建 Hadoop 用户:

sudo adduser hadoop
sudo usermod -aG sudo hadoop

切换到 Hadoop 用户:

su - hadoop


2.2 SSH 配置(无密码登录)

Hadoop 集群需要无密码的 SSH 通信。

生成 SSH 密钥:

Server 1 上运行以下命令:

ssh-keygen -t rsa

将生成的公钥 ~/.ssh/id_rsa.pub 分发到所有节点(包括 Server 1 本身)。

将公钥添加到每个节点的 ~/.ssh/authorized_keys

ssh-copy-id hadoop@server2_ip
ssh-copy-id hadoop@server3_ip
ssh-copy-id hadoop@server1_ip

验证无密码登录:

ssh hadoop@server2_ip
ssh hadoop@server3_ip


2.3 安装 Java

Hadoop 需要 Java 环境:

安装 OpenJDK:

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

验证 Java 版本:

java -version


2.4 下载 Hadoop

下载 Hadoop 二进制文件:

从 Apache 官方网站下载 Hadoop:

wget https://downloads.apache.org/hadoop/common/hadoop-3.3.6/hadoop-3.3.6.tar.gz

解压并配置环境变量:

tar -xvzf hadoop-3.3.6.tar.gz
mv hadoop-3.3.6 ~/hadoop
nano ~/.bashrc

~/.bashrc 添加以下内容:

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

使环境变量生效:

source ~/.bashrc


3. 配置 Hadoop/HDFS

3.1 编辑 Hadoop 配置文件

以下是需要修改的配置文件:

1. core-site.xml

路径:$HADOOP_HOME/etc/hadoop/core-site.xml

配置:

<configuration>
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://server1_ip:9000</value>
    </property>
    <property>
        <name>hadoop.tmp.dir</name>
        <value>/tmp/hadoop-${user.name}</value>
    </property>
</configuration>

2. hdfs-site.xml

路径:$HADOOP_HOME/etc/hadoop/hdfs-site.xml

配置:

<configuration>
    <property>
        <name>dfs.replication</name>
        <value>2</value>
    </property>
    <property>
        <name>dfs.namenode.name.dir</name>
        <value>file:///home/hadoop/hdfs/namenode</value>
    </property>
    <property>
        <name>dfs.datanode.data.dir</name>
        <value>file:///home/hadoop/hdfs/datanode</value>
    </property>
</configuration>

3. yarn-site.xml

路径:$HADOOP_HOME/etc/hadoop/yarn-site.xml

配置:

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

4. mapred-site.xml

路径:$HADOOP_HOME/etc/hadoop/mapred-site.xml

复制模板文件并编辑:

cp $HADOOP_HOME/etc/hadoop/mapred-site.xml.template $HADOOP_HOME/etc/hadoop/mapred-site.xml

配置:

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


3.2 格式化 NameNode

Server 1 上格式化 NameNode:

hdfs namenode -format


3.3 启动 Hadoop 服务

启动 HDFS:

Server 1 上运行:

start-dfs.sh

启动 YARN:

Server 1 上运行:

start-yarn.sh

验证启动:


4. 验证 HDFS 集群

4.1 基本 HDFS 操作

4.2 访问 Web UI

Hadoop 提供了 Web 界面来监控集群状态:

  1. NameNode Web UI(Server 1):http://server1_ip:9870
  2. ResourceManager Web UI(Server 1):http://server1_ip:8088

5. 磁盘存储规划

你的服务器有两块硬盘(1TB SSD 和 4TB SATA),可以按以下方式配置存储:

hdfs-site.xml 中配置多个存储目录:

<property>
    <name>dfs.datanode.data.dir</name>
    <value>file:///mnt/ssd/data,file:///mnt/sata/data</value>
</property>

确保你挂载了这两个硬盘到相应的目录,如 /mnt/ssd/mnt/sata


6. 总结

  1. 规划角色
    • Server 1:NameNode、ResourceManager、Secondary NameNode。
    • Server 2 和 Server 3:DataNode、NodeManager。
  2. 安装和配置
    • 安装 Java 和 Hadoop。
    • 配置核心文件(core-site.xmlhdfs-site.xmlyarn-site.xml)。
  3. 启用集群
    • 格式化 NameNode。
    • 启动 HDFS 和 YARN。
  4. 验证集群状态
    • 使用 hdfs dfs 命令和 Web UI 界面。

通过上述步骤,你可以成功部署一个 3 节点的 Hadoop/HDFS 集群,并将其用于分布式存储和计算任务。