【大数据】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 节点之间能够通过主机名通信。

相关推荐
懒惰的橘猫23 分钟前
RDD-自定义分区器案例
大数据
zandy10111 小时前
高并发场景下的BI架构设计:衡石分布式查询引擎与缓存分级策略
分布式·缓存·高并发架构·弹性扩展·分布式查询·缓存分级·mpp引擎
富能量爆棚1 小时前
Spark缓存-cache
大数据·spark
依年南台1 小时前
Spark处理过程-案例数据清洗
大数据·hadoop
猪猪果泡酒1 小时前
Spark,RDD中的转换算子
大数据·分布式·spark
TDengine (老段)1 小时前
TDengine 做为 Spark 数据源
大数据·数据库·物联网·ajax·spark·时序数据库·tdengine
Robot2515 小时前
「华为」人形机器人赛道投资首秀!
大数据·人工智能·科技·microsoft·华为·机器人
山猪打不过家猪6 小时前
(五)毛子整洁架构(分布式日志/Redis缓存/OutBox Pattern)
分布式·缓存
jstart千语10 小时前
【Redis】分布式锁的实现
数据库·redis·分布式
CONTONUE11 小时前
运行Spark程序-在Idea中(二)
大数据·spark·intellij-idea