zoukankan      html  css  js  c++  java
  • Ubuntu 12.04下spark1.0.0 集群搭建(原创)

    spark1.0.0新版本的于2014-05-30正式发布啦,新的spark版本带来了很多新的特性,提供了更好的API支持,spark1.0.0增加了Spark SQL组件,增强了标准库(ML、streaming、GraphX)以及对JAVA和Python语言的支持;

    下面,我们首先进行spark1.0.0集群的安装,在这里我使用了两台服务器,一台作为master即namenode主机,另一台作为slave即datanode主机,增加更多的slave只需重复slave部分的内容即可。

    系统版本:

    • master:Ubuntu 12.04
    • slave:Ubuntu 12.04
    • hadoop:hadoop 2.2.0
    • spark:spark 1.0.0

    1. 安装JDK和hadoop集群

      安装过程参见这里

    2. 下载安装Scala

    • scala下载地址,这里下载的是最新版scala-2.11.1版本
    • 解压scala,放到/usr/lib目录下

        tar -xzvf scala-2.11.1.tgz

        mv scala-2.11.1 /usr/lib/

    • 配置scala环境变量sudo vi /etc/profile

       在文件末尾添加scala路径

       

       输入 source /etc/profile 使路径生效

    • 测试scala:scala -version   #若出现scala版本信息说明安装成功

    PS:scala需要在所有slave节点上配置

    3. 下载安装spark

    • spark1.0.0下载地址,解压spark,放到/home/hadoop

      tar -xzvf spark-1.0.0-bin-hadoop2.tgz

    • 配置spark环境变量:sudo vi /etc/profile

      在文件末尾添加spark路径

      

      输入  source /etc/profile  使路径生效

    • 配置conf/spark-env.sh文件

      若没有该文件,则将 spark-env.sh.template 文件重命名即可,向文件中添加scala、java、hadoop路径以及master ip等信息。

      mv spark-env.sh.template spark-env.sh

      vi spark-env.sh

      

      

      

    • conf/slaves中添加slave节点的hostname一行一个:

      vi slaves

      

    4. 在所有slave机器上安装配置spark

    现在可以将master主机上的spark文件分发给所有的slave节点,注意slave与master的spark所在目录必须一致,因为master会登录到slave上执行命令,并认为slave的spark路径与自己一样
    scp -r spark-1.0.0-bin-hadoop2 hadoop@slave:/home/hadoop/

    5.启动spark集群
    master主机上执行命令:
    cd ~/
    spark-1.0.0-bin-hadoop2/sbin
    ./
    start-all.sh
    检测进程是否启动:输入 jps

    配置完成
    6. 下面体验一下spark自带的例子

    ./bin/run-example SparkPi

    scala实现一个spark app

    官方说明地址,这个小例子用于统计输入文件中字母“a”和字母“b”的个数。网站上提供了scala、java、python三种实现,这里就只做一下scala的吧,这里需要安装SBT(我们使用 sbt 创建、测试、运行和提交作业,可以简单将SBT看做是Scala世界的Maven)。

    spark-1.0.0木有自带的sbt,我们可以选择手动安装,当然也可以选择sudo apt-get install sbt的方式(我的系统中木有找到sbt包,所以就只有手动安装咯)。安装方法如下:

    • 下载:sbt下载地址,我下载的是现在的最新版本sbt-0.13.5
    • 解压sbt到/home/hadoop/主目录下(hadoop是我的用户名,其实就是我的HOME啦)

      tar -zxvf sbt-0.13.5.tgz

      cd sbt/bin

      java -jar sbt-launch.jar    #进行sbt安装,时间大约一个小时吧,会下载很多东东,所以记得要联网哦

    • 成功后可以在/etc/profile中配置sbt的环境变量

      sudo vi /etc/profile

      

      输入source /etc/profile 使路径生效

    sbt安装完成,下面就来写这个简单的spark app

    • 创建一个目录:mkdir ~/SimpleApp
    • 在SimpleApp目录下,创建如下的目录结构:

            

    • simple.sbt文件内容如下:
    name := "Simple Project"
    version := "1.0"
    scalaVersion := "2.10.4"
    libraryDependencies += "org.apache.spark" %% "spark-core" % "1.0.0"
    resolvers += "Akka Repository" at "http://repo.akka.io/releases/"
    • 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 = "YOUR_SPARK_HOME/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))
      }
    }

    PS:由于我们之前在spark配置过程中将hadoop路径配置好了,因此这里的输入路径YOUR_SPARK_HOME/XXX实际上为HDFS文件系统中的文件,存储位置与hadoop配置文件core-site.xml中的<name>相关(具体可参见这里这个地方很容易出错)。因此需要先将README.md文件puthdfs上面:

    • 编译:

      cd ~/SimpleApp

      sbt package     #打包过程,时间可能会比较长,最后会出现[success]XXX

      PS:成功后会生成许多文件 target/scala-2.10/simple-project_2.10-1.0.jar等

    • 运行:

      spark-submit --class "SimpleApp" --master local target/scala-2.10/simple-project_2.10-1.0.jar

    • 结果:

    7. 停止spark集群

    cd ~/spark-1.0.0-bin-hadoop2/sbin

    ./stop-all.sh


    本文为原创博客,若转载请注明出处。

  • 相关阅读:
    第四次作业—四则运算
    第四次作业—代码规范
    【欢迎来怼】事后诸葛亮会议
    软件工程——第七次作业
    第17次Scrum会议(10/29)【欢迎来怼】
    软件工程——第六次作业
    第10次Scrum会议(10/22)【欢迎来怼】
    软件工程——第五次作业
    欢迎来怼——第四次Scrum会议
    软件工程——第四次作业(3)
  • 原文地址:https://www.cnblogs.com/tec-vegetables/p/3780046.html
Copyright © 2011-2022 走看看