温馨提示×

CentOS HDFS与Spark集成指南

小樊
44
2025-12-07 22:35:26
栏目: 智能运维

一 环境准备与版本选择

  • 操作系统与基础:建议使用 CentOS 7/8,安装 JDK 1.8,配置 SSH 免密/etc/hosts 主机解析,便于集群通信。
  • Hadoop 与 Spark 版本匹配:选择与 Hadoop 版本匹配的 Spark 发行包(如带有 “-bin-hadoop3.x” 的 Spark 包),避免客户端与服务端不兼容。
  • 组件关系澄清:Spark 并不“必须”依赖 Hadoop 才能运行,但若需读写 HDFS 或提交到 YARN,则需提供 Hadoop 客户端配置与依赖。
  • 基础目录建议:将 Hadoop 与 Spark 解压至 /opt,并统一设置环境变量(HADOOP_HOME、SPARK_HOME、PATH)。

二 安装与配置 Hadoop HDFS

  • 安装与目录:下载并解压 Hadoop,创建 dfs/name、dfs/data、tmp 等目录。
  • 核心配置示例:
    • core-site.xml:设置默认文件系统为 hdfs://:9000
    • hdfs-site.xml:设置副本数(如 dfs.replication=1 用于单机/测试)。
  • 初始化与启动:首次启动前执行 hdfs namenode -format;随后使用 start-dfs.sh 启动 NameNode/DataNode(如需 YARN,再执行 start-yarn.sh)。
  • 进程与访问校验:用 jps 检查进程是否就绪;通过 http://:50070 访问 HDFS Web UI。

三 安装与配置 Spark 连接 HDFS

  • 安装与目录:下载与 Hadoop 版本匹配的 Spark(如 spark-3.1.2-bin-hadoop3.2.tgz),解压至 /opt/spark-
  • 关键配置:
    • spark-env.sh:设置 HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop(如使用 YARN,可同时设置 YARN_CONF_DIR)。
    • spark-defaults.conf:可预设 spark.master(如 local[*] 或 spark://master:7077),以及 spark.hadoop.fs.defaultFS 指向 HDFS。
  • 启动方式:
    • Standalone:在 Spark 目录执行 start-master.shstart-worker.sh spark://:7077
    • YARN:无需启动 Spark 集群,直接通过 spark-submit --master yarn 提交作业。

四 集成验证与常见操作

  • 快速连通性验证:
    • HDFS 侧:hdfs dfs -ls / 与 hdfs dfs -mkdir -p /test 检查读写权限与连通性。
    • Spark Shell:spark-shell --master local[*] 后执行读取示例
      val rdd = sc.textFile(“hdfs://:9000/test.txt”); rdd.count()。
    • 提交示例:spark-submit --master local[*] --class org.apache.spark.examples.WordCount /path/to/spark-examples-.jar hdfs://:9000/input /output。
  • 简单应用读写 HDFS(Scala):
    • 写入:df.write.mode(“overwrite”).csv(“hdfs://:9000/test.csv”)
    • 读取:spark.read.csv(“hdfs://:9000/test.csv”).show()。
  • 历史服务器(可选):在 spark-env.sh 中设置 SPARK_HISTORY_OPTS=“-Dspark.history.fs.logDirectory=hdfs:///spark-logs”,并在 HDFS 创建目录,便于作业历史查看。

五 常见问题与排查要点

  • 版本不兼容:确认 Spark 发行包与 Hadoop 版本匹配(如 Hadoop 3.x 选用 “-bin-hadoop3.x” 的 Spark 包)。
  • 配置未生效:确保 HADOOP_CONF_DIR 指向正确的 Hadoop 配置目录,且所有节点一致;必要时在 spark-defaults.conf 显式设置 spark.hadoop.fs.defaultFS
  • 权限与路径:HDFS 目录需存在且当前用户有读写权限;必要时使用 hdfs dfs -chmod/chown 调整。
  • 防火墙与端口:开放 HDFS NameNode 50070DataNode 50075YARN 8088Spark Master 7077 等端口,或临时关闭防火墙测试。
  • 进程与日志:用 jps 检查进程是否齐全,查看 $HADOOP_HOME/logs$SPARK_HOME/logs 定位启动或作业失败原因。

0