spark快速入门菜鸟教程(大数据spark入门教程)

技术Spark该怎样入门本篇文章为大家展示了Spark该怎样入门,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。1. Spark简介2009年,Spark诞生于伯克利大学的AMPL

本文向您展示了如何开始使用Spark。内容简洁易懂。一定会让你眼前一亮。希望通过这篇文章的详细介绍,你能有所收获。

1. Spark简介

Spark于2009年诞生于伯克利大学AMPLab实验室。Most Spark只是一个实验项目,代码很少,属于轻量级框架。2010年,伯克利正式开启了Spark项目。2013年6月,Spark成为阿帕奇基金会旗下项目,进入快速发展期。第三方开发者贡献了大量代码,活跃度非常高。2014年2月,Spark以飞快的速度成为Apache的顶级项目,而大数据公司Cloudera宣布将加大对Spark框架的投入,以取代MapReduce。2014年4月,大数据公司MapR加入Spark阵营,Apache Mahout放弃MapReduce,使用Spark作为计算引擎。2014年5月,Spark 1.0.0发布。2015年至2015年,Spark在国内IT行业越来越受欢迎,越来越多的公司开始部署或使用Spark替代MR2、Hive、Storm等传统的大数据并行计算框架。

2. Spark是什么?

Apache Sparkis是一个用于大规模数据处理的统一分析引擎。大规模数据集的统一分析引擎Spark是一个基于内存的通用并行计算框架。目的是让数据分析更快。Spark包括大数据领域各种常见的计算框架,如spark core(离线计算)、sparksql(交互式查询)、spark streaming(实时计算)、Spark MLlib(机器学习)、Sparkgraph(图形计算)。

3. Spark能代替hadoop吗?

不太对。

因为我们只能用spark core代替mr做离线计算,所以数据存储还是要靠hdfs。

Spark Hadoop的组合是未来大数据领域最热门的组合,也是最有希望的组合!

4. Spark的特点

速度

内存计算比mr快100多倍,磁盘计算比Mr快10多倍。

易于使用

提供了java scala python R语言的api接口。

一站式解决方案

Spark core(离线计算)spark sql(交互式查询)spark streaming(实时计算).

它可以在任何平台上运行。

独立纱Mesos

5. Spark的缺点

JVM的内存开销太大,1gb的数据通常会消耗掉5gb的内存(钨项目正在努力解决这个问题)

不同的spark app之间缺乏有效的内存共享机制(Project Tachyon正在尝试引入分布式内存管理,以便不同的spark app可以共享缓存的数据)

6. Spark vs MR

6.1 mr的局限性

抽象层次低,需要手工编码才能完成,很难只用Map和Reduce两个操作,缺乏表现力,一个Job只有Map和Reduce两个Phase,复杂的计算需要大量的作业才能完成,作业之间的依赖关系由开发人员自己管理,中间结果 (reduce的输出结果) 也放在HDFS文件系统中时延高,只适合Batch数据处理,对交互数据处理和实时数据处理的支持不足,迭代数据处理性能差。

6.2 Spark解决了mr中的那些问题?

抽象层次低,需要手工编写,使用起来比较困难。

抽象是由RDD(弹性分布式数据集)在spark中实现的

只提供了Map和Reduce两种操作,表现力不足。

spark中提供了多种操作器

作业只有两个阶段:映射和缩减。

火花可以有多个阶段。

中间结果也放在HDFS文件系统中(速度慢)

结果被放在内存中,如果内存放不下,它将被写入本地磁盘,而不是HDFS。

延迟高,只适合Batch数据处理,对交互数据处理和实时数据处理支持不足。

Sparksql和sparkstreaming解决了上述问题。

关于

迭代式数据处理性能比较差

通过在内存中缓存数据,提高迭代式计算的性能

==因此,Hadoop MapReduce会被新一代的大数据处理平台替代是技术发展的趋势,而在新一代的大数据处理平台中,Spark目前得到了最广泛的认可和支持==

7. Spark的版本

spark1.6.3 : scala的版本2.10.5  spark2.2.0 : scala的版本2.11.8(新项目建议使用spark2.x的版本)  hadoop2.7.5

8. Spark单机版的安装

准备安装包spark-2.2.0-bin-hadoop2.7.tgz

tar -zxvf spark-2.2.0-bin-hadoop2.7.tgz -C /opt/mv spark-2.2.0-bin-hadoop2.7/ spark

修改spark-env.sh

export JAVA_HOME=/opt/jdkexport SPARK_MASTER_IP=uplooking01export SPARK_MASTER_PORT=7077export SPARK_WORKER_CORES=4export SPARK_WORKER_INSTANCES=1export SPARK_WORKER_MEMORY=2gexport HADOOP_CONF_DIR=/opt/hadoop/etc/hadoop

配置环境变量

#配置Spark的环境变量export SPARK_HOME=/opt/sparkexport PATH=$PATH:$SPARK_HOME/bin:$SPARK_HOME/sbin

启动单机版spark

start-all-spark.sh

查看启动

