1. 项目概述:大数据平台搭建的必要性与挑战
在数据驱动的时代,企业需要处理的数据量呈指数级增长。传统单机环境已经无法满足PB级数据的存储和分析需求,分布式计算框架成为必然选择。Hadoop生态系统作为开源大数据处理的标杆解决方案,包含了HDFS分布式文件系统、YARN资源调度器以及MapReduce计算框架等核心组件。配合Hive数据仓库、HBase列式数据库和Spark内存计算引擎,可以构建完整的大数据处理平台。
选择Ubuntu 20.04 LTS作为操作系统基础,主要考虑到其长期支持特性(5年安全更新)、稳定的软件源以及对大数据组件的良好兼容性。相比CentOS等企业级发行版,Ubuntu的社区支持更活跃,遇到问题更容易找到解决方案。本教程将从裸机环境开始,逐步搭建包含四大核心组件(Hadoop+Hive+HBase+Spark)的生产可用环境。
提示:虽然本教程基于Ubuntu 20.04,但大部分步骤也适用于其他Linux发行版,只需注意包管理工具(如yum/dnf)和依赖库名称的差异即可。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 环境准备与基础配置
2.1 硬件需求与系统初始化
建议的最低硬件配置:
- 至少4核CPU(推荐8核以上)
- 16GB内存(推荐32GB以上)
- 100GB可用磁盘空间(SSD推荐)
- 千兆网络接口
实际操作中,根据数据规模和处理需求,可以选择物理机或虚拟机部署。如果是学习测试环境,使用VirtualBox或VMware创建3台虚拟机(1个Master+2个Workers)即可:
bash复制# 更新系统并安装基础工具
sudo apt update && sudo apt upgrade -y
sudo apt install -y ssh pdsh openjdk-8-jdk maven build-essential \
python3-dev python3-pip libssl-dev libffi-dev
Java环境是大数据生态的基础,必须优先配置。虽然新版本Hadoop支持Java 11,但考虑到兼容性(特别是HBase),建议使用Java 8:
bash复制# 设置Java环境变量
echo 'export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64' >> ~/.bashrc
echo 'export PATH=$JAVA_HOME/bin:$PATH' >> ~/.bashrc
source ~/.bashrc
2.2 SSH免密登录配置
Hadoop集群各节点需要通过SSH相互通信,配置免密登录可以简化操作:
bash复制# 生成密钥对(所有节点执行)
ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
# 测试本地免密登录
ssh localhost
对于多节点集群,需要将master节点的公钥分发到所有worker节点:
bash复制# 在master节点执行(假设worker IP为192.168.1.101-102)
for i in {101..102}; do ssh-copy-id -i ~/.ssh/id_rsa.pub user@192.168.1.$i; done
注意:如果使用虚拟机,建议先配置好主机名解析(/etc/hosts),使用主机名而非IP地址进行通信,避免IP变更导致配置失效。
3. Hadoop集群部署与配置
3.1 Hadoop 3.x 安装与核心配置
从Apache官网下载最新稳定版Hadoop(当前推荐3.3.4):
bash复制wget https://downloads.apache.org/hadoop/common/hadoop-3.3.4/hadoop-3.3.4.tar.gz
tar -xzf hadoop-3.3.4.tar.gz -C /opt/
ln -s /opt/hadoop-3.3.4 /opt/hadoop
配置环境变量:
bash复制echo 'export HADOOP_HOME=/opt/hadoop' >> ~/.bashrc
echo 'export PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH' >> ~/.bashrc
source ~/.bashrc
关键配置文件修改(所有节点):
- core-site.xml - 定义HDFS地址和临时目录:
xml复制<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://master:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/data/hadoop/tmp</value>
</property>
</configuration>
- hdfs-site.xml - 配置副本数和数据目录:
xml复制<configuration>
<property>
<name>dfs.
