一、概述

关于Spark是什么、为什么学习Spark等等,在这就不说了,直接看这个:http://spark.apache.org,

我就直接说一下Spark的一些优势:

1、快

与Hadoop的MapReduce相比,Spark基于内存的运算要快100倍以上,基于硬盘的运算也要快10倍以上。Spark实现了高效的DAG执行引擎,可以通过基于内存来高效处理数据流。

2、易用

Spark支持Java、Python和Scala的API,还支持超过80种高级算法,使用户可以快速构建不同的应用。而且Spark支持交互式的Python和Scala的shell,可以非常方便地在这些shell中使用Spark集群来验证解决问题的方法。

3、通用

Spark提供了统一的解决方案。Spark可以用于批处理、交互式查询(Spark SQL)、实时流处理(Spark Streaming)、机器学习(Spark MLlib)和图计算(GraphX)。这些不同类型的处理都可以在同一个应用中无缝使用。Spark统一的解决方案非常具有吸引力,毕竟任何公司都想用统一的平台去处理遇到的问题,减少开发和维护的人力成本和部署平台的物力成本。

4、兼容性

Spark可以非常方便地与其他的开源产品进行融合。比如,Spark可以使用Hadoop的YARN和Apache Mesos作为它的资源管理和调度器,并且可以处理所有Hadoop支持的数据,包括HDFS、HBase和Cassandra等。这对于已经部署Hadoop集群的用户特别重要,因为不需要做任何数据迁移就可以使用Spark的强大处理能力。Spark也可以不依赖于第三方的资源管理和调度器,它实现了Standalone作为其内置的资源管理和调度框架,这样进一步降低了Spark的使用门槛,使得所有人都可以非常容易地部署和使用Spark。此外,Spark还提供了在EC2上部署Standalone的Spark集群的工具。
还有总结一句话:Spark是MapReduce的替代方案,而且兼容HDFS、Hive,可融入Hadoop的生态系统,以弥补MapReduce的不足。

二、集群安装

我们在自己的机器上就不要起那么多虚拟机了,就起3台虚拟机就够了(一台Master,两台Worker),当然了你的Linux机器需要先安装JDK和hdfs,我们要安装Spark-1.6.1最好使用JDK7以上。

先简单介绍一下Spark集群的一些概念:

Spark集群包括Master和Worker,Master只有一个,Worker可以有多个,Master和Worker之间通过RPC保持联系;

Master负责管理元数据,Worker负责运行Task,其中细节以后再详细介绍;

还有一个Driver,它就相当于Spark集群的客户端,主要负责向Spark集群提交任务,其中细节以后再详细介绍。

1、下载安装包

就不用写了,我们下载Spark-1.6.1

2、上传安装包并解压

解压安装包到指定位置:(这里我使用的是spark用户,把spark-1.6.1-bin-hadoop2.6.tgz 解压到了我的宿主目录下了)

tar -zxvf spark-1.6.1-bin-hadoop2.6.tgz –C /home/spark

3、配置Spark

进入Spark安装目录下的conf目录,重命名并修改spark-env.sh.template文件:

cd conf/

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

在spark-env.sh添加以下配置:

vi spark-env.sh

export JAVA_HOME=[你的JDK_HOME目录]

export SPARK_MASTER_IP=[Spark集群的Master所在节点的地址:Master]

export SPARK_MASTER_PORT=7077[这个端口号是Driver连接Spark集群的端口]

重命名并修改slaves.template文件:

mv slaves.template slaves

在该文件中添加子节点所在的位置(即Worker节点):

vi slaves

[第一个Worker节点的地址:Worker1]

[第二个Worker节点的地址:Worker2]

将配置好的Spark拷贝到其他节点上:

scp -r spark-1.6.1-bin-hadoop2.6/ worker1:/home/spark

scp -r spark-1.6.1-bin-hadoop2.6/ worker2:/home/spark

4、安装完毕 测试启动

到此Spark集群安装完毕,需要启动测试一下,目前是1个Master,2个Work,在Master上启动Spark集群:(注意:不要在Worker上启动start-all,具体细节以后再介绍)

/home/spark/spark-1.5.2-bin-hadoop2.6/sbin/start-all.sh

(start-all.sh 就会启动Master和所有Worker,就不需要去每个Worker上启动了)

启动后在每台机器上执行jps命令,主节点上有Master进程,其他子节点上有Worker进程,登录Spark管理界面查看集群状态(登录地址必须是Master节点,因为Spark WebUI在Master节点上):

http://【Master的地址】:8080/

到此为止Spark集群安装完毕

但是有一个很大的问题,那就是Master节点存在单点故障,要解决此问题,就要借助zookeeper,并且启动至少两个Master节点来实现高可靠,这个也比较简单,等待以后再介绍。当然了Worker也会挂掉,但是Worker的死活是由Master监听的,Master和Worker之间一直会有心跳,一旦Worker挂掉Master感知到以后就会把挂掉的Worker上运行的任务重新分配到其他的Worker上,具体细节待以后再介绍。

