1、准备安装包

2、Spark Standalone 即独立模式
  2.1、解压安装包到你安装的目录。
  2.2、拷贝 conf 目录下的 slaves 文件,将 slave 节点的 hostname 写在文件中,每行一个。
  2.3、拷贝 conf 目录下的 spark-env.sh 文件,将 SPARK_MASTER_HOST 和 SPARK_MASTER_PORT 指定。
  2.4、分发你的 spark 安装目录到其他节点。
  2.5、在 master 节点上执行 /opt/module/spark-2.1.1-bin-hadoop2.7/sbin/start-all.sh 来启动整个 spark 集群。
  2.6、在浏览器中访问 http://hadoop102:8080 来访问你的 spark 集群
  注意:如果在启动的时候出现 JAVA_HOME not set 那么可以在 sbin 目录下的 spark-config.sh 文件中输入 export JAVA_HOME=/opt/module/jdk1.8.0_144 然后分发到其他节点,这样问题即可解决。

3、Spark Standalone 模式 Spark History Server 的配置
  3.1、拷贝 conf 目录下的 spark-defaults.conf 修改为 spark-env.sh,在该文件中添加以下内容:
spark-defaults.conf

spark.eventLog.enabled   true
spark.eventLog.dir       hdfs://hadoop102:9000/directory
spark.eventLog.compress  true

  3.2、拷贝 conf 目录下的 spark-env.sh.template 修改为 spark-env.sh,在该文件中添加以下内容:
spark-env.sh

export SPARK_HISTORY_OPTS="-Dspark.history.ui.port=4000
-Dspark.history.retainedApplications=3
-Dspark.history.fs.logDirectory=hdfs://hadoop102:9000/directory"

  3.3、将修改好的文件同步到集群的其他节点
  3.4、启动 /opt/module/spark-2.1.1-bin-hadoop2.7/sbin/start-history-server.sh 来启动 history log 的 web 服务。
  查看日志有两种方式:
   1、对于正在运行的应用,直接访问 http://hadoop102:4040 查看
   2、对于已经结束的应用,直接访问 http://hadoop102:4000 查看

4、Spark Standalone 的 HA 模式
  4.1、修改 spark-env.sh 文件
  1)、删除 SPARK_MASTER_IP(即 SPARK_MASTER_HOST)
  2)、添加如下内容:

export SPARK_DAEMON_JAVA_OPTS="
-Dspark.deploy.recoveryMode=ZOOKEEPER
-Dspark.deploy.zookeeper.url=hadoop102:2181,hadoop103:2181,hadoop104:2181
-Dspark.deploy.zookeeper.dir=/spark"

  3)、将配置好的文件分发到其他机器节点
  4.2、在 master 节点通过 sbin/start-all.sh 进行集群的启动,在某个其他 slave 节点上手动执行 sbin/start-master.sh 来启动第二个 master 进程
  4.3、如果是 HA 模式,那么访问的服务地址变为:--master spark://hadoop102:7077,hadoop103:7077

5、Spark Yarn 模式集群的配置
  5.1、不需要 spark standalone 集群
  5.2、需要配置你提交应用的 client 端
修改 spark-env.sh

# 让 spark 能够发现 hadoop 的配置文件
HADOOP_CONF_DIR=/opt/module/hadoop-2.7.2/etc/hadoop
YARN_CONF_DIR=/opt/module/hadoop-2.7.2/etc/hadoop

  5.3、提交应用

$ /opt/module/spark-2.1.1-bin-hadoop2.7/bin/spark-submit \
--class com.atguigu.sparkdemo.WordCountDemo \
--master yarn \
--deploy-mode client \
--executor-memory 1G \
--total-executor-cores 2 \
/opt/software/sparkdemo-1.0-SNAPSHOT-jar-with-dependencies.jar \
hdfs://hadoop102:9000/RELEASE \
hdfs://hadoop102:9000/out 或者 $ /opt/module/spark-2.1.1-bin-hadoop2.7/bin/spark-submit \
--class com.atguigu.sparkdemo.WordCountDemo \
--master yarn-client \
--executor-memory 1G \
--total-executor-cores 2 \
/opt/software/sparkdemo-1.0-SNAPSHOT-jar-with-dependencies.jar \
hdfs://hadoop102:9000/RELEASE \
hdfs://hadoop102:9000/out

注意:如果使用 yarn 集群,不需要配置 master、slave 结构,只需要配置 jar 包的 client 提交端,让提交端能够发现 hadoop 的一些配置即可。

