首页主机资讯CentOS HDFS与Spark集成方式

CentOS HDFS与Spark集成方式

时间2025-11-06 11:28:04发布访客分类主机资讯浏览764
导读:CentOS环境下HDFS与Spark集成步骤 1. 前提准备 操作系统:确保CentOS系统已更新(yum update -y),并配置好静态IP、主机名解析(/etc/hosts)及网络连通性。 基础组件:安装Java(JDK 1.8...

CentOS环境下HDFS与Spark集成步骤

1. 前提准备

  • 操作系统:确保CentOS系统已更新(yum update -y),并配置好静态IP、主机名解析(/etc/hosts)及网络连通性。
  • 基础组件:安装Java(JDK 1.8+,yum install java-1.8.0-openjdk-devel)、Hadoop(HDFS+YARN,推荐3.x版本)、Spark(与Hadoop版本兼容,如Spark 3.5.5对应Hadoop 3.x)。

2. 安装HDFS

  • 下载与解压:从Apache Hadoop官网下载稳定版本(如hadoop-3.3.6.tar.gz),解压至指定目录(如/opt/hadoop):
    tar -xzvf hadoop-3.3.6.tar.gz -C /opt/
    mv /opt/hadoop-3.3.6 /opt/hadoop
    
  • 环境变量配置:编辑/etc/profile,添加以下内容并执行source /etc/profile
    export HADOOP_HOME=/opt/hadoop
    export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
    
  • 核心配置:修改$HADOOP_HOME/etc/hadoop/core-site.xml(设置HDFS默认文件系统)和hdfs-site.xml(配置NameNode/DataNode路径及副本数):
    <
        !-- core-site.xml -->
        
    <
        property>
        
      <
        name>
        fs.defaultFS<
        /name>
        
      <
        value>
        hdfs://namenode:9000<
        /value>
        
    <
        /property>
        
    <
        !-- hdfs-site.xml -->
        
    <
        property>
        
      <
        name>
        dfs.replication<
        /name>
        
      <
        value>
        1<
        /value>
         <
        !-- 单节点测试设为1,生产环境建议≥3 -->
        
    <
        /property>
        
    <
        property>
        
      <
        name>
        dfs.namenode.name.dir<
        /name>
        
      <
        value>
        /opt/hadoop/data/namenode<
        /value>
        
    <
        /property>
        
    <
        property>
        
      <
        name>
        dfs.datanode.data.dir<
        /name>
        
      <
        value>
        /opt/hadoop/data/datanode<
        /value>
        
    <
        /property>
        
    
  • 启动HDFS:格式化NameNode(首次启动需执行),然后启动HDFS服务:
    hdfs namenode -format
    start-dfs.sh
    
    验证HDFS状态:hdfs dfsadmin -report(查看DataNode是否注册)。

3. 安装Spark

  • 下载与解压:从Apache Spark官网下载与Hadoop版本兼容的预编译包(如spark-3.5.5-bin-hadoop3.tgz),解压至指定目录(如/opt/spark):
    tar -xzvf spark-3.5.5-bin-hadoop3.tgz -C /opt/
    mv /opt/spark-3.5.5-bin-hadoop3 /opt/spark
    
  • 环境变量配置:编辑/etc/profile,添加以下内容并执行source /etc/profile
    export SPARK_HOME=/opt/spark
    export PATH=$PATH:$SPARK_HOME/bin:$SPARK_HOME/sbin
    
  • 配置环境变量:编辑$SPARK_HOME/conf/spark-env.sh(复制模板spark-env.sh.template),添加Hadoop相关配置:
    export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
    export SPARK_DIST_CLASSPATH=$(hadoop classpath)  # 让Spark加载Hadoop依赖
    
  • 配置Spark默认参数:编辑$SPARK_HOME/conf/spark-defaults.conf(复制模板spark-defaults.conf.template),添加HDFS相关配置:
    spark.hadoop.fs.defaultFS hdfs://namenode:9000  # 指向HDFS默认文件系统
    spark.eventLog.enabled true                   # 开启事件日志
    spark.eventLog.dir hdfs://namenode:9000/spark-logs  # 日志存储路径
    spark.history.fs.logDirectory hdfs://namenode:9000/spark-logs  # 历史服务器日志路径
    
    若需将Spark依赖分发到HDFS(避免每次任务分发),执行:
    hdfs dfs -mkdir -p /spark/jars
    hdfs dfs -put $SPARK_HOME/jars/* /spark/jars/
    spark.yarn.jars hdfs://namenode:9000/spark/jars/*  # 在spark-defaults.conf中配置
    
  • 启动Spark:启动Spark集群(Standalone模式,可选):
    start-master.sh
    start-worker.sh spark://namenode:7077
    
    验证Spark状态:http://namenode:8080(查看Master/Worker节点)。

4. 验证集成

  • 方式1:Spark Shell读取HDFS文件
    启动Spark Shell(本地模式),尝试读取HDFS上的文件(如/user/root/test.txt):

    spark-shell --master local[*]
    

    在Shell中执行以下代码:

    val data = spark.read.textFile("hdfs://namenode:9000/user/root/test.txt")
    data.foreach(println)
    spark.stop()
    

    若能正常打印文件内容,则说明集成成功。

  • 方式2:提交Spark作业到YARN
    若Hadoop集群启用了YARN,可将Spark作业提交到YARN集群运行(需提前启动YARN:start-yarn.sh):

    spark-submit \
      --class org.apache.spark.examples.SparkPi \
      --master yarn \
      --deploy-mode cluster \
      --num-executors 2 \
      --executor-memory 1g \
      --driver-memory 512m \
      $SPARK_HOME/examples/jars/spark-examples_2.12-3.5.5.jar 100
    

    查看YARN Web UI(http://namenode:8088),确认作业状态为“SUCCEEDED”。

5. 常见问题排查

  • Hadoop依赖缺失:若Spark启动时报错“ClassNotFoundException: org.apache.hadoop.fs.FileSystem”,需检查spark-env.sh中的HADOOP_CONF_DIR是否指向正确的Hadoop配置目录,或通过SPARK_DIST_CLASSPATH加载Hadoop依赖。
  • HDFS路径权限问题:确保Spark用户(如hadoop)对HDFS目标路径有读写权限(hdfs dfs -chmod -R 777 /user/root,测试环境可使用)。
  • 端口冲突:若HDFS或Spark端口被占用,可在配置文件中修改端口(如core-site.xml中的fs.defaultFS端口从9000改为9001)。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: CentOS HDFS与Spark集成方式
本文地址: https://pptw.com/jishu/743794.html
centos与sqlserver兼容性探讨 CentOS HDFS高可用方案探讨

游客 回复需填写必要信息