美文网首页
Spark 分布式计算框架之环境搭建

Spark 分布式计算框架之环境搭建

作者: kviccn | 来源:发表于2017-02-26 22:15 被阅读722次

    Spark 的开发语言是 Scala,而 Scala 运行于 JVM 之上,因此,搭建 Spark 的运行环境应该包括 JDK 和 Scala
    (本文的操作均在 64位 ubuntu 16.04 操作系统下进行)

    1. 安装 JDK

    JDK 的安装方式看这里

    2. 安装 Scala

    2.1 下载

    点击这里下载 Scala
    本文下载的是 scala-2.12.1.tgz

    $ wget http://downloads.lightbend.com/scala/2.12.1/scala-2.12.1.tgz
    

    2.2 解压

    opt 目录下新建一个目录 scala

    $ sudo mkdir /opt/scala
    

    将刚才下载的文件移动到新创建的 scala 目录中

    $ sudo mv scala-2.12.1.tgz /opt/scala
    

    进入 scala 目录

    $ cd /opt/scala
    

    解压

    $ sudo tar zxvf scala-2.12.1.tgz
    

    2.3 配置

    打开配置文件 .bashrc

    $ sudo vim ~/.bashrc
    

    在文件末尾添加如下代码:

    export SCALA_HOME="/opt/scala/scala-2.12.1"
    export PATH="$SCALA_HOME/bin:$PATH"
    

    运行如下命令使配置立刻生效:

    $ source ~/.bashrc
    

    2.4 验证

    在终端输入如下命令:

    $ scala -version
    

    如果看到这样的输出则证明安装成功:

    Scala code runner version 2.12.1 -- Copyright 2002-2016, LAMP/EPFL and Lightbend, Inc.
    

    3. 安装 Spark

    3.1 下载

    点击这里下载 Spark
    本文下载的是 spark-2.1.0-bin-hadoop2.7.tgz

    $ wget http://d3kbcqa49mib13.cloudfront.net/spark-2.1.0-bin-hadoop2.7.tgz
    

    3.2 解压

    在用户家目录(~)下新建 apps 目录

    $ mkdir ~/apps
    

    将刚才下载的文件移动到 apps 目录中

    $ mv spark-2.1.0-bin-hadoop2.7.tgz ~/apps
    

    进入 apps 目录

    $ cd ~/apps
    

    解压

    $ tar zxvf spark-2.1.0-bin-hadoop2.7.tgz
    

    3.3 配置

    打开配置文件 .bashrc

    $ sudo vim ~/.bashrc
    

    在文件末尾添加如下代码:

    export SPARK_HOME="/home/YOUR_NAME/apps/spark-2.1.0-bin-hadoop2.7"
    

    tip: 将 YOUR_NAME 替换成你的家目录

    使配置立刻生效:

    $ source ~/.bashrc
    

    4. 配置 spark-env.sh

    在运行 spark-shell 之前,我们需要进行一些配置

    进入 Spark 的安装目录

    $ cd ~/apps/spark-2.1.0-bin-hadoop2.7
    

    复制一份 spark-env.sh.template,命名为 spark-env.sh,并对它进行编辑

    $ cp conf/spark-env.sh.template conf/spark-env.sh
    $ vim conf/spark-env.sh
    

    在文件末尾添加如下配置:

    export SPARK_MASTER_IP=127.0.0.1
    export SPARK_LOCAL_IP=127.0.0.1
    

    运行 spark-shell

    $ ~/apps/spark-2.1.0-bin-hadoop2.7/bin/spark-shell
    

    终端输出如下信息则表示启动成功

    Using Spark's default log4j profile: org/apache/spark/log4j-defaults.properties
    Setting default log level to "WARN".
    To adjust logging level use sc.setLogLevel(newLevel). For SparkR, use setLogLevel(newLevel).
    17/02/26 21:20:06 WARN ObjectStore: Version information not found in metastore. hive.metastore.schema.verification is not enabled so recording the schema version 1.2.0
    17/02/26 21:20:07 WARN ObjectStore: Failed to get database default, returning NoSuchObjectException
    17/02/26 21:20:12 WARN ObjectStore: Failed to get database global_temp, returning NoSuchObjectException
    Spark context Web UI available at http://127.0.0.1:4040
    Spark context available as 'sc' (master = local[*], app id = local-1488115184825).
    Spark session available as 'spark'.
    Welcome to
          ____              __
         / __/__  ___ _____/ /__
        _\ \/ _ \/ _ `/ __/  '_/
       /___/ .__/\_,_/_/ /_/\_\   version 2.1.0
          /_/
             
    Using Scala version 2.11.8 (Java HotSpot(TM) 64-Bit Server VM, Java 1.8.0_121)
    Type in expressions to have them evaluated.
    Type :help for more information.
    
    scala> 
    

    5. 牛刀小试

    现在我们来用 Spark 计算一下其安装目录下 LICENSE 文件中每行字符串的平均长度

    接上一节中成功启动的 spark-shell,在 spark-shell 中依次输入如下内容(双斜线开始的注释不需要输入_

    // 通过本地文件系统中的文件创建 RDD (弹性分布式数据集)
    scala> val rddFromTextFile = sc.textFile("LICENSE")
    // 将每一个字符串都转换为一个整数
    scala> val intsFromStringsRDD = rddFromTextFile.map(line => line.size)
    // 对所有记录的长度求和
    scala> val sumOfRecords = intsFromStringsRDD.sum
    // 计算记录总的数目
    scala> val numRecords = intsFromStringsRDD.count
    // 将记录总长度和记录的总数目相除,得到每一行的平均值
    scala> val aveLengthOfRecord = sumOfRecords / numRecords
    

    最终输出结果如下:

    aveLengthOfRecord: Double = 58.5685618729097
    

    当然,我们也可以用更简单的方式得到和上面相同的结果。
    代码如下:

    scala> val aveLengthOfRecordChained = rddFromTextFile.map(line => line.size).sum / rddFromTextFile.count
    

    好了,今天就到这里。睡觉。_

    哦,还有一句忘记说了,输入 :q 退出 spark-shell

    scala> :q
    

    相关文章

      网友评论

          本文标题:Spark 分布式计算框架之环境搭建

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