http://uplooking01:8080

9. Spark分布式集群的安装

配置spark-env.sh

[root@uplooking01 /opt/spark/conf]   export JAVA_HOME=/opt/jdk  #配置master的主机  export SPARK_MASTER_IP=uplooking01  #配置master主机通信的端口  export SPARK_MASTER_PORT=7077  #配置spark在每个worker中使用的cpu核数  export SPARK_WORKER_CORES=4  #配置每个主机有一个worker  export SPARK_WORKER_INSTANCES=1  #worker的使用内存是2gb  export SPARK_WORKER_MEMORY=2g  #hadoop的配置文件中的目录  export HADOOP_CONF_DIR=/opt/hadoop/etc/hadoop

配置slaves

[root@uplooking01 /opt/spark/conf]  uplooking03  uplooking04  uplooking05

分发spark

[root@uplooking01 /opt/spark/conf]   scp -r /opt/spark uplooking02:/opt/  scp -r /opt/spark uplooking03:/opt/  scp -r /opt/spark uplooking04:/opt/  scp -r /opt/spark uplooking05:/opt/

分发uplooking01上配置的环境变量

[root@uplooking01 /]   scp -r /etc/profile uplooking02:/etc/  scp -r /etc/profile uplooking03:/etc/  scp -r /etc/profile uplooking04:/etc/  scp -r /etc/profile uplooking05:/etc/

启动spark

[root@uplooking01 /]  start-all-spark.sh

10. Spark高可用集群

先停止正在运行的spark集群

修改spark-env.sh

#注释以下这两行内容#export SPARK_MASTER_IP=uplooking01#export SPARK_MASTER_PORT=7077

添加内容

export SPARK_DAEMON_JAVA_OPTS="-Dspark.deploy.recoveryMode=ZOOKEEPER -Dspark.deploy.zookeeper.url=uplooking03:2181,uplooking04:2181,uplooking05:2181 -Dspark.deploy.zookeeper.dir=/spark"

分发修改的[配置

scp /opt/spark/conf/spark-env.sh uplooking02:/opt/spark/confscp /opt/spark/conf/spark-env.sh uplooking03:/opt/spark/confscp /opt/spark/conf/spark-env.sh uplooking04:/opt/spark/confscp /opt/spark/conf/spark-env.sh uplooking05:/opt/spark/conf

启动集群

[root@uplooking01 /] start-all-spark.sh[root@uplooking02 /] start-master.sh

11. 第一个Spark-Shell程序

spark-shell --master spark://uplooking01:7077 #spark-shell可以在启动时指定spark-shell这个application使用的资源(总核数,每个work上使用的内存)spark-shell --master spark://uplooking01:7077 --total-executor-cores 6 --executor-memory 1g#如果不指定 默认使用每个worker上全部的核数,和每个worker上的1g内存

sc.textFile("hdfs://ns1/sparktest/").flatMap(_.split(",")).map((_,1)).reduceByKey(_+_).collect

12. Spark中的角色

Master

负责接收提交的作业的请求  master负责调度资源(在woker中启动CoarseGrainedExecutorBackend)

Worker

worker中的executor负责执行task

Spark-Submitter ===> Driver

提交spark应用程序给master

上述内容就是Spark该怎样入门,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注行业资讯频道。

内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/149831.html

(0)

相关推荐

  • tensorflow 数据扩增随机变换(tensorflow手写识别如何保存模型)

    技术tensorflow中tf.matrix_diag和tf.matrix_inverse的用法tensorflow中tf.matrix_diag和tf.matrix_inverse的用法,很多新手对此不是很清楚,为了帮

    攻略 2021年12月22日
  • 日历工具BusyCal mac版减速了该怎么解决

    技术日历工具BusyCal mac版减速了该怎么解决今天就跟大家聊聊有关日历工具BusyCal mac版减速了该怎么解决,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收

    攻略 2021年12月8日
  • 很感人的电影,什么电影好看,看着感人

    技术很感人的电影,什么电影好看,看着感人《七号房的礼物》这部电影,真的让人从头哭到尾很感人的电影。里面有很多温馨的片段,有可爱逗比的狱友,有傻乎乎的龙九,有超级可爱的艺胜,可是在观影过程中,你每次笑完之后,都会立刻心塞,

    生活 2021年10月29日
  • JAVA中Throw和throws的区别有哪些

    技术JAVA中Throw和throws的区别有哪些本篇内容主要讲解“JAVA中Throw和throws的区别有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“JAVA中Th

    攻略 2021年11月20日
  • JVM堆内存溢出后其他线程是否可继续工作

    技术JVM堆内存溢出后其他线程是否可继续工作本篇文章给大家分享的是有关JVM堆内存溢出后其他线程是否可继续工作,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。

    2021年10月23日
  • 如何理解MySQL SQL Profiler性能分析器

    技术如何理解MySQL SQL Profiler性能分析器这篇文章给大家介绍如何理解MySQL SQL Profiler性能分析器,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。MySQL SQL P

    攻略 2021年11月16日