Hadoop学习笔记(8)-Spark介绍以及环境搭建

Spark介绍

Spark简介

Spark最初由美国加州伯克利大学(UC Berkeley)的AMP ( Algorithm, Machine and People)实验室于2009年开发, 是基于内存计算的大数据并行计算框架,可用于构建大型 的、低延迟的数据分析应用程序。2013年Spark加入Apache孵化器项目后发展迅猛,如今已 成为Apache软件基金会最重要的三大分布式计算系统开源 项目之一(Hadoop、Spark、Storm)

Spark在2014年打破了Hadoop MapReduce保持的基准排序(Sort Benchmark)纪录

  • Spark/206个节点/23分钟/100TB数据
  • Hadoop MapReduce/2000个节点/72分钟/100TB数据
  • Spark用十分之一的计算资源,获得了比Hadoop快3倍的 速度
Spark的特点

Spark具有如下几个主要特点:

  • 运行速度快: 使用DAG执行引擎以支持循环数据流与内存计算
  • 容易使用: 支持使用Scala、Java、Python和R语言进行编程,可以 通过Spark Shell进行交互式编程
  • 通用性: Spark提供了完整而强大的技术栈,包括SQL查询、流式 计算、机器学习和图算法组件
  • 运行模式多样: 可运行于独立的集群模式中,可运行于Hadoop中 ,也可运行于Amazon EC2等云环境中,并且可以访问HDFS、 Cassandra、HBase、Hive等多种数据源
Spark与Hadoop MapReduce的比较

Hadoop MapReduce存在如下一些缺点

  • 表达能力有限 : 仅存在Map和Reduce两个算子,难以描述复杂计算过程
  • 磁盘IO开销大: 每次作业均需要从磁盘读取数据,中间结果同样写入磁盘
  • 延迟高: MapReduce各个任务间涉及IO开销,存在延迟 。前一个任务完成前,其它任务无法开展

相比于Hadoop MapReduce,Spark主要具有如下优点:

  • Spark的计算模式也属于MapReduce,但不局限于Map和 Reduce操作,还提供了多种数据集操作类型,编程模型比 Hadoop MapReduce更灵活
  • Spark提供了内存计算,可将中间结果放到内存中,对于迭代 运算效率更高
  • Spark基于DAG的任务调度执行机制,要优于Hadoop MapReduce的迭代执行机制
Hadoop与Spark的执行流程对比

Spark生态系统

在实际应用中,大数据处理主要包括以下三个类型:

  • 复杂的批量数据处理:通常时间跨度在数十分钟到数小时之间
  • 基于历史数据的交互式查询:通常时间跨度在数十秒到数分钟之间
  • 基于实时数据流的数据处理:通常时间跨度在数百毫秒到数秒之间

当同时存在以上三种场景时,就需要同时部署三种不同的软件,比如MapReduce/Impala/Storm,这样做难免会带来一些问题:

  • 不同场景之间输入输出数据无法做到无缝共享,通常需要进行数据格
    式的转换
  • 不同的软件需要不同的开发和维护团队,带来了较高的使用成本
  • 比较难以对同一个集群中的各个系统进行统一的资源协调和分配

Spark的设计遵循“一个软件栈满足不同应用场景”的理念,逐渐形成了一套完整的生态系统, 既能够提供内存计算框架,也可以支持SQL即席查询、实时流 式计算、机器学习和图计算等, Spark可以部署在资源管理器YARN之上,提供一站式的大数据解决方案,因此,Spark所提供的生态系统足以应对上述三种场景,即同时 支持批处理、交互式查询和流数据处理。

Spark生态系统已经成为伯克利数据分析软件栈BDAS(Berkeley Data Analytics Stack)的重要组成部分。

Spark环境的搭建

Spark的下载

Spark官方下载地址: http://spark.apache.org/downloads.html
因为前期已经配置了Hadopp,(没有配置的小伙伴可以看看这篇文章Hadoop学习笔记(1)-Hadoop在Ubuntu的安装和使用),所以在Choose a package type后面需要选择Pre-build with user-provided Hadoop,然后单击Download Spark后面的without-hadoop压缩包即可,下载的文件会被默认保存在"/home/hadoop/Download"目录中。

选择推荐的镜像下载,可能下载速度会快一点

将下载好的spark-2.4.5-bin-without-hadoop.tar移动到/usr/local目录下并解压

sudo tar -xvf spark-2.4.5-bin-without-hadoop.tar

为了方便后续各种操作,将其重新命名为spark。

sudo mv ./spark-2.4.5-bin-without-hadoop/ ./spark

为文件授予权限,避免遇到文件无法创建等问题,hadoop是当前 登录Linux系统的用户名

sudo chown -R hadoop:hadoop ./spark  
Spark的配置

修改Spark的配置文件spark-env.sh,安装文件解压后,需要修改Spark的配置文件spark-env.sh,首先可以先复制一份Spark安装文件自带的配置文件模板:

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

利用gedit编辑配置文件spark-env.sh

gedit spark-env.sh

在文件第一行加上以下配置信息,其中包括Java的jdk安装路径

export SPARK_DIST_CLASSPATH=$(/usr/local/hadoop/bin/hadoop classpath)
export JAVA_HOME=/usr/java/jdk1.8.0_221

有了上述的配置信息后,Spark就可以把数据存储到Hadoop分布式文件系统HDFS中,也可以从HDFS中读取数据。如果没有配置上面的信息,Spark就只能读写本地数据,无法读写HDFS中的数据。

配置完成后,就可以直接使用Spark,不需要像Hadoop那样运行启动命令,通过运行Spark自带的实例,可以验证Spark是否安装成功,命令如下:

./bin/run-example SparkPi

执行时会输出很多屏幕信息,不容易找到最终的输出结果,为了从大量的输出信息中快速找到我们想要的执行结果,可以通过grep命令进行过滤。

bin/run-example SparkPi 2>&1 | grep "Pi is roughly"

启动Spark shell

./bin/spark-shell


关闭Spark shell

:quit

到这里,本次给大家分享的Hadoop学习笔记-Spark介绍以及环境搭建就结束啦,最近一段时间忙其他事情去啦,没有花时间来写博文,(肯定是我变懒了),这篇博客也是参考了小伙伴星星小编的文章啦,写的很棒的哟,本次分享有哪里不对的大家一定要给我提出来哟,我加以改正,后面得勤快一点啦,配置完啦,又该写实验作业啦(溜~~~)

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值