【大数据】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。
  • worker1 和 worker2:运行 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
  • 在 worker1 和 worker2 节点应该看到:
    • 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. 多节点通信 :

    确保 master 和 worker 节点之间能够通过主机名通信。

相关推荐
nvd117 小时前
Flink 批处理驱动的湖仓 AI 财务研报流水线:从双流广播汇聚到 Agent 智能决策与原生 Iceberg 落盘全景实战
大数据·人工智能·flink
计算机编程指导师9 小时前
【计算机毕设推荐】基于Hadoop+Spark的公共交通运营数据分析与可视化系统源码 毕业设计 选题推荐 毕设选题 数据分析 机器学习
大数据·hadoop·python·计算机·数据分析·spark·交通
QYR_1111 小时前
机械制造用固体润滑涂层市场分析:2032年全球市场规模预计达8.78亿元,CAGR为6.2%
大数据·人工智能·物联网
数字化顾问11 小时前
(144页PPT)数字化转型汽车企业数智化战略规划(附下载方式)
大数据
智慧物业老杨12 小时前
数字底座,重构小区治理秩序
大数据
计算机编程指导师13 小时前
【计算机毕设选题推荐】基于Hadoop的宫颈癌变进程光谱数据分析系统源码 毕业设计 选题推荐 毕设选题 数据分析 机器学习
大数据·hadoop·python·数据分析·spark·毕业设计·宫颈癌变
Pniubi13 小时前
分布式锁分类讲解
分布式
guhunyihan13 小时前
无代码系统搭建平台,探索恐象 AI 带来的开发新范式
大数据·人工智能
计算机编程指导师14 小时前
【计算机毕设选题推荐】基于Hadoop+Spark的化妆品销售大数据分析系统源码 毕业设计 选题推荐 毕设选题 数据分析 机器学习
大数据·hadoop·python·spark·毕业设计·课程设计·化妆品
benchmark_cc14 小时前
前复权数据每天可能变化,历史数据库应该覆盖还是保留原始价格?
大数据·python·pandas·量化交易·股票数据·quantdash