6、Spark 集群的访问
  6.1、通过 IDEA 来编写程序打成 jar 包,来提交运行。
   1)、需要创建 SparkConf 对象来设置应用
   2)、需要根据 SparkConf 对象来创建 SparkContext(SparkConext 是你的程序和 spark 集群进行连接的桥梁)。
   3)、通过 sc,从外部加载数据
   4)、对数据进行处理
   5)、将结果数据写出到外部
   6)、通过 sc.stop() 关闭 SparkContext
  6.2、调试应用是通过 local[*] 模式来进行的。
  6.3、应用的提交:

$ /opt/module/spark-2.1.1-bin-hadoop2.7/bin/spark-submit \
--class com.atguigu.sparkdemo.WordCountDemo \
--master spark://hadoop102:7077 \
--executor-memory 1G \
--total-executor-cores 2 \
/opt/software/sparkdemo-1.0-SNAPSHOT-jar-with-dependencies.jar \
hdfs://hadoop102:9000/RELEASE \
hdfs://hadoop102:9000/out --class         指定 jar 包的主类
--master        指定 jar 包提交的模式,详解如下:
    local           本地模式,本地运行,可以调试(local 1个线程、local[*] 不限线程、local[N] N个线程,理想情况下,N 设置为你机器的 CPU 核数)
    spark           提交到 spark stanalone 集群,有 Master 和 Worker 进程,会在 container 中 jar 包运行的时候自动生成
    mesos           将 jar 包提交到 mesos 集群,运行在 mesos 资源管理器框架之上,由 mesos 负责资源管理,Spark 负责任务调度和计算
    yarn            将 jar 包提交到 yarn 集群,运行在 yarn 资源管理器框架之上,由 yarn 负责资源管理,Spark 负责任务调度和计算
    cloud           比如 AWS 的 EC2,使用这个模式能很方便的访问 Amazon 的 S3,Spark 支持多种分布式存储系统,比如 HDFS 和 S3
--deploy-mode   指定 jar 的运行方式(默认是 client 模式),详解如下:
    client 模式      在提交端生成的 JVM 会一直等待所有计算过程全部完成才退出,它有两个功能,一个是提交,一个是监控 jar 包运行(测试环境下使用)
    cluster 模式     在提交端生成的 JVM 在提交 jar 包后会退出,它只有一个提交功能,然后在某一个 worker 上会生成一个 Driver 的 JVM,该 JVM 执行监控 jar 包运行的功能,等待所有代码运行完毕退出(生产环境下使用 )
application.jar 指定你的 jar 包的地址
arguments       传给 main() 方法的参数 执行通过 $ /opt/module/spark-2.1.1-bin-hadoop2.7/bin/spark-shell 来运行。
如果不设置 master 那么默认运行在本机节点;如果设置 --master spark://hadoop102:7077  那么运行在 Spark Standalone 模式集群。

7、问题
  1、看文档的时候,需要将某些配置改成自己的。
  2、IDEA 运行程序的时候,winuntil.exe 需要添加 HADOOP_HOME 环境变量(IDEA 需要重启)。
  3、访问 HDFS 的时候权限问题,比如:HADOOP_USER_NAME=hadoop,运行程序的时候就会以 hadoop 用户来运行。参考链接:https://www.cnblogs.com/chenmingjun/p/10746853.html

