热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

初识Spark入门

这篇文章主要介绍了初识Spark入门,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

1. Spark简介

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

2. Spark是什么?

  • Apache Spark™ is a unified analytics engine for large-scale data processing.
  • 大规模数据集的统一分析引擎
  • Spark是一个基于内存的通用并行计算框架,目的是让数据分析更加快速
  • Spark包含了大数据领域常见的各种计算框架
    • spark core(离线计算)
    • sparksql(交互式查询)
    • spark streaming(实时计算)
    • Spark MLlib (机器学习)
    • Spark GraphX (图计算)

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(实时计算)
  • .....

可以运行在任意的平台

  • yarn
  • Mesos
  • standalone

5. Spark的缺点

JVM的内存overhead太大,1G的数据通常需要消耗5G的内存 (Project Tungsten 正试图解决这个问题 )

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

6. Spark vs MR

6.1 mr的局限性

  • 抽象层次低,需要手工编写代码来完成,使用上难以上手
  • 只提供两个操作,Map和Reduce,表达力欠缺
  • 一个Job只有Map和Reduce两个阶段(Phase), 复杂的计算需要大量的Job完成,Job之间的依赖关系是由开发者自己管理的
  • 中间结果 (reduce的输出结果) 也放在HDFS文件系统中
  • 延迟高,只适用Batch数据处理,对于交互式数据处理,实时数据处理的支持不够
  • 对于迭代式数据处理性能比较差

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

抽象层次低,需要手工编写代码来完成,使用上难以上手

  • 通过spark中的RDD(Resilient distributed datasets)来进行抽象

只提供两个操作,Map和Reduce,表达力欠缺

  • 在spark中提供了多种算子

一个Job只有Map和Reduce两个阶段

  • 在spark中可以有多个阶段(stage)

中间结果也放在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/jdk
export SPARK_MASTER_IP=uplooking01
export SPARK_MASTER_PORT=7077
export SPARK_WORKER_CORES=4
export SPARK_WORKER_INSTANCES=1
export SPARK_WORKER_MEMORY=2g
export HADOOP_CONF_DIR=/opt/hadoop/etc/hadoop

配置环境变量

#配置Spark的环境变量
export SPARK_HOME=/opt/spark
export 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/conf
scp /opt/spark/conf/spark-env.sh uplooking03:/opt/spark/conf
scp /opt/spark/conf/spark-env.sh uplooking04:/opt/spark/conf
scp /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

13. Spark提交作业的大体流程


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。


推荐阅读
  • 原创 | 大数据入门基础系列之ClouderaManager版本的Hive安装部署
    添加服务,一 ... [详细]
  • 《Spark核心技术与高级应用》——1.2节Spark的重要扩展
    本节书摘来自华章社区《Spark核心技术与高级应用》一书中的第1章,第1.2节Spark的重要扩展,作者于俊向海代其锋马海平,更多章节内容可以访问云栖社区“华章社区”公众号查看1. ... [详细]
  • 我们在之前的文章中已经初步介绍了Cloudera。hadoop基础----hadoop实战(零)-----hadoop的平台版本选择从版本选择这篇文章中我们了解到除了hadoop官方版本外很多 ... [详细]
  • 本文介绍了在Win10上安装WinPythonHadoop的详细步骤,包括安装Python环境、安装JDK8、安装pyspark、安装Hadoop和Spark、设置环境变量、下载winutils.exe等。同时提醒注意Hadoop版本与pyspark版本的一致性,并建议重启电脑以确保安装成功。 ... [详细]
  • python zookeeeper 学习和操作
    1.zookeeeper介绍ZooKeeper是一个为分布式应用所设计的分布的、开源的协调服务,它主要是用来解决分布式应用中经常遇到的一些数据管理问题,简化分布式应用协调及其管理的 ... [详细]
  • Yarn已过时!Kubeflow实现机器学习调度平台才是未来
    来源:AI前线本文约6700字,建议阅读10分钟。本文分析了建设分布式训练平台的过程中的痛点所在,为你介绍Kubeflow与其核心组件及其 ... [详细]
  • 探索MLlib机器学习
    公众号后台回复关键词:pyspark,获取本项目github地址。MLlib是Spark的机器学习库,包括以下主要功能。实用工具ÿ ... [详细]
  • (单机安装kafka)mac安装jdkzookeeperkafkapythonkafka模块
    此处讲解单机安装kafka kafka是LinkedIn开发并开源的一个分布式MQ系统,现在是Apache的一个孵化项目。在它的主页描述kafka为一个高吞吐量的分布式(能将消息分 ... [详细]
  • 一、Hadoop来历Hadoop的思想来源于Google在做搜索引擎的时候出现一个很大的问题就是这么多网页我如何才能以最快的速度来搜索到,由于这个问题Google发明 ... [详细]
  • 本文由编程笔记#小编为大家整理,主要介绍了StartingzookeeperFAILEDTOSTART相关的知识,希望对你有一定的参考价值。下载路径:https://ar ... [详细]
  • 本文介绍了在Linux下安装和配置Kafka的方法,包括安装JDK、下载和解压Kafka、配置Kafka的参数,以及配置Kafka的日志目录、服务器IP和日志存放路径等。同时还提供了单机配置部署的方法和zookeeper地址和端口的配置。通过实操成功的案例,帮助读者快速完成Kafka的安装和配置。 ... [详细]
  • 一句话解决高并发的核心原则
    本文介绍了解决高并发的核心原则,即将用户访问请求尽量往前推,避免访问CDN、静态服务器、动态服务器、数据库和存储,从而实现高性能、高并发、高可扩展的网站架构。同时提到了Google的成功案例,以及适用于千万级别PV站和亿级PV网站的架构层次。 ... [详细]
  • 本文总结了初学者在使用dubbo设计架构过程中遇到的问题,并提供了相应的解决方法。问题包括传输字节流限制、分布式事务、序列化、多点部署、zk端口冲突、服务失败请求3次机制以及启动时检查。通过解决这些问题,初学者能够更好地理解和应用dubbo设计架构。 ... [详细]
  • 开发笔记:读《分布式一致性原理》JAVA客户端API操作2
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了读《分布式一致性原理》JAVA客户端API操作2相关的知识,希望对你有一定的参考价值。创 ... [详细]
  • 前言折腾了一段时间hadoop的部署管理,写下此系列博客记录一下。为了避免各位做部署这种重复性的劳动,我已经把部署的步骤写成脚本,各位只需要按着本文把脚本执行完,整个环境基本就部署 ... [详细]
author-avatar
曾静ZHH_423
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有