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, ).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


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

Ubuntu 12.04下spark1.0.0 集群搭建(原创)的更多相关文章

  1. Ubuntu 14.04下Hadoop2.4.1集群安装配置教程

    一.环境 系统: Ubuntu 14.04 64bit Hadoop版本: hadoop 2.4.1 (stable) JDK版本: OpenJDK 7 台作为Master,另3台作为Slave. 所 ...

  2. Ubuntu 12.04下安装thrift 0.9

    Thrift这里就不介绍了,只说一句--Facebook很牛逼. 我这里安装Thrift主要是为Accumulo数据库作准备,所以java语言为必选项. 具体安装参考官方Apache Thrift R ...

  3. Ubuntu 12.04下Hadoop 2.2.0 集群搭建(原创)

    现在大家可以跟我一起来实现Ubuntu 12.04下Hadoop 2.2.0 集群搭建,在这里我使用了两台服务器,一台作为master即namenode主机,另一台作为slave即datanode主机 ...

  4. Ubuntu 12.04下GAMIT10.40安装说明

    转载于:http://www.itxuexiwang.com/a/liunxjishu/2016/0225/164.html?1456481297 Ubuntu 12.04下GAMIT10.40安装步 ...

  5. Angularjs学习---angularjs环境搭建,ubuntu 12.04下安装nodejs、npm和karma

    1.下载angularjs 进入其官网下载:https://angularjs.org/‎,建议下载最新版的:https://ajax.googleapis.com/ajax/libs/angular ...

  6. [转]ubuntu(12.04)下, 命令 ,内核 源代码的获取

    [转]ubuntu(12.04)下, 命令 ,内核 源代码的获取 http://blog.chinaunix.net/uid-18905703-id-3446099.html 1.命令:例如:要查看l ...

  7. Ubuntu 12.04 下安装 Eclipse

    方法一:(缺点是安装时附加openjdk等大量程序并无法去除,优点是安装简单) $ sudo apt-get install eclipse 方法二:(优点是安装内容清爽,缺点是配置麻烦)1.安装JD ...

  8. 升级Ubuntu 12.04下的gcc到4.7

    我们知道C++11标准开始支持类内初始化(in-class initializer),Qt creator编译出现error,不支持这个特性,原因在于,Ubuntu12.04默认的是使用gcc4.6, ...

  9. ubuntu 12.04下安装Qt出现cannot execute binary file的解决方案

    最近在ubuntu 12.04下安装QT的过程中,遇到一个问题. ./qt-opensource-linux-x64-5.7.0.run出现了bash: ./qt-opensource-linux-x ...

随机推荐

  1. [洛谷P1029]最大公约数与最小公倍数问题 题解(辗转相除法求GCD)

    [洛谷P1029]最大公约数与最小公倍数问题 Description 输入二个正整数x0,y0(2<=x0<100000,2<=y0<=1000000),求出满足下列条件的P, ...

  2. php查询mysql返回大量数据结果集导致内存溢出的解决方法

    web开发中如果遇到php查询mysql返回大量数据导致内存溢出.或者内存不够用的情况那就需要看下MySQL C API的关联,那么究竟是什么导致php查询mysql返回大量数据时内存不够用情况? 答 ...

  3. django框架之中间件

    中间件简介 django 中的中间件(middleware),在django中,中间件其实就是一个类,在请求到来和结束后,django会根据自己的规则在合适的时机执行中间件中相应的方法. 在djang ...

  4. linux内核数据结构之链表【转】

    转自:http://www.cnblogs.com/Anker/p/3475643.html 1.前言 最近写代码需用到链表结构,正好公共库有关于链表的.第一眼看时,觉得有点新鲜,和我之前见到的链表结 ...

  5. 94.Binary Tree Inorder Traversal---二叉树中序非递归遍历

    题目链接 题目大意:中序遍历二叉树.先序见144,后序见145. 法一:DFS,没啥说的,就是模板DFS.代码如下(耗时1ms): public List<Integer> inorder ...

  6. 005_linux下logrotate 配置和理解

    对于Linux 的系统安全来说,日志文件是极其重要的工具.系统管理员可以使用logrotate 程序用来管理系统中的最新的事件,对于Linux 的系统安全来说,日志文件是极其重要的工具.系统管理员可以 ...

  7. PHP 利用nginx的X-sendfile控制下载,提高下载效率

    https://blog.csdn.net/qq_34839657/article/details/52812885 https://www.jianshu.com/p/bf5c387830b7 为了 ...

  8. C# 随笔 【ToList().Foreach()和Foreach()】

    1. 最近在做一个Socket通讯的例子,但是如果使用UTF-8编码传输中文的话取和的会不一样.早上做了测试 . string str = "a我..";看代码中间是一个英文,一个 ...

  9. HDU 4300 Clairewd’s message(KMP+思维)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4300 题目大意:题目大意就是给以一段字符xxxxzzz前面x部分是密文z部分是明文,但是我们不知道是从 ...

  10. Docker数据卷和Docker系统管理(二)

    一. 在镜像中定义卷 1. Dockerfile中定义卷的案例 VOLUME /app/data VOLUME /app/data, /app/profiles, /app/config VOLUME ...