由于 spark-shell
报错的问题了解到Apache spark官方不支持 Java 10
,而系统里装的却是最新的 Java 11
。折腾了半天算是把整个安装流程走通了。做个笔记mark一下。
首先对于 Java
版本的问题,在终端可以先自检系统里的 Java
版本号
$ java -version
java version "11.0.1" 2018-10-16 LTS
Java(TM) SE Runtime Environment 18.9 (build 11.0.1+13-LTS)
Java HotSpot(TM) 64-Bit Server VM 18.9 (build 11.0.1+13-LTS, mixed mode)
1. 卸载当前使用的Java
macOS在 System Preference
里可以找到 Java
图标,点开后会弹出 Java control panel
,但没有发现能够卸载 java
的按钮。那只好找官方文档看看了:(https://www.java.com/en/download/help/mac_uninstall_java.xml)
两种办法卸载当前版本
- 下载官方的
Java Uninstall Tool
- 以管理员身份在终端执行命令:
sudo rm -fr /Library/Internet\ Plug-Ins/JavaAppletPlugin.plugin
sudo rm -fr /Library/PreferencePanes/JavaControlPanel.prefPane
sudo rm -fr ~/Library/Application\ Support/Oracle/Java
但是,此时用$ java -version
查询 Java
的版本号,还是之前的版本,为什么呢?
印度小哥的视频:https://youtu.be/a-aW1pKvLsg
macOS系统下默认读取/Library/Java/JavaVirtualMachines
路径下的.jdk
文件,自动读取最高版本的 Java
。我们只需要到这个路径下把正在使用的版本对应的.jdk
文件。这样该版本Java
就被删除了(需要管理员身份)。
此时系统没有里没有Java
,如果再次查询Java
的版本号:
$ java -version
No Java runtime present, requesting install.
2. 安装Java
由于甲骨文公司已经将Java 8
从官网上下架,用brew
来安装 Java8
会出现"无法发现名为"java8"可用的cask"。对于这个问题有两种解决方法,首先先把Java8
的包下载下来
Java 8
下载地址(需要注册登录):https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
对于brew cask
的安装方法较为复杂,推荐直接用下载的包直接双击安装。
-
用
brew
安装Java
:参考:https://github.com/Homebrew/homebrew-cask-versions/issues/7253#issuecomment-484356654
-
首先用
Python
的SimpleHTTPServer
做一个简单的Web服务器SimpleHTTPServer是Python 2自带的一个模块,是Python的Web服务器。它在Python 3已经合并到http.server模块中。SimpleHTTPServer在Python 3的用法与在Python 2的用法相似(python3 -m http.server 6789), 本文以Python 2为例。
使用时还要注意防火墙因素。
进入
Java
安装包所在目录,在终端执行:$ python -m SimpleHTTPServer 8000
此时可以通过
localhost:8000/
进行访问该目录下的文件。 -
运行以下命令,使
brew
可以根据版本号来安装包$ brew tap caskroom/versions
-
在Homebrew的
Taps
目录下找到Caskroom
,在/usr/local/Homebrew/Library/Taps/caskroom/homebrew-versions/Casks/
下创建java8.rb
文件:cask 'java8' do version '8u212,b10:59066701cf1a433da9770636fbc4c9aa' sha256 '9bcb4265a55e2fe63b9c58ca6c5a54eb6dda303bb69510ca6eddc2f088e41b2a' #authparam 'XXXX' #url "https://download.oracle.com/otn/java/jdk/#{version.before_comma}-#{version.after_comma.before_colon}/#{version.after_colon}/jdk-#{version.before_comma}-macosx-x64.dmg?AuthParam=#{authparam}" url "http://localhost:8000/jdk-#{version.before_comma}-macosx-x64.dmg", cookies: { 'oraclelicense' => 'accept-securebackup-cookie', } name 'Java 8 Standard Edition Development Kit' homepage 'https://www.oracle.com/technetwork/java/javase/overview/index.html' # auto_updates true: JDK does not auto-update depends_on macos: '>= :yosemite' pkg 'JDK 8 Update 212.pkg' postflight do system_command '/bin/ln', args: ['-nsf', '--', "/Library/Java/JavaVirtualMachines/jdk-#{version.before_comma}.jdk/Contents/Home", '/Library/Java/Home'], sudo: true system_command '/bin/ln', args: ['-nsf', '--', "/Library/Java/JavaVirtualMachines/jdk-#{version.before_comma}.jdk/Contents/MacOS", '/Library/Java/MacOS'], sudo: true system_command '/bin/mkdir', args: ['-p', '--', "/Library/Java/JavaVirtualMachines/jdk-#{version.before_comma}.jdk/Contents/Home/bundle/Libraries"], sudo: true system_command '/bin/ln', args: ['-nsf', '--', "/Library/Java/JavaVirtualMachines/jdk-#{version.before_comma}.jdk/Contents/Home/lib/server/libjvm.dylib", "/Library/Java/JavaVirtualMachines/jdk-#{version.before_comma}.jdk/Contents/Home/bundle/Libraries/libserver.dylib"], sudo: true end uninstall pkgutil: "com.oracle.jdk#{version.before_comma}", delete: [ "/Library/Java/JavaVirtualMachines/jdk-#{version.before_comma}.jdk/Contents", '/Library/Java/Home', '/Library/Java/MacOS', ], rmdir: "/Library/Java/JavaVirtualMachines/jdk-#{version.before_comma}.jdk" caveats do license 'https://www.oracle.com/technetwork/java/javase/terms/license/javase-license.html' end end
需要改动的地方是
sha256
,文件用sha256
来验证文件源。可以用oppenssl
工具进行验证,最后将得到的sha256
码复制到对应的地方:$ openssl dgst -sha256 PathToPack sha256 '9bcb4265a55e2fe63b9c58ca6c5a54eb6dda303bb69510ca6eddc2f088e41b2a'
version
部分对应着下载安装包的地址,例如下载地址为https://download.oracle.com/otn/java/jdk/8u212-b10/59066701cf1a433da9770636fbc4c9aa/jdk-8u212-macosx-x64.dmg?AuthParam=XXXX
, 那么版本号就是8u212
,后面的数字对应着修改就行,得到:version '8u212,b10:59066701cf1a433da9770636fbc4c9aa'
注意到下载地址里有
AuthParam
的字段,这里是和账户相关联的。authparam 'XXXX'
所以
url
部分也要改为url "https://download.oracle.com/otn/java/jdk/#{version.before_comma}-#{version.after_comma.before_colon}/#{version.after_colon}/jdk-#{version.before_comma}-macosx-x64.dmg?AuthParam=#{authparam}"
以上是利用安装包下载地址的配置方法。在本例中我们已经下载好了安装包,也用
Python
做了一个简单的Web服务器,所以除了url
要改为:url "http://localhost:8000/jdk-#{version.before_comma}-macosx-x64.dmg"
保存,准备安装。
-
运行以下命令执行安装:
$ brew cask install java8
-
安装spark
先把scala
装上:
$ brew install scala
再装apache-spark
:
$ brew install apache-spark
最后在工作目录下的 bash
配置文件 .bash_profile
中添加 spark
目录
export SPARK_HOME=/usr/local/Cellar/apache-spark/2.0.1/libexec
最后推荐一篇简易安装说明,如果早点看到这篇文章也不用那么折腾了……
How to Install PySpark and Apache Spark on MacOS: https://sharing.luminis.eu/blog/how-to-install-pyspark-and-apache-spark-on-macos/
网友评论