美文网首页
macOS安装Spark时遇到的问题

macOS安装Spark时遇到的问题

作者: TrevorTse | 来源:发表于2019-05-13 15:30 被阅读0次

    由于 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

      • 首先用PythonSimpleHTTPServer 做一个简单的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文件:

        java8.rb 脚本参照:https://github.com/Homebrew/homebrew-cask-versions/commit/75334737c961a4c16e9889ef5bb67a65fa6eee4b#diff-ddb5930ea70cb853215ab5f523c0c016

        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/

    相关文章

      网友评论

          本文标题:macOS安装Spark时遇到的问题

          本文链接:https://www.haomeiwen.com/subject/zqtraqtx.html