温馨提示×

Debian Hadoop与Spark集成探讨

小樊
33
2025-12-28 23:35:27
栏目: 智能运维

在 Debian 上集成 Hadoop 与 Spark 的实操指南

一 环境准备与版本选择

  • 安装 Java JDK 8 或 11(两者均被 Hadoop/Spark 支持),建议选择 OpenJDK 11:sudo apt update && sudo apt install openjdk-11-jdk;验证:java -version。
  • 为运行 Hadoop/Spark 的专用用户(如 hadoop)配置 SSH 免密登录:ssh-keygen -t rsa,cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys,chmod 600 ~/.ssh/authorized_keys,测试 ssh localhost。
  • 版本匹配要点:选择与 Hadoop 版本匹配的 Spark 预编译包(如 spark-3.3.2-bin-hadoop3.tgz 对应 Hadoop 3.x),避免类库冲突与兼容性问题。

二 安装与配置 Hadoop

  • 安装与目录:下载 Hadoop(如 3.3.6)并解压至 /opt/hadoop-3.3.6,建立软链:ln -s /opt/hadoop-3.3.6 /opt/hadoop。
  • 环境变量:在 /etc/profile$HADOOP_HOME/etc/hadoop/hadoop-env.sh 中设置 JAVA_HOME 与 HADOOP_HOME,例如:export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64;export HADOOP_HOME=/opt/hadoop;export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
  • 核心配置($HADOOP_HOME/etc/hadoop):
    • core-site.xml:设置默认文件系统与临时目录
      fs.defaultFShdfs://localhost:9000 hadoop.tmp.dir/opt/hadoop/tmp
    • hdfs-site.xml:单机或伪分布式建议 dfs.replication=1,并指定 NameNode/DataNode 目录
      dfs.replication1 dfs.namenode.name.dir/opt/hadoop/hdfs/namenode dfs.datanode.data.dir/opt/hadoop/hdfs/datanode
    • mapred-site.xml:指定 YARN 作为 MapReduce 框架
      mapreduce.framework.nameyarn
    • yarn-site.xml:启用 Shuffle 服务并设定 ResourceManager 主机
      yarn.nodemanager.aux-servicesmapreduce_shuffle yarn.nodemanager.aux-services.mapreduce.shuffle.classorg.apache.hadoop.mapred.ShuffleHandler yarn.resourcemanager.hostnamelocalhost
  • 初始化与启动:首次启动前执行 hdfs namenode -format;随后启动 start-dfs.shstart-yarn.sh
  • 健康检查:hdfs dfsadmin -report 查看 DataNode;yarn node -list 查看 NodeManager;访问 http://localhost:8088 查看 YARN Web UI。

三 安装与配置 Spark 以对接 Hadoop

  • 安装与目录:下载 Spark 预编译包(如 spark-3.3.2-bin-hadoop3.tgz)解压至 /opt/spark-3.3.2,建立软链:ln -s /opt/spark-3.3.2 /opt/spark。
  • 环境变量:在 /etc/profile$SPARK_HOME/conf/spark-env.sh 中设置 SPARK_HOMEPATH,例如:export SPARK_HOME=/opt/spark;export PATH=$PATH:$SPARK_HOME/bin:$SPARK_HOME/sbin
  • 对接 Hadoop 的关键配置:
    • spark-env.sh:指向 Hadoop 配置目录并加入 Hadoop Classpath
      export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
      export SPARK_DIST_CLASSPATH=$($HADOOP_HOME/bin/hadoop classpath)
    • spark-defaults.conf:使用 YARN 作为集群管理器,并指向 HDFS
      spark.master yarn
      spark.hadoop.fs.defaultFS hdfs://localhost:9000
      spark.eventLog.enabled true
      spark.eventLog.dir hdfs://localhost:9000/spark-logs
  • 启动与验证:启动 start-master.shstart-worker.sh spark://localhost:7077;访问 http://localhost:8080 查看 Spark Web UI。

四 提交作业与端到端验证

  • 快速示例:运行内置示例计算 π
    /opt/spark/bin/run-example SparkPi 10
    或提交到 YARN:
    /opt/spark/bin/spark-submit
    –class org.apache.spark.examples.SparkPi
    –master yarn
    –deploy-mode client
    /opt/spark/examples/jars/spark-examples_2.12-3.3.2.jar 10
  • 读写 HDFS 的 WordCount:
    • 准备输入:echo “hello spark hadoop” > /tmp/input.txt;hdfs dfs -mkdir -p /user/hadoop/input;hdfs dfs -put /tmp/input.txt /user/hadoop/input/input.txt
    • 提交任务:
      /opt/spark/bin/spark-submit
      –class org.apache.spark.examples.JavaWordCount
      –master yarn
      –deploy-mode client
      /opt/spark/examples/jars/spark-examples_2.12-3.3.2.jar
      hdfs://localhost:9000/user/hadoop/input/input.txt
    • 查看结果:hdfs dfs -cat /user/hadoop/output/part-*
  • 常用检查:
    • Hadoop:hdfs dfsadmin -report;yarn node -list;YARN UI http://localhost:8088
    • Spark:Spark UI http://localhost:8080;日志位于 $HADOOP_HOME/logs$SPARK_HOME/logs

五 常见问题与优化建议

  • 版本兼容:务必使用与 Hadoop 3.x 匹配的 Spark 预编译包(如 spark-3.3.2-bin-hadoop3),避免 NoClassDefFoundError 或方法签名不兼容。
  • 端口与防火墙:确保 HDFS 9000YARN 8088Spark UI 8080 等端口开放;云主机需配置安全组放行。
  • 权限与目录:HDFS 上作业目录(如 /user/hadoop/spark-logs)需存在且权限正确;必要时执行 hdfs dfs -mkdir -p 与 chmod/chown。
  • SSH 与启动:伪分布式需保证 SSH 免密可用;首次 namenode -format 仅需一次,重复格式化会导致集群 ID 不一致。
  • 资源配置:在 spark-defaults.conf 中合理设置 spark.executor.memoryspark.driver.memory 与队列(如 yarn.queue),避免与 YARN 资源超限冲突。
  • 日志与排错:优先查看 $HADOOP_HOME/logs$SPARK_HOME/logs;YARN 应用日志可通过 http://localhost:8088 进入对应应用详情页查看。

0