1
2
3
4
5
6
7
8
9
10
flowchart TD
A[准备阶段<br>Linux 基础环境] --> B[Hadoop 伪分布式集群部署]
B --> C[安装 Hive 构建数据仓库]
C --> D[安装 Spark 进行内存计算]
B --> E[安装 HBase 实现 NoSQL 存储]

B & C & D & E --> F{是否遇到部署难点?}
F -- 是 --> G[参考“核心难点与解决方案”]
F -- 否 --> H[环境验证与性能调优]
G --> H

🔧 第一阶段:环境准备

  1. 系统选择:推荐使用 CentOS 7/8Ubuntu 20.04/22.04 LTS,这些版本社区支持完善。假设当前用户名为 hadoop
  2. 安装 Java:Hadoop 3.x 需要 JDK 8JDK 11。以安装 OpenJDK 11 为例:
    1
    2
    3
    sudo apt update
    sudo apt install openjdk-11-jdk
    java -version # 验证安装
  3. 配置 SSH 免密登录(集群内通信必需):
    1
    2
    3
    ssh-keygen -t rsa  # 一直按回车
    cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
    ssh localhost # 测试能否免密登录本机
  4. 关闭防火墙(仅用于学习测试环境):
    1
    2
    3
    4
    sudo systemctl stop firewalld  # CentOS
    sudo systemctl disable firewalld
    # 或对于 Ubuntu
    sudo ufw disable

🗂️ 第二阶段:Hadoop 伪分布式部署

我们以 Hadoop 3.3.x 为例。

  1. 下载与解压

    1
    2
    3
    4
    wget https://archive.apache.org/dist/hadoop/common/hadoop-3.3.4/hadoop-3.3.4.tar.gz
    sudo tar -xzf hadoop-3.3.4.tar.gz -C /usr/local/
    sudo mv /usr/local/hadoop-3.3.4 /usr/local/hadoop
    sudo chown -R hadoop:hadoop /usr/local/hadoop # 修改所属用户
  2. 配置环境变量
    编辑 ~/.bashrc 文件,在末尾添加:

    1
    2
    3
    export HADOOP_HOME=/usr/local/hadoop
    export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
    export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64 # 请根据实际路径修改

    执行 source ~/.bashrc 使配置生效。

  3. 修改 Hadoop 核心配置文件
    所有配置文件都在 $HADOOP_HOME/etc/hadoop/ 目录下。

    • hadoop-env.sh:确保 JAVA_HOME 已正确设置。
    • core-site.xml:配置默认文件系统和临时目录。
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      <configuration>
      <property>
      <name>fs.defaultFS</name>
      <value>hdfs://localhost:9000</value>
      </property>
      <property>
      <name>hadoop.tmp.dir</name>
      <value>/usr/local/hadoop/tmp</value>
      </property>
      </configuration>
    • hdfs-site.xml:配置 HDFS,副本数设为1(单节点)。
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      <configuration>
      <property>
      <name>dfs.replication</name>
      <value>1</value>
      </property>
      <property>
      <name>dfs.namenode.name.dir</name>
      <value>file://${hadoop.tmp.dir}/dfs/name</value>
      </property>
      <property>
      <name>dfs.datanode.data.dir</name>
      <value>file://${hadoop.tmp.dir}/dfs/data</value>
      </property>
      </configuration>
    • mapred-site.xml:配置 MapReduce 使用 YARN。
      1
      2
      3
      4
      5
      6
      <configuration>
      <property>
      <name>mapreduce.framework.name</name>
      <value>yarn</value>
      </property>
      </configuration>
    • yarn-site.xml:配置 YARN。
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      <configuration>
      <property>
      <name>yarn.nodemanager.aux-services</name>
      <value>mapreduce_shuffle</value>
      </property>
      <property>
      <name>yarn.nodemanager.env-whitelist</name>
      <value>JAVA_HOME,HADOOP_COMMON_HOME,...</value>
      </property>
      </configuration>
  4. 格式化与启动

    1
    2
    3
    hdfs namenode -format  # 首次运行前必须格式化
    start-dfs.sh # 启动 HDFS
    start-yarn.sh # 启动 YARN

    使用 jps 命令检查,应出现 NameNodeDataNodeResourceManagerNodeManager 等进程。通过浏览器访问 http://<服务器IP>:9870 (HDFS) 和 http://<服务器IP>:8088 (YARN) 进行验证。

📊 第三阶段:安装 Hive(数据仓库工具)

