【大数据】Hadoop三节点集群搭建

一、前置准备

1.1 系统要求

  • 操作系统:建议使用 CentOS 7/RHEL 7 或 Ubuntu 20.04。
  • Java:Hadoop 推荐 Java 8,但也支持 Java 11。
  • 内存
    • Master 节点:4 GB(建议)
    • Worker 节点:2 GB(建议)
  • 硬盘:每个节点至少 20 GB

1.2 下载 Hadoop

访问 Hadoop 官方下载页面 下载最新的稳定版(例如 Hadoop 3.4.1)。

或者直接使用命令下载二进制包(以 Hadoop 3.4.1 为例):

1.3 节点角色

假设你有三台机器(或虚拟机):

  • master:运行 NameNode 和 ResourceManager。
  • worker1worker2:运行 DataNode 和 NodeManager。

1.4 下载 Hadoop 3.4.1

在所有节点下载并解压 Hadoop 二进制包:

bash 复制代码
wget https://downloads.apache.org/hadoop/common/hadoop-3.4.1/hadoop-3.4.1.tar.gz tar -zxvf hadoop-3.4.1.tar.gz sudo mv hadoop-3.4.1 /usr/local/hadoop

1.5 注意

Hadoop 不允许以 root 用户直接操作,创建一个普通用户(如 hadoop)并赋予权限。


二、配置集群环境

2.1 配置主机名和通信

在所有节点上编辑 /etc/hosts 文件,添加以下内容:

text 复制代码
<master_IP> hadoop001
<worker1_IP> hadoop002
<worker2_IP> hadoop003

在每台机器上设置主机名:

bash 复制代码
hostnamectl set-hostname hadoop001     # 在主节点
hostnamectl set-hostname hadoop002    # 在worker1节点
hostnamectl set-hostname hadoop003    # 在worker2节点

2.2 配置 SSH 免密登录

在主节点 master 上生成 SSH 密钥:

bash 复制代码
ssh-keygen -t rsa -P ""

将密钥分发到所有节点(包括自己):

bash 复制代码
ssh-copy-id hadoop001
ssh-copy-id hadoop002
ssh-copy-id hadoop003

验证免密登录:

bash 复制代码
ssh hadoop001
ssh hadoop002
ssh hadoop003

三、配置 Hadoop

在所有节点上配置 Hadoop(/usr/local/hadoop)。以下配置以 master 节点为主,完成后将同步到其他节点。

3.1 配置环境变量

编辑 ~/.bashrc 文件,添加以下内容:

bash 复制代码
export HADOOP_HOME=/usr/local/hadoop
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

加载环境变量:

bash 复制代码
source ~/.bashrc

[!NOTE]

找到 Java 的安装路径

运行以下命令查找 Java 的安装路径:

bash 复制代码
readlink -f $(which java)

输出类似:

bash 复制代码
/usr/lib/jvm/java-1.8.0-openjdk/jre/bin/java

去掉 /bin/java 部分,得到 Java 的根目录。例如:

bash 复制代码
/usr/lib/jvm/java-1.8.0-openjdk

3.2 配置 hadoop-env.sh

编辑 $HADOOP_HOME/etc/hadoop/hadoop-env.sh

bash 复制代码
export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk

3.3 配置 core-site.xml

编辑 $HADOOP_HOME/etc/hadoop/core-site.xml

xml 复制代码
<configuration>
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://master:9000</value>
    </property>
</configuration>

3.4 配置 hdfs-site.xml

编辑 $HADOOP_HOME/etc/hadoop/hdfs-site.xml

xml 复制代码
<configuration>
    <property>
        <name>dfs.replication</name>
        <value>2</value> <!-- 数据副本数 -->
    </property>
    <property>
        <name>dfs.namenode.name.dir</name>
        <value>/usr/local/hadoop_data/hdfs/namenode</value>
    </property>
    <property>
        <name>dfs.datanode.data.dir</name>
        <value>/usr/local/hadoop_data/hdfs/datanode</value>
    </property>
</configuration>

