JDK 17 Hadoop 3.3.5 Spark 3.3.2 集群搭建避坑全记录从虚拟机互信到圆周率测试搭建大数据集群环境是每个数据工程师的必修课但过程中总会遇到各种坑。本文将详细记录基于JDK 17、Hadoop 3.3.5和Spark 3.3.2的集群搭建全过程重点分享那些容易踩坑的环节和解决方案。不同于普通的安装教程这里会还原真实操作中遇到的报错场景提供经过验证的解决方法。1. 环境准备与基础配置1.1 虚拟机环境搭建选择CentOS 8.5作为基础系统建议分配至少4GB内存和20GB存储空间。以下是关键配置步骤网络配置确保所有虚拟机使用桥接模式获取同一网段的IP地址软件源设置使用阿里云镜像加速软件安装sed -i s|mirrorlist|#mirrorlist|g /etc/yum.repos.d/CentOS-* sed -i s|#baseurlhttp://mirror.centos.org|baseurlhttp://mirrors.aliyun.com|g /etc/yum.repos.d/CentOS-*1.2 JDK 17安装与配置Hadoop 3.3.x开始支持JDK 17但需要注意以下要点下载JDK 17 RPM包并安装rpm -ivh jdk-17_linux-x64_bin.rpm环境变量配置/etc/profile需特别添加JVM参数export JAVA_HOME/usr/lib/jvm/jdk-17 export PATH$PATH:$JAVA_HOME/bin export HADOOP_OPTS--add-opens java.base/java.langALL-UNNAMED注意如果不添加--add-opens参数后续Hadoop启动时会报java.lang.reflect.InaccessibleObjectException错误2. 集群SSH互信配置2.1 主机克隆与基础设置采用一主三从架构先配置好master节点后克隆出vice1-3节点。克隆后需要修改每台主机的hostnamehostnamectl set-hostname master # 分别修改为vice1-3更新/etc/hosts文件确保包含所有节点IP映射192.168.1.101 master 192.168.1.102 vice1 192.168.1.103 vice2 192.168.1.104 vice32.2 SSH免密登录配置执行以下步骤建立互信关系各节点生成密钥对ssh-keygen -t rsa -P -f ~/.ssh/id_rsa合并所有公钥到authorized_keyscat ~/.ssh/id_rsa.pub ~/.ssh/authorized_keys # 将其他节点的公钥内容追加到该文件设置权限关键步骤权限不对会导致免密失败chmod 700 ~/.ssh chmod 600 ~/.ssh/authorized_keys常见问题排查如果仍需输入密码检查/var/log/secure日志确保SELinux已禁用setenforce 03. Hadoop集群部署3.1 关键配置文件调整Hadoop 3.3.5的配置与之前版本有显著差异以下是核心配置项core-site.xmlproperty namefs.defaultFS/name valuehdfs://master:9000/value /property property namehadoop.http.staticuser.user/name valueroot/value /propertyhdfs-site.xmlproperty namedfs.namenode.http-address/name valuemaster:9870/value !-- 注意端口变化 -- /property property namedfs.replication/name value3/value /propertyyarn-site.xmlproperty nameyarn.nodemanager.aux-services/name valuemapreduce_shuffle/value /property property nameyarn.resourcemanager.hostname/name valuemaster/value /property3.2 启动问题排查首次启动Hadoop时常见错误及解决方案NameNode未格式化hdfs namenode -format权限问题导致进程启动失败 在/etc/profile中添加export HDFS_NAMENODE_USERroot export HDFS_DATANODE_USERroot export YARN_RESOURCEMANAGER_USERroot export YARN_NODEMANAGER_USERrootWeb UI无法访问检查防火墙状态systemctl stop firewalld确认端口是否正确Hadoop 3.x使用9870替代了500704. Spark on YARN集成4.1 Spark配置要点使用Spark 3.3.2的without-hadoop版本需特别注意spark-defaults.conf关键配置spark.master yarn spark.eventLog.enabled true spark.eventLog.dir hdfs://master:9000/spark-eventlog spark.serializer org.apache.spark.serializer.KryoSerializerspark-env.sh必须包含export SPARK_DIST_CLASSPATH$(/opt/hadoop-3.3.5/bin/hadoop classpath)在HDFS上创建事件日志目录hdfs dfs -mkdir /spark-eventlog hdfs dfs -chmod 777 /spark-eventlog4.2 圆周率测试问题排查执行Spark Pi测试时常见问题ClassNotFound异常 确保spark-submit命令包含完整的jar路径spark-submit --master yarn --class org.apache.spark.examples.SparkPi \ /opt/spark/examples/jars/spark-examples_2.12-3.3.2.jar 100资源不足错误 调整executor内存配置spark-submit --master yarn --num-executors 2 --executor-memory 1g ...查看日志技巧通过YARN Web UI8088端口查看应用日志直接查看容器日志yarn logs -applicationId app_id5. 性能调优与维护建议5.1 内存配置优化针对JDK 17和Hadoop/Spark的配合推荐以下JVM参数组件参数推荐值说明NameNode-Xmx2-4G根据元数据量调整DataNode-Xmx1-2G通常不需要太大Spark Driverspark.driver.memory2-4G控制驱动进程内存Spark Executorspark.executor.memory4-8G每个执行器内存5.2 日常维护命令常用监控和维护命令集合HDFS健康检查hdfs dfsadmin -report hdfs fsck / -files -blocksYARN应用管理yarn application -list yarn application -kill app_idSpark历史日志 启动历史服务器${SPARK_HOME}/sbin/start-history-server.sh经过完整测试的集群应该能够稳定运行批处理和交互式作业。在实际项目中建议进一步配置监控系统如PrometheusGrafana来跟踪集群健康状态。
JDK 17 + Hadoop 3.3.5 + Spark 3.3.2 集群搭建避坑全记录:从虚拟机互信到圆周率测试
JDK 17 Hadoop 3.3.5 Spark 3.3.2 集群搭建避坑全记录从虚拟机互信到圆周率测试搭建大数据集群环境是每个数据工程师的必修课但过程中总会遇到各种坑。本文将详细记录基于JDK 17、Hadoop 3.3.5和Spark 3.3.2的集群搭建全过程重点分享那些容易踩坑的环节和解决方案。不同于普通的安装教程这里会还原真实操作中遇到的报错场景提供经过验证的解决方法。1. 环境准备与基础配置1.1 虚拟机环境搭建选择CentOS 8.5作为基础系统建议分配至少4GB内存和20GB存储空间。以下是关键配置步骤网络配置确保所有虚拟机使用桥接模式获取同一网段的IP地址软件源设置使用阿里云镜像加速软件安装sed -i s|mirrorlist|#mirrorlist|g /etc/yum.repos.d/CentOS-* sed -i s|#baseurlhttp://mirror.centos.org|baseurlhttp://mirrors.aliyun.com|g /etc/yum.repos.d/CentOS-*1.2 JDK 17安装与配置Hadoop 3.3.x开始支持JDK 17但需要注意以下要点下载JDK 17 RPM包并安装rpm -ivh jdk-17_linux-x64_bin.rpm环境变量配置/etc/profile需特别添加JVM参数export JAVA_HOME/usr/lib/jvm/jdk-17 export PATH$PATH:$JAVA_HOME/bin export HADOOP_OPTS--add-opens java.base/java.langALL-UNNAMED注意如果不添加--add-opens参数后续Hadoop启动时会报java.lang.reflect.InaccessibleObjectException错误2. 集群SSH互信配置2.1 主机克隆与基础设置采用一主三从架构先配置好master节点后克隆出vice1-3节点。克隆后需要修改每台主机的hostnamehostnamectl set-hostname master # 分别修改为vice1-3更新/etc/hosts文件确保包含所有节点IP映射192.168.1.101 master 192.168.1.102 vice1 192.168.1.103 vice2 192.168.1.104 vice32.2 SSH免密登录配置执行以下步骤建立互信关系各节点生成密钥对ssh-keygen -t rsa -P -f ~/.ssh/id_rsa合并所有公钥到authorized_keyscat ~/.ssh/id_rsa.pub ~/.ssh/authorized_keys # 将其他节点的公钥内容追加到该文件设置权限关键步骤权限不对会导致免密失败chmod 700 ~/.ssh chmod 600 ~/.ssh/authorized_keys常见问题排查如果仍需输入密码检查/var/log/secure日志确保SELinux已禁用setenforce 03. Hadoop集群部署3.1 关键配置文件调整Hadoop 3.3.5的配置与之前版本有显著差异以下是核心配置项core-site.xmlproperty namefs.defaultFS/name valuehdfs://master:9000/value /property property namehadoop.http.staticuser.user/name valueroot/value /propertyhdfs-site.xmlproperty namedfs.namenode.http-address/name valuemaster:9870/value !-- 注意端口变化 -- /property property namedfs.replication/name value3/value /propertyyarn-site.xmlproperty nameyarn.nodemanager.aux-services/name valuemapreduce_shuffle/value /property property nameyarn.resourcemanager.hostname/name valuemaster/value /property3.2 启动问题排查首次启动Hadoop时常见错误及解决方案NameNode未格式化hdfs namenode -format权限问题导致进程启动失败 在/etc/profile中添加export HDFS_NAMENODE_USERroot export HDFS_DATANODE_USERroot export YARN_RESOURCEMANAGER_USERroot export YARN_NODEMANAGER_USERrootWeb UI无法访问检查防火墙状态systemctl stop firewalld确认端口是否正确Hadoop 3.x使用9870替代了500704. Spark on YARN集成4.1 Spark配置要点使用Spark 3.3.2的without-hadoop版本需特别注意spark-defaults.conf关键配置spark.master yarn spark.eventLog.enabled true spark.eventLog.dir hdfs://master:9000/spark-eventlog spark.serializer org.apache.spark.serializer.KryoSerializerspark-env.sh必须包含export SPARK_DIST_CLASSPATH$(/opt/hadoop-3.3.5/bin/hadoop classpath)在HDFS上创建事件日志目录hdfs dfs -mkdir /spark-eventlog hdfs dfs -chmod 777 /spark-eventlog4.2 圆周率测试问题排查执行Spark Pi测试时常见问题ClassNotFound异常 确保spark-submit命令包含完整的jar路径spark-submit --master yarn --class org.apache.spark.examples.SparkPi \ /opt/spark/examples/jars/spark-examples_2.12-3.3.2.jar 100资源不足错误 调整executor内存配置spark-submit --master yarn --num-executors 2 --executor-memory 1g ...查看日志技巧通过YARN Web UI8088端口查看应用日志直接查看容器日志yarn logs -applicationId app_id5. 性能调优与维护建议5.1 内存配置优化针对JDK 17和Hadoop/Spark的配合推荐以下JVM参数组件参数推荐值说明NameNode-Xmx2-4G根据元数据量调整DataNode-Xmx1-2G通常不需要太大Spark Driverspark.driver.memory2-4G控制驱动进程内存Spark Executorspark.executor.memory4-8G每个执行器内存5.2 日常维护命令常用监控和维护命令集合HDFS健康检查hdfs dfsadmin -report hdfs fsck / -files -blocksYARN应用管理yarn application -list yarn application -kill app_idSpark历史日志 启动历史服务器${SPARK_HOME}/sbin/start-history-server.sh经过完整测试的集群应该能够稳定运行批处理和交互式作业。在实际项目中建议进一步配置监控系统如PrometheusGrafana来跟踪集群健康状态。