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

相关推荐
跨境卫士苏苏22 分钟前
亚马逊卖家接口新增欧盟清关商品标识要求跨境技术团队如何适配
大数据·新媒体运营·市场营销·跨境电商·跨境·营销策略
roman_日积跬步-终至千里1 小时前
数仓方法论(四):跨过程整合——用一致性维度连接不同业务事实
大数据
roman_日积跬步-终至千里2 小时前
数仓方法论(一):需求分析——把经营诉求转化为可验证的数据需求
大数据·数据挖掘·需求分析
智恒百亿3 小时前
一台 5090 八卡服务器怎么分给一个团队用?多模型多任务的显存分配实战
java·大数据·人工智能
yyk333243 小时前
大数据工具介绍
大数据
Thanks_ks3 小时前
Cookie 和 Session 到底是什么关系——登录态是怎么维持的
分布式·http·jwt·cookie·session·后端开发·登录态
超级新零售3 小时前
服装订货会数字化:商品版本、订单状态与后续配发数据如何衔接?
大数据·小程序·企业微信
滼4 小时前
AI 数据安全面试应答框架:从大框架到小点
大数据·人工智能·安全·面试·安全架构
第九序言T4 小时前
Python 数据处理进阶(二十一)相关性与分组对比:数据里藏着什么关系
大数据·人工智能·python·数据分析·pandas
roman_日积跬步-终至千里4 小时前
数仓方法论(五):历史与增量——让变化进入数仓而不丢失解释
大数据