在所有节点上创建数据目录:

bash 复制代码
mkdir -p /usr/local/hadoop_data/hdfs/namenode
mkdir -p /usr/local/hadoop_data/hdfs/datanode

3.5 配置 mapred-site.xml

复制模板文件:

bash 复制代码
cp $HADOOP_HOME/etc/hadoop/mapred-site.xml.template $HADOOP_HOME/etc/hadoop/mapred-site.xml

编辑 $HADOOP_HOME/etc/hadoop/mapred-site.xml

xml 复制代码
<configuration>
    <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>
</configuration>

3.6 配置 yarn-site.xml

编辑 $HADOOP_HOME/etc/hadoop/yarn-site.xml

xml 复制代码
<configuration>
    <property>
        <name>yarn.resourcemanager.hostname</name>
        <value>master</value>
    </property>
    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>
</configuration>

3.7 配置 slaves 文件

编辑 $HADOOP_HOME/etc/hadoop/slaves,指定所有 Worker 节点的主机名:

text 复制代码
worker1
worker2

四、启动 Hadoop 集群

4.1 格式化 HDFS

在主节点(master)上运行以下命令:

bash 复制代码
hdfs namenode -format

4.2 启动 HDFS 和 YARN

在主节点启动集群:

启动 HDFS:
bash 复制代码
start-dfs.sh
启动 YARN:
bash 复制代码
start-yarn.sh
验证:

在所有节点运行:

bash 复制代码
jps
  • master 节点应该看到:
    • NameNode
    • ResourceManager
  • worker1worker2 节点应该看到:
    • DataNode
    • NodeManager

五、验证 Hadoop 集群

5.1 验证 HDFS

运行以下命令验证 HDFS 是否工作:

bash 复制代码
hdfs dfs -mkdir /user
hdfs dfs -mkdir /user/<your-username>
hdfs dfs -ls /

5.2 上传文件到 HDFS

bash 复制代码
echo "Hello Hadoop" > hello.txt
hdfs dfs -put hello.txt /user/<your-username>
hdfs dfs -ls /user/<your-username>

5.3 访问 Web 界面

  • HDFS NameNode:http://master:9870
  • YARN ResourceManager:http://master:8088

六、停止 Hadoop 集群

停止 HDFS 和 YARN 服务:

bash 复制代码
stop-dfs.sh
stop-yarn.sh

七、注意事项

  1. 确保所有节点时间同步

    安装 ntp 服务,确保集群中时间一致:

    bash 复制代码
    sudo yum install -y ntp
    sudo systemctl start ntpd
    sudo systemctl enable ntpd
  2. 检查防火墙

    如果启用了防火墙,确保开放以下端口:

    • HDFS:9000、9870
    • YARN:8088
  3. 多节点通信

    确保 masterworker 节点之间能够通过主机名通信。

相关推荐
沙滩de流沙1 分钟前
Hadoop生态
大数据·hadoop·分布式
进击的小小学生6 分钟前
多因子模型连载
大数据·python·数据分析·区块链
qiquandongkh7 分钟前
期权懂|期权入门知识:如何选择期权合约?
大数据·区块链
互联网资讯22 分钟前
抖音生活服务商系统源码怎么搭建?
大数据·运维·人工智能·生活
Allen_LVyingbo43 分钟前
医院大数据平台建设:基于快速流程化工具集的考察
大数据·网络·人工智能·健康医疗
jiejianyun8571 小时前
零售小程序怎么自己搭建?开个小卖铺如何留住客户?
大数据
web135085886353 小时前
9. 大数据集群(PySpark)+Hive+MySQL+PyEcharts+Flask:信用贷款风险分析与预测
大数据·hive·mysql
luoganttcc6 小时前
[源码解析] 模型并行分布式训练Megatron (2) --- 整体架构
分布式·架构·大模型
神秘打工猴10 小时前
Flink 集群有哪些⻆⾊?各⾃有什么作⽤?
大数据·flink
小刘鸭!10 小时前
Flink的三种时间语义
大数据·flink