Hive 让你能用 SQL 查询 Hadoop 数据。

  1. 下载安装(以 Hive 3.1.3 为例):
    1
    2
    3
    wget https://downloads.apache.org/hive/hive-3.1.3/apache-hive-3.1.3-bin.tar.gz
    tar -xzf apache-hive-3.1.3-bin.tar.gz -C /usr/local/
    sudo mv /usr/local/apache-hive-3.1.3-bin /usr/local/hive
  2. 配置环境变量:在 ~/.bashrc 中添加 HIVE_HOME=/usr/local/hive 并更新 PATH
  3. 配置 Metastore:Hive 的元数据默认存储在 Derby 数据库中(适合测试)。进入 $HIVE_HOME/conf,复制配置模板并初始化:
    1
    2
    cp hive-default.xml.template hive-site.xml
    schematool -initSchema -dbType derby
  4. 启动 Hive:执行 hive 命令即可进入交互式命令行。

⚡ 第四阶段:安装 Spark(内存计算引擎)

Spark 可以替代 MapReduce 进行更快的数据处理。

  1. 下载安装(以 Spark 3.3.2 为例,选择与 Hadoop 3.3+ 预编译的版本):
    1
    2
    3
    wget https://archive.apache.org/dist/spark/spark-3.3.2/spark-3.3.2-bin-hadoop3.tgz
    tar -xzf spark-3.3.2-bin-hadoop3.tgz -C /usr/local/
    sudo mv /usr/local/spark-3.3.2-bin-hadoop3 /usr/local/spark
  2. 配置环境变量:在 ~/.bashrc 中添加 SPARK_HOME=/usr/local/spark 并更新 PATH
  3. 配置:进入 $SPARK_HOME/conf,复制配置模板:
    1
    cp spark-env.sh.template spark-env.sh
    编辑 spark-env.sh,添加 export JAVA_HOME=/your/java/home
  4. 验证:运行 spark-shell 进入 Scala Shell,或运行 pyspark 进入 Python Shell。

🚨 核心难点与解决方案

在实际部署中,你可能会遇到以下挑战:

难点 可能原因 解决方案
SSH 免密登录失败 权限过大、authorized_keys 格式问题 确保 ~/.ssh 目录权限为 700,文件为 600;使用 ssh -v localhost 查看详细连接日志。
HDFS 启动后 DataNode 未启动 多次格式化导致 DataNode 与 NameNode 的 clusterID 不一致 清空 hdfs-site.xml 中配置的 dfs.namenode.name.dirdfs.datanode.data.dir 目录,然后重新格式化。
Hive 初始化或连接失败 hive-site.xml 配置错误、Derby 数据库冲突 检查 hive-site.xml 中关键的 JDBC 连接、存储路径配置;确保没有多个 Hive 实例同时访问同一个 Derby 数据库。
Spark 作业提交到 YARN 失败 内存配置冲突、依赖包缺失 spark-submit 中正确设置 --master yarn;根据 YARN 资源池大小,调整 Spark 的 spark.executor.memory 参数,避免请求资源超限。
HDFS 小文件问题 大量小文件耗尽 NameNode 内存 从源头合并小文件;使用 Hadoop Archive (HAR) 将小文件打包;考虑使用支持小文件合并的引擎(如 Spark)进行预处理。
整体环境复杂 Hadoop 生态组件多,集成配置繁琐 严格按照组件兼容版本搭配(如 Hadoop 3.3.x + Hive 3.1.x + Spark 3.3.x);可以使用 Docker 或 Ambari 等管理工具简化部署。

💡 环境验证与性能调优建议

  • 基础验证:在 HDFS 上创建目录、上传文件,运行 Hadoop 自带的 WordCount 示例,用 Hive 创建表并查询。
  • 初步调优
    • HDFS:根据数据大小和磁盘性能,调整 dfs.blocksize(如设为 256MB)。
    • YARN:根据机器内存,调整 yarn.nodemanager.resource.memory-mbyarn.scheduler.maximum-allocation-mb,避免内存超分。
    • MapReduce/Spark:调整任务并行度(mapreduce.job.maps/reducesspark.sql.shuffle.partitions),合理设置 JVM 堆内存。

这套环境为你提供了一个坚实的大数据学习与本地实验平台。如果你想针对某个组件(比如 Hive 的性能调优、Spark 与 YARN 的深度集成)进行更深入的探索,我可以为你提供更具体的信息。