spark概述和安装部署

1、spark概述

  • 1、什么是spark

    • 基于内存的计算引擎,它的计算速度非常快。但是spark仅仅只涉及到数据的计算,没有涉及到数据的存储。

  • 2、为什么学习spark

    • 比mapreduce计算速度快很多。

  • 3、spark特点

    • 1、速度快

      • 比mapreduce在内存中快100x,在磁盘中快10x

        • 1、由于mapreduce每次job的中间结果数据都会落地到磁盘中,而spark每次中间结果数据可以不落地(可以保存在内存中)

        • 2、mapreduce任务对应都会产生一些map任务和reduce任务,这些任务都会以进程的方式运行在集群中,针对于spark任务,它是以线程的方式运行在spark集群中。

    • 2、易用性

      • 可以快速写一个spark应用程序采用4中语言(java/scala/Python/R)

    • 3、通用性

      • 可以使用sparkSql /sparkStreaming/Mlib/Graphx

    • 4、兼容性

      • 可以把spark程序提交到不同的平台中运行(standalone/yarn/mesos)

2、spark集群安装部署

  • 1、下载spark安装包

  • 2、规划安装目录

  • 3、解压安装包到指定安装目录

  • 4、重明名安装目录

  • 5、修改配置文件

    • 1、vi spark-env.sh (mv spark-env.sh.template spark-env.sh)

      • 配置java环境变量

        • export JAVA_HOME=/export/servers/jdk

      • 配置master的地址

        • export SPARK_MASTER_HOST=node1

      • 配置master的端口

        • export SPARK_MASTER_PORT=7077

    • 2、vi slaves (mv slaves.template slaves)

      • 添加worker节点

        • node2

        • node3

  • 6、添加spark环境变量

    • vi /etc/profile


      export SPARK_HOME=/export/servers/spark
      export PATH=$PATH:$SPARK_HOME/bin:$SPARK_HOME/sbin
  • 7、分发spark安装目录到其他节点

    • scp -r spark root@node2:/export/servers

    • scp -r spark root@node3:/export/servers

    • scp /etc/profile root@node2:/etc

    • scp /etc/profile root@node3:/etc

  • 8、让所有spark环境变量生效

    • 在所有节点执行

      • source /etc/profile

3、spark集群启动和停止

  • 启动spark集群

    • 在主节点上执行脚本

      • $SPARK_HOME/sbin/start-all.sh

  • 停止spark集群

    • 在主节点上执行脚本

      • $SPARK_HOME/sbin/stop-all.sh

4、spark集群web管理界面

  • spark web管理界面

5、基于zookeeper的sparkHA高可用部署

  • 1、修改配置文件 vi spark-env.sh

    • 1、注释掉手动指定的master地址

      • export SPARK_MASTER_HOST=node1

    • 2、添加配置参数 SPARK_DAEMON_JAVA_OPTS


      export SPARK_DAEMON_JAVA_OPTS="-Dspark.deploy.recoveryMode=ZOOKEEPER -Dspark.deploy.zookeeper.url=hdp-node-01:2181,hdp-node-02:2181,hdp-node-03:2181 -Dspark.deploy.zookeeper.dir=/spark"
  • 2、启动zk集群

  • 3、启动sparkHA

    • 可以在任意一台机器上启动脚本(它会在当前机器中产生一个Master进程) 前提条件:配置所有机器两两之间对应的ssh免登录

      • start-all.sh

    • 可以在其他机器上单独启动master进程

      • start-master.sh

6、spark角色介绍

  • 1、Driver

    • 就是运行客户端main方法,构建SparkContext对象

  • 2、Application

    • 包含driver代码,还有当前这个任务计算所有需要的资源

  • 3、Master

    • 它是集群中老大,负责资源的分配和任务的调度

  • 4、ClusterManager

    • spark应用程序可以获取的外部资源

      • Standalone

        • spark自带的集群模式,资源的分配和任务调度由Master

      • Yarn

        • 资源的分配和任务调度由ResourceManager

      • Mesos

        • 是apache开源的一个资源调度框架。

  • 5、Worker Node

    • 集群中的小弟,负责任务计算的节点

    • Standalone: 通过slaves文件指定的节点

    • spark on yarn: yarn中的NodeManager节点

  • 6、executor

    • 它是一个进程,它会在worker节点上启动

  • 7、task

    • 是以线程的方式运行在executor进程中

7、初识spark程序

  • 1、普通模式提交任务(已经知道活着的master地址)


    bin/spark-submit \
    --class org.apache.spark.examples.SparkPi \
    --master spark://node1:7077 \
    --executor-memory 1G \
    --total-executor-cores 2 \
    examples/jars/spark-examples_2.11-2.0.2.jar \
    10
  • 2、高可用模式提交任务(并不知道哪一个master是活着的master)


    bin/spark-submit \
    --class org.apache.spark.examples.SparkPi \
    --master spark://node1:7077,node2:7077,node3:7077 \
    --executor-memory 1G \
    --total-executor-cores 2 \
    examples/jars/spark-examples_2.11-2.0.2.jar \
    10

8、spark-shell使用

  • 1、spark-shell --master local[N] 读取本地数据文件,实现单词计数

    • --master local[N]

      • 指定master的地址为本地单机版模式 ,N是一个正整数,(local[2])表示本地采用2个线程来运行任务

    • 它会产生一个SparkSubmit进程


      sc.textFile("file:///root/words.txt").flatMap(_.split(" ")).map((_,1)).reduceByKey(_+_).collect

      sc.textFile("file:///root/words.txt").flatMap(x=>x.split(" ")).map(x=>(x,1)).reduceByKey((x,y)=>x+y).collect
  • 2、spark-shell --master local[N] 读取HDFS上数据文件,实现单词计数

    • spark整合HDFS

      • vi spark-env.sh


      export HADOOP_CONF_DIR=/export/servers/hadoop/etc/hadoop

      sc.textFile("/words.txt").flatMap(_.split(" ")).map((_,1)).reduceByKey(_+_).collect
  • 3、spark-shell --master 指定master为spark集群中活着的master,读取HDFS上数据文件,实现单词计数

    • spark-shell --master spark://node1:7077 --executor-memory 1g --total-executor-cores 2

猜你喜欢

转载自www.cnblogs.com/yangwenhan/p/9048702.html