• 下载安装配置 Spark-2.4.5 以及 sbt1.3.8 打包程序


    文章更新于:2020-03-29
    按照惯例,文件附上链接放在文首。

    文件名:spark-2.4.5-bin-without-hadoop.tgz
    文件大小:159 MB
    下载链接:https://mirrors.tuna.tsinghua.edu.cn/apache/spark/spark-2.4.5/spark-2.4.5-bin-without-hadoop.tgz
    SHA256:40f58f117efa83a1d0e66030d3561a8d7678f5473d1f3bb53e05c40d8d6e6781

    文件名:sbt-1.3.8.tgz.7z
    文件大小:54.9 MB
    下载链接:https://www.lanzous.com/iameoaf
    SHA256:9E0662C84E6B99F2BAB0F51EC1F8C93FA89C5CE5400AD01CF2A98A63A816346D

    一、下载需要的文件

    1、下载 spark

    1、spark 可以去官网http://spark.apache.org/downloads.html 自行寻找合适版本。

    2、spark 也可以使用文首 spark-2.4.5-bin-without-hadoop.tgz 直链。

    2、下载 sbt

    1、sbt 可以去官网 https://www.scala-sbt.org/自行寻找合适版本。

    2、sbt 也可以使用文首sbt-1.3.8.tgz.7z直链。

    二、安装spark

    1、解压==安装

    注1:tail -n 10是只查看输出的最后 10 条结果,可以不用写。
    注2:username需要换成你的用户名。

    sudo tar -zxvf spark-2.4.5-bin-without-hadoop.tgz -C /usr/local/ | tail -n 10
    cd /usr/local
    sudo mv spark-2.4.5-bin-without-hadoop/ spark
    sudo chown -R username:username spark
    

    解压安装

    2、修改Spark的配置文件spark-env.sh

    注:在spark 目录下拷贝spark-env.sh.template 文件 并去掉.template后缀。同时在此文件第一行添加如下所示 export xxxx 代码。

    cd /usr/local/spark
    cp ./conf/spark-env.sh.template ./conf/spark-env.sh
    export SPARK_DIST_CLASSPATH=$(/usr/local/hadoop/bin/hadoop classpath)
    

    3、运行示例

    1、在 spark 目录下运行如下命令。

    bin/run-example SparkPi
    # bin/run-example SparkPi 2>&1 | grep "Pi is"
    

    注:也可使用注释掉的那行命令直接过滤出结果。

    2、我的刚开始出错了,报错如下。

    出错

    然后我使用 nmtui 命令将网络配置成手动模式,并写入IP、网关等重新运行程序就可以了。

    结果
    发现运行结果与我假设的 3.1415926 有点差距,不过好像就是这样哦,不是出错了。

    4、启动spark命令行

    注:在 /usr/local/spark/ 目录下执行以下命令启动 spark

    ./spark-shell --master local[2]
    

    spark命令行
    1、这时也可以在浏览器访问图形界面了,地址在上面的输出信息中有,这里是 192.168.1.136:4040

    图形界面

    5、解决 WARN 两个

    1、在上述命令行输出中,其中有 WARN util.Utils: Your hostname, xxxxx resolves to a loopback address: 127.0.1.1;

    解决办法:
    conf/spark-env.sh配置文件中添加SPARK_LOCAL_IP 比如:

    SPARK_LOCAL_IP="192.168.1.136"
    

    再次启动的时候就看不到它了~

    2、在上述命令输出中,其中有 spark Unable to load native-hadoop library for your platform...

    解决办法:
    conf/spark-env.sh配置文件中添加 LD_LIBRARY_PATH 比如:

    LD_LIBRARY_PATH=$HADOOP_HOME/lib/native
    

    注:前提是你的 $HADOOP_HOME已经存在。
    再次启动的时候就看不到它了~

    三、安装 sbt

    1、解压到指定文件夹

    ls | grep sbt	#查看当前文件夹是否有sbt安装包
    sudo tar -zxvf sbt-1.3.8.tgz -C /usr/local
    sudo cp /usr/local/sbt/bin/sbt-launch.jar /usr/local/sbt
    sudo chown -R bigdata:bigdata /usr/local/sbt
    sudo vim /usr/local/sbt/sbt
    sudo chmod u+x /usr/local/sbt/sbt
    

    解压安装sbt

    2、建立sbt脚本并执行

    脚本内容如下:

    #!/bin/bash
    SBT_OPTS="-Xms512M -Xmx1536M -Xss1M -XX:+CMSClassUnloadingEnabled -XX:MaxPermSize=256M"
    java $SBT_OPTS -jar `dirname $0`/sbt-launch.jar "$@"
    

    注:脚本需要添加执行权限,在步骤一代码截图中有。
    然后执行:

    ./sbt sbtVersion
    

    第一次执行结果如下:
    执行结果
    第二次执行结果如下:
    执行结果

    四、Spark独立应用程序编程

    1、编写scala程序

    1、先建立程序根目录

    cd ~
    mkdir -p ./sparkapp/src/main/scala
    

    2、编写 SimpleApp.scala 文件

    /* SimpleApp.scala */
    import org.apache.spark.SparkContext
    import org.apache.spark.SparkContext._
    import org.apache.spark.SparkConf
    
    object SimpleApp {
        def main(args: Array[String]) {
            val logFile = "file:///usr/local/spark/README.md" // Should be some file on your system
            val conf = new SparkConf().setAppName("Simple Application")
            val sc = new SparkContext(conf)
            val logData = sc.textFile(logFile, 2).cache()
            val numAs = logData.filter(line => line.contains("a")).count()
            val numBs = logData.filter(line => line.contains("b")).count()
            println("Lines with a: %s, Lines with b: %s".format(numAs, numBs))
        }
    }
    

    2、使用sbt打包Scala程序

    1、建立 ~/sparkapp/simple.sbt 脚本(这里的名字任意),内容如下:
    注1:此处第三行的scala版本是你spark启动的时候输出的scala版本!
    注2:此处的第四行spark版本也是你spark启动是输出显示的版本。

    name := "Simple Project"
    version := "1.0"
    scalaVersion := "2.11.8"
    libraryDependencies += "org.apache.spark" %% "spark-core" % "2.4.5"
    

    2、进行程序打包

    /usr/local/sbt/sbt package
    

    注:如果是第一次运行,可能会联网下载文件,等待时间比较长。
    执行结果如下:
    创建项目

    3、执行程序(如果失败如何解决)

    /usr/local/spark/bin/spark-submit --class "SimpleApp" ~/sparkapp/target/scala-2.11/simple-project_2.11-1.0.jar
    

    执行结果如下:

    我运行失败了,还在解决中。。。。。头大

    异常截图:
    异常

    2020-03-29更新:问题已经解决。
    问题所在:在simple.sbt文件中,指定的scala版本应该是spark-shell输出的那个 scala 版本,而不是自己单独安装的 scala 版本。
    问题所在
    运行结果:
    运行结果

    4、查看 sbt 版本不动的解决办法

    1)尝试换源

    我亲自测试,没换源之前,执行 sbt sbtVersion命令需要等待半小时+
    当然,这个时间不同的网络环境下是不同的,可能你的会快的多。

    换源以后,等待1分45秒开始出现刷屏信息,2分26秒时完成显示版本信息。
    如何换源见步骤五。

    2)删除配置文件重来

    如果使用 sbt sbtVersion 命令查看 sbt 版本,一直没有刷新输出信息,
    可以尝试将之前安装 sbt 时产生的文件删除,然后重新执行命令。

    主要的需要删除的文件三个 ~/.sbt~/.ivy~/.ivy2
    具体可参考林子雨教授博客:安装最新版sbt工具方法和体会

    5、打包程序过慢解决办法(换国内镜像)

    如果使用 sbt package的时候一直刷屏就是不好,可能是镜像源连接速度有点慢。这时可以选择国内的镜像。

    ~/.sbt/repositories 文件中(如没有自己创建一个)添加以下内容:
    注:下述代码中的开头repo应该是可以自定义的,我改了没影响程序执行。

    [repositories]
    repo:https://maven.aliyun.com/repository/public
    

    再次执行打包命令就会快很多。

    注1:在我打包测试时,新下载库打包一个程序需要N秒。
    注2:重新打包(无需下载文件)一个程序需要24+秒。

    6、关于 sbt 的各个文件

    注1:在 sbt 的安装目录 sbt/conf/sbtopts 文件中有如下内容:

    
    # ------------------------------------------------ #
    #  The SBT Configuration file.                     #
    # ------------------------------------------------ #
    
    
    # Disable ANSI color codes
    #
    #-no-colors
    
    # Starts sbt even if the current directory contains no sbt project.
    #
    -sbt-create
    
    # Path to global settings/plugins directory (default: ~/.sbt)
    #
    #-sbt-dir  /etc/sbt
    
    # Path to shared boot directory (default: ~/.sbt/boot in 0.11 series)
    #
    #-sbt-boot ~/.sbt/boot
    
    # Path to local Ivy repository (default: ~/.ivy2)
    #
    #-ivy ~/.ivy2
    
    # set memory options
    #
    #-mem   <integer>
    
    # Use local caches for projects, no sharing.
    #
    #-no-share
    
    # Put SBT in offline mode.
    #
    #-offline
    
    # Sets the SBT version to use.
    #-sbt-version  0.11.3
    
    # Scala version (default: latest release)
    #
    #-scala-home <path>
    #-scala-version <version>
    
    # java version (default: java from PATH, currently $(java -version |& grep versi
    on))
    #
    #-java-home <path>
    

    注2:上述文件说明了sbt各个文件的所在和用处。

    五、Enjoy!

  • 相关阅读:
    系统综合实践 第1次实践作业
    Linq 中按照多个值进行分组(GroupBy,Count)
    敏捷开发综述
    心率
    二维数组 子数组和的最大值
    电梯调度算法
    课堂测试用例。。。
    分析文本文件中各单词出现的频率,并把频率最高的十个词打印出来
    dwz tree组件 取得所选择的值
    SQL Server -- 已成功与服务器建立连接,但是在登录过程中发生错误
  • 原文地址:https://www.cnblogs.com/amnotgcs/p/12694350.html
Copyright © 2020-2023  润新知