java

关注公众号 jb51net

关闭
首页 > 软件编程 > java > Spark 入门

初识Spark入门

作者:EVAO_大个子

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

1. Spark简介

2. Spark是什么?

3. Spark能代替hadoop吗?

​ 不完全对

​ 因为我们只能使用spark core代替mr做离线计算,数据的存储还是要依赖hdfs

​ Spark+Hadoop的组合,才是未来大数据领域最热门的组合,也是最有前景的组合!​

4. Spark的特点

速度

容易使用

一站式解决方案

可以运行在任意的平台

5. Spark的缺点

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

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

6. Spark vs MR

6.1 mr的局限性

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

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

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

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

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

延迟高,只适用Batch数据处理,对于交互式数据处理,实时数据处理的支持不够

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

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

7. Spark的版本

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

Worker

Spark-Submitter ===> Driver

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


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

您可能感兴趣的文章:
阅读全文