一、概述

关于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. 理解DOM中的事件流

    浏览器发展到第四代时(IE4和Netscape Communicator 4),浏览器团队遇到一个很有意思的问题:页面的哪一部分会拥有特定的事件?想象下在一张纸上有一组同心圆,如果你把手指放在圆心上, ...

  2. /proc/cpuinfo

    /proc文件系统是一个伪文件系统,它只存在内存当中,而不占用外存空间. 它以文件系统的方式为访问系统内核数据的操作提供接口. 用户和应用程序可以通过 proc得到系统的信息,并可以改变内核的某些参数 ...

  3. Android IOS WebRTC 音视频开发总结(十三)-- ice原理

    以前在做一个视频监控项目的时候,刚开始客户没提到要支持P2P,因为服务端是我们自己写的,为了便于处理一些逻辑,全部采用转发的方式,后来客户要求支持P2P,没办法了,后来自己部署了一个STUN服务器(不 ...

  4. C#流总结(文件流、内存流、网络流、BufferedStream、StreamReader/StreamWriter、TextReader/TextWriter)

    一.文件流 FileStream类主要用于读写磁盘文件.常用于向磁盘存储数据或读取配置文件. 读取文件: //文件流:读取 FileStream fileStream = File.Open(@&qu ...

  5. MVC5 Identity 自定义用户和角色

    看代码基本就都能看懂了,增加了两个用户详细信息的表,角色表增加两个字段页面中实现树形显示. //IdentityModels.cs using System.Data.Entity; using Sy ...

  6. 将数组之中的省份市区地区ID改成对用中文字符

    数据表数据源的省市区联动: 原始数据: //获取所有学校信息 $school=D('school'); $info=$school->getList(); 数据如下: 1 => array ...

  7. 《安全参考》HACKCTO-201312-12

    小编的话 “忽如一夜春风来,千树万树梨花开.” 小伙伴们,不要只为了“千树万树的梨花”而惊喜,陶醉! 与此同时,您最爱的整合型信息安全技术期刊<安全参考>第12期也如约而至啦! 这一期&l ...

  8. C++实现按绩点排名

    题目内容:有一些班级的学生需要按绩点计算并排名.每门课的成绩只有在60分以上(含),才予以计算绩点.课程绩点的计算公式为:(课程成绩-50)÷10×学分数.一个学生的总绩点为其所有课程绩点总和除以10 ...

  9. 【Windows】如何判断当前鼠标是否按下左键或右键

    在delphi中,很多窗体和控件的鼠标事件里面已经将鼠标按键状态封装好传给响应事件的函数,所以这种情况直接使用就可以,但在某些时候,我们没有这些事件可以处理时,想判断鼠标按键是否按下的状态,就需要借助 ...

  10. LinkedList存储一副扑克牌,实现洗牌功能。

    package cd.itcast.runble; import java.util.LinkedList; import java.util.Random; /** * LinkedList存储一副 ...