CentOS HDFS与Spark集成方式
导读: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状态:hdfs namenode -format start-dfs.shhdfs 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依赖分发到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 # 历史服务器日志路径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模式,可选):
验证Spark状态:start-master.sh start-worker.sh spark://namenode:7077http://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