大数据技术之_19_Spark学习_01_Spark 基础解析小结(无图片)的更多相关文章

  1. 大数据技术之_19_Spark学习_01_Spark 基础解析 + Spark 概述 + Spark 集群安装 + 执行 Spark 程序

    第1章 Spark 概述1.1 什么是 Spark1.2 Spark 特点1.3 Spark 的用户和用途第2章 Spark 集群安装2.1 集群角色2.2 机器准备2.3 下载 Spark 安装包2 ...

  2. 大数据技术之_19_Spark学习_04_Spark Streaming 应用解析 + Spark Streaming 概述、运行、解析 + DStream 的输入、转换、输出 + 优化

    第1章 Spark Streaming 概述1.1 什么是 Spark Streaming1.2 为什么要学习 Spark Streaming1.3 Spark 与 Storm 的对比第2章 运行 S ...

  3. 大数据技术之_19_Spark学习_03_Spark SQL 应用解析 + Spark SQL 概述、解析 、数据源、实战 + 执行 Spark SQL 查询 + JDBC/ODBC 服务器

    第1章 Spark SQL 概述1.1 什么是 Spark SQL1.2 RDD vs DataFrames vs DataSet1.2.1 RDD1.2.2 DataFrame1.2.3 DataS ...

  4. 大数据技术之_19_Spark学习_05_Spark GraphX 应用解析 + Spark GraphX 概述、解析 + 计算模式 + Pregel API + 图算法参考代码 + PageRank 实例

    第1章 Spark GraphX 概述1.1 什么是 Spark GraphX1.2 弹性分布式属性图1.3 运行图计算程序第2章 Spark GraphX 解析2.1 存储模式2.1.1 图存储模式 ...

  5. 大数据技术之_19_Spark学习_02_Spark Core 应用解析小结

    1.RDD 全称 弹性分布式数据集 Resilient Distributed Dataset它就是一个 class. abstract class RDD[T: ClassTag](    @tra ...

  6. 大数据技术之_19_Spark学习_03_Spark SQL 应用解析小结

    ========== Spark SQL ==========1.Spark SQL 是 Spark 的一个模块,可以和 RDD 进行混合编程.支持标准的数据源.可以集成和替代 Hive.可以提供 J ...

  7. 大数据技术之_19_Spark学习_04_Spark Streaming 应用解析小结

    ========== Spark Streaming 是什么 ==========1.SPark Streaming 是 Spark 中一个组件,基于 Spark Core 进行构建,用于对流式进行处 ...

  8. 大数据技术之_16_Scala学习_04_函数式编程-基础+面向对象编程-基础

    第五章 函数式编程-基础5.1 函数式编程内容说明5.1.1 函数式编程内容5.1.2 函数式编程授课顺序5.2 函数式编程介绍5.2.1 几个概念的说明5.2.2 方法.函数.函数式编程和面向对象编 ...

  9. 大数据技术之_16_Scala学习_01_Scala 语言概述

    第一章 Scala 语言概述1.1 why is Scala 语言?1.2 Scala 语言诞生小故事1.3 Scala 和 Java 以及 jvm 的关系分析图1.4 Scala 语言的特点1.5 ...

随机推荐

  1. 《完全版线段树》——notonlysuccess

    转载自:NotOnlySuccess的博客 [完全版]线段树 很早前写的那篇线段树专辑至今一直是本博客阅读点击量最大的一片文章,当时觉得挺自豪的,还去pku打广告,但是现在我自己都不太好意思去看那篇文 ...

  2. 2018.10.12 NOIP模拟 棋盘问题(切比雪夫距离)

    传送门 貌似是防ak题? 考试的时候想到了做四次cdqcdqcdq于是给自己多套了一个lognlognlogn结果还MLEMLEMLE 0分.(记得最后5分钟调出来的时候是那么的欣喜 下来发现并不需要 ...

  3. c语言中几个常见的库函数strlen、strcmp、strcat、strcpy、strncpy、memset、memcpy、memmove、mmap

    1.strlen() 1)计算给定字符串的长度,不包括’\0’在内 unsigned int strlen(const char *s) { assert(NULL != s);//如果条件不满足,则 ...

  4. python nan 变成0

    在使用numpy数组的过程中时常会出现nan或者inf的元素,可能会造成数值计算时的一些错误.这里提供一个numpy库函数的用法,使nan和inf能够最简单地转换成相应的数值. numpy.nan_t ...

  5. Swift1.2与Xcode6.3 beta

    Xcode6.3和Swift1.2都已经发布.这次发布增强了Swift编译器也给Swift增加了一些新的特性.详细内容可以看这里.这里主要关注比较重要的内容. 编译器的改进 Swift1.2的编译器更 ...

  6. (匹配 最小路径覆盖)Air Raid --hdu --1151

    链接: http://acm.hdu.edu.cn/showproblem.php?pid=1151 http://acm.hust.edu.cn/vjudge/contest/view.action ...

  7. HashMap底层实现原理以及HashMap与HashTable区别以及HashMap与HashSet区别

    ①HashMap的工作原理 HashMap基于hashing原理,我们通过put()和get()方法储存和获取对象.当我们将键值对传递给put()方法时,它调用键对象的hashCode()方法来计算h ...

  8. poj3321-Apple Tree(DFS序+树状数组)

    Apple Tree Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 36442   Accepted: 10894 Desc ...

  9. Linux操作系统文件系统基础知识详解

    一 .Linux文件结构 文件结构是文件存放在磁盘等存贮设备上的组织方法.主要体现在对文件和目录的组织上. 目录提供了管理文件的一个方便而有效的途径. Linux使用标准的目录结构,在安装的时候,安装 ...

  10. cocos studio

    用了几天,和之前用的cocos creator以及unity的编辑器一对比,很多地方都挺反人类的哈... 拖拽和放大场景元素竟然还要切换一下编辑模式... 移动场景元素竟然没有单独控制x或者y方向的移 ...