在虚拟机安装Python Spark遇到的问题汇总,每次遇到问题都需要花费很多精力在网上查找解决办法,希望以后碰到这些情况可以有参照。
1、由于之前系统安装的JDK是jdk1.7.0,在安装scala和spark时版本出现错误提示:
Exception in thread "main"java.lang.UnsupportedClassVersionError: WriteLog : Unsupportedmajor.minor version 52.0
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:800)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:449)
at java.net.URLClassLoader.access$100(URLClassLoader.java:71)
at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
atjava.net.URLClassLoader.findClass(URLClassLoader.java:354)
at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:482)
错误提示信息:Unsupported major.minor version52.0,意思是说,当前jdk的版本不支持更高版本jdk编译出来的class文件。
由于scala,spark版本是jdk1.8编译的,而ubuntu上的是jdk1.7.0,jdk1.7.0版本号为48,jdk1.8.0版本号是52,因此会产生上述问题。只需要把ubuntu上的jdk升级到jdk1.8,就可以执行。master,data1,data2,data3电脑都重新安装jdk1.8。更改bashrc、hadoop-evn.sh文件中jdk路径。
2、构建Spark Standalone Cluster环境运行pyspark时内存不足,无法启动spark。
找到hadoop的配置文件yarn-site.xml,sudo gedit /usr/local/hadoop/etc/hadoop/yarn-site.xml
添加下面内容:
<property>
<name>yarn.nodemanager.pmem-check-enabled</name>
<value>false</value>
</property>
<property>
<name>yarn.nodemanager.vmem-check-enabled</name>
<value>false</value>
<description>Whether virtual memory limits will be enforced for containers</description>
</property>
<property>
<name>yarn.nodemanager.vmem-pmem-ratio</name>
<value>4</value>
<description>Ratio between virtual memory to physical memory when setting memory limits for containers</description>
</property>
是否启动一个线程检查每个任务正使用的虚拟内存量,如果任务超出分配值,则直接将其杀掉,默认是true。
3、虚拟机安装Anaconda时提示硬盘空间不足。之前给电脑分配的空间只有10G,随着安装的程序越来越多空间不足。在网上找了好久最后跟着下面链接的文章做把所有的虚拟机硬盘扩充了。顺利在master,data1,data2,data3安装anaconda2。
如何在Virtualbox中对Ubuntu系统根分区扩容
https://blog.csdn.net/LEON1741/article/details/56494797
4、安装完anaconda2,python版本是python2.7。在启动jupyter notebook是出现编码错误:
jupyter UnicodeDecodeError: 'ascii' codec can't decode byte 0xe5 in position 4: ordinal not in range(128) jupyter notebook
在网上查了一下发现这是python2版本中普遍出现的bug,于是果断master,data1,data2,data3中把anaconda2卸载,重新下载anaconda3,python3版本。问题解决,顺利启动jupyter notebook。