Spark系列—01 Spark集群的安装的更多相关文章

  1. 【Spark】---- 在Linux集群上安装和配置Spark

    1 安装JDK   1) 进入JDK官网 2) 下载JDK安装包 3)配置环境变量,在/etc/profile增加以下代码 JAVA_HOME=/home/hadoop/jdk1.6.0_38 PAT ...

  2. ElasticSearch实战系列一: ElasticSearch集群+Kinaba安装教程

    前言 本文主要介绍的是ElasticSearch集群和kinaba的安装教程. ElasticSearch介绍 ElasticSearch是一个基于Lucene的搜索服务器,其实就是对Lucene进行 ...

  3. Spark学习之在集群上运行Spark

    一.简介 Spark 的一大好处就是可以通过增加机器数量并使用集群模式运行,来扩展程序的计算能力.好在编写用于在集群上并行执行的 Spark 应用所使用的 API 跟本地单机模式下的完全一样.也就是说 ...

  4. 【原创 Hadoop&Spark 动手实践 5】Spark 基础入门,集群搭建以及Spark Shell

    Spark 基础入门,集群搭建以及Spark Shell 主要借助Spark基础的PPT,再加上实际的动手操作来加强概念的理解和实践. Spark 安装部署 理论已经了解的差不多了,接下来是实际动手实 ...

  5. hadoop+yarn+hbase+storm+kafka+spark+zookeeper)高可用集群详细配置

    配置 hadoop+yarn+hbase+storm+kafka+spark+zookeeper 高可用集群,同时安装相关组建:JDK,MySQL,Hive,Flume 文章目录 环境介绍 节点介绍 ...

  6. 在local模式下的spark程序打包到集群上运行

    一.前期准备 前期的环境准备,在Linux系统下要有Hadoop系统,spark伪分布式或者分布式,具体的教程可以查阅我的这两篇博客: Hadoop2.0伪分布式平台环境搭建 Spark2.4.0伪分 ...

  7. Spark Streaming揭秘 Day31 集群模式下SparkStreaming日志分析(续)

    Spark Streaming揭秘 Day31 集群模式下SparkStreaming日志分析(续) 今天延续昨天的内容,主要对为什么一个处理会分解成多个Job执行进行解析. 让我们跟踪下Job调用过 ...

  8. Spark Streaming揭秘 Day30 集群模式下SparkStreaming日志分析

    Spark Streaming揭秘 Day30 集群模式下SparkStreaming日志分析 今天通过集群运行模式观察.研究和透彻的刨析SparkStreaming的日志和web监控台. Day28 ...

  9. Spark学习之在集群上运行Spark(6)

    Spark学习之在集群上运行Spark(6) 1. Spark的一个优点在于可以通过增加机器数量并使用集群模式运行,来扩展程序的计算能力. 2. Spark既能适用于专用集群,也可以适用于共享的云计算 ...

随机推荐

  1. EnCase v7 search hits in compound files?

    I used to conduct raw search in EnCase v6, and I'd like to see if EnCase v7 raw search could hit key ...

  2. leetcode 6

    题目描述: 该开始就输在了理解题意上.. 没搞懂zigzag是什么意思. 查了一些解释终于明白要干什么了.     将一个字符串按照Z字形排列(侧着看):再把结果按行输出. 刚开始的想法是讲字符串按照 ...

  3. Xshell常用命令备忘

    (1)命令ls——列出文件ls 显示当前目录文件ls -la 给出当前目录下所有文件的一个长列表,包括以句点开头的隐藏”文件ls a* 列出当前目录下以字母a开头的所有文件ls -l *.doc 给出 ...

  4. Android IOS WebRTC 音视频开发总结(十一)-- stun&turn部署

    本篇文章主要介绍webrtc里面的stun,turn服务的安装与配置(转载请说明出处: http://www.cnblogs.com/lingyunhu, RTC.Blacker) 说到STUN,TU ...

  5. maven项目使用mybatis-generator自动生成代码

    1.添加mybatis-generator插件,打开pom.xml文件 在project节点下添加: <build> <plugins> <!-- MyBatis代码生成 ...

  6. 合并多个List<T>类型并通过LINQ按指定属性排序

    后台CS代码: namespace WebFormTest.TestCollect { public partial class ListTest : System.Web.UI.Page { pro ...

  7. asp.net跨页面传值

    a.aspx.cs //获取a中的id HttpCookie objCookie = new HttpCookie("myCookie", id); Response.Cookie ...

  8. url 编码(percentcode 百分号编码)

    http://www.imkevinyang.com/2009/08/%E8%AF%A6%E8%A7%A3javascript%E4%B8%AD%E7%9A%84url%E7%BC%96%E8%A7% ...

  9. silverlight 退出系统(关闭当前网页),通过调用JS

    确认后直接退出系统,关闭当前页面 页面部分: <HyperlinkButton x:Name="LinkExit" Style="{StaticResource L ...

  10. 前端构建工具grunt

    简单配置grunt 配置gulp还是grunt都是在node的环境下安装的,所以在这之前保证你的node环境已经安装好了! -------------------------------------- ...