部署Spark集群,配置历史服务器的时候报错,显示无法连接到Hadoop101节点错误信息如下:
Exception in thread “main” java.net.ConnectException: Call From hadoop101/192.168.10.12 to hadoop101:8020 failed on connection exception: java.net.ConnectException: 拒绝连接; For more details see: http://wiki.apache.org/hadoop/ConnectionRefused
解决办法
经过排查发现大概率是端口的问题,于是查资料发现,Hadoop2.x和1.x端口是不一样的,8020端口在hadoop1.x中默认承担着namenode 和 datanode之间的心跳通信,且也兼顾着FileSystem默认的端口号(就是hdfs客户端访问hdfs集群的RPC通信端口),
但是在hadoop2.x中,8020只承担了namenode 和 datanode之间的心跳通信,并不能访问文件系统也就是8020端口在2.x的Hadoop环境并不能够访问HDFS集群,9000端口是在hadoop2.x中将FileSystem通讯端口拆分出来了,因此我们需要修改配置。将8020端口改成9000.
1)修改 spark-default.conf 文件,配置日志存储路径
spark.eventLog.enabled true
spark.eventLog.dir hdfs://hadoop101:9000/directory
2)修改 spark-env.sh 文件, 添加日志配置
export SPARK_HISTORY_OPTS="
-Dspark.history.ui.port=18080
-Dspark.history.fs.logDirectory=hdfs://hadoop101:9000/directory
-Dspark.history.retainedApplications=30"
修改配置以后重新执行测试代码
bin/spark-submit \
--class org.apache.spark.examples.SparkPi \
--master spark://hadoop101:7077 \
./examples/jars/spark-examples_2.12-3.0.0.jar \
10
可以看到日志写入HDFS成功