第2组-Spark¶
实验5¶
上机实践名称: Spark部署
上机实践日期:2024年5月7日
问题1:Spark单机伪分布式实验时,无法在浏览器中看到Spark内部结点的运行情况。
我发现自己输入 http://localhost:8080 就看不到 Master 和 Worker。经过一段时间的排查,我发现自己的云主机压根没有开启8080这个端口。在ucloud的防火墙设置中我顺便开启了4040和18080这两个端口再次进行试验,也方便了之后的实验,最后我终于能在浏览器中看到了Spark的运行情况了。

问题2:下载spark的源代码时候一直卡在connecting环节
经过一段时间的检查,我发现出现这个问题的原因是连接外网存在障碍。我现在本地下载好了之后再通过scp上传问题就解决了。

问题3:分布式实验中HDFS和Spark服务开启之后还是无法启动Spark Shell,提示Connection Refused
经过一段时间的检查,配合着实验手册,我发现自己在进行分布式实验之前没有修改Hadoop和Spark配置,配置文件中的主机名还是伪分布式实验中的localhost而非ecnu01.
在我把里面的localhost全部改成ecnu01并重新将配置发送到另外三台主机之后,我再次开始实验,就成功地打开了Spark Shell并运行了WordCount程序。
问题4:Spark启动日志服务器时候报错File does not exist

解决这个问题很简单,我只需要在HDFS中新建一个对应的的目录即可(~/hadoop-2.10.1/bin/hdfs dfs -mkdir -p /tmp/spark_history)
实验6¶
上机实践名称: Spark编程
上机实践日期:2024年5月14日
问题1:Error: JAVA_HOME is not set and could not be found
本来我以为自己出现了lab2时候的问题,即在/etc/hadoop/hadoop-env.sh 中没有将 JAVA_HOME设置为绝对路径(export JAVA_HOME=/usr/local/jdk1.8)。但我后来发现自己早就已经设置了,那为什么会出现这样的问题呢?经过一段时间的排查,我发现自己不知道什么时候在export前面多加了一个空格,而sh文件又对空格敏感,所以就无法被系统识别。修改了这个之后问题就解决了。
问题2:WordCount本地调试时候程序并没有正常运行
在虚拟机中进行Spark WordCount程序的本地调试时,我发现程序没有正常运行。在查看了报错之后,我发现输入的路径和预期并不一致,就点击右上角的“WordCountJava”调整configuration。我看到下面一栏已经设置了工作路径,就把输入路径设置为/src/main/spark_input/pd.test,然而程序还是没有正常运行。于是,我又在输入路径的前面加上了工作路径,即/home/linux/Desktop/SparkDemo,程序才在本地正常运行。

问题3:云主机上程序也并没有正常运行,报错UnknownHostException

经过一段时间的检查,我发现出现这个问题的原因是我在输入命令时把一处ecnu01写成了ecnu-1。在改正了拼写问题后,故障便解决了。
问题4:IDEA中如果没有标记scala目录为代码目录,则会报错
出现这个问题的原因还是SparkDemo的idea设置只把java给标记为了代码目录,而没有把scala标记,标记了之后问题就立刻解决了。

实验7¶
上机实践名称: Spark+Yarn
上机实践日期:2024年5月21日
问题1:单机伪分布式启动Yarn时候竟然出现了ecnu02和ecnu03,提示Connection timeout
出现这个问题的主要原因是自己登录错帐号了,竟然用dase-dis来做单机伪分布式的工作,这样的话因为是从镜像创建的云实例,默认还是分布式部署的,但是当时另外几台云主机并未打开,所以不可能运行成功的。我在检查之后重新用dase-local来登录,然后沿着实验手册的指导去做,Yarn就成功启动了。

问题2:分布式实验时Spark启动historyserver过程报错:File does not exist
我本来以为这个就像lab5里面类似问题那么好解决,但是经过一番排查发现延续之前实验的配置是错误的。

采用lab5中的方法之后还是一样的报错:

然后我细看了一下hdfs://ecnu01:9000这个地址,发现它的实际情况和预期有所差距:

可以看到spark-defaults.conf中配置的并不对,按如下方式修改:

问题3:[ERROR] Failed to construct terminal; falling back to unsupported java.lang.NumberFormatException: For input string: "0x100"

结合这个帖子(https://stackoverflow.com/questions/56457685/how-to-fix-the-sbt-crash-java-lang-numberformatexception-for-input-string-0x)中的解决方案,我在~/.bashrc中添加export TERM=xterm-color,然后source ~/.bashrc问题就解决了。