Spark基础

第一节:什么是Spark?Spark的特点和结构
1、什么是Spark?
Spark是一个针对大规模数据处理的快速通用引擎。
类似MapReduce,都进行数据的处理

2、Spark的特点:
(1)基于Scala语言、Spark基于内存的计算
(2)快:基于内存
(3)易用:支持Scala、Java、Python
(4)通用:Spark Core、Spark SQL、Spark Streaming
MLlib、Graphx
(5)兼容性:完全兼容Hadoop

3、Spark体系结构:主从结构
(1)主节点:Master
(2)从节点:Worker

第二节:搭建Spark的伪分布模式环境
1、解压:tar -zxvf spark-2.1.0-bin-hadoop2.4.tgz -C ~/training/
2、配置参数文件: conf/spark-env.sh

# --------------------------------系统准备
#修改hosts和主机名
# 修改/etc/hosts 以及/etc/sysconfig/network 文件, 分别设置不同的HOSTNAME
vim /etc/hosts
192.168.112.10 node-
192.168.112.11 node-
192.168.112.12 node- vim /etc/sysconfig/network
HOSTNAME=node- hostname node- # 修改当前系统进程主机名 ### 每台都要 关闭下列防火墙
service iptables stop
setenforce
chkconfig iptables off # chkconfig iptables --list 查看 ssh-keygen #创建.ssh目录
ssh-copy-id -i ~/.ssh/id_rsa.pub node- #复制公钥到每台目标主机
ssh-copy-id -i ~/.ssh/id_rsa.pub node- #复制公钥到每台目标主机
ssh root@node- ##或者 ssh root@node- 都能成功,不用密码,则互信成功. ############################ 基于yarn的集群上, 搭一个spark 分布式环境。 # 前提: JDK, Hadoop安装并启动. 下载scala-2.12..tgz并解压
# 下载spark https://www.apache.org/dyn/closer.lua/spark/spark-2.2.1/spark-2.2.1-bin-hadoop2.7.tgz
# 解压 重命名目录 进入conf目录
cp spark-env.sh.template spark-env.sh
vim spark-env.sh #添加如下内容:
export SCALA_HOME=/usr/local/src/scala-2.12.
export JAVA_HOME=/usr/local/src/jdk1..0_161
export HADOOP_HOME=/usr/local/src/hadoop-2.7.
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
SPARK_MASTER_IP=master
SPARK_LOCAL_DIRS=/usr/local/src/spark-2.2.
SPARK_DRIVER_MEMORY=1G
#正常生产环境,应该将内存调大 vim slaves
node-
node- # 分发到各个从节点上
scp -r scala-2.12. node-:/usr/local/src/
scp -r scala-2.12. node-:/usr/local/src/
scp -r spark-2.2. node-:/usr/local/src/
scp -r spark-2.2. node-:/usr/local/src/ ############################ standalone 模式。
# 安装JDK # conf
cp spark-env.sh.template spark-env.sh
vim spark-env.sh #添加如下内容:
export JAVA_HOME=/usr/local/src/jdk1..0_161
SPARK_MASTER_HOST=node-
SPARK_MASTER_PORT= vim slaves # 指定从节点
node-
node-
# --------------------- 忘记sudo vim时,:w !sudo tee % # 远程拷贝
# for i in {..}; do echo $i; done # 测试循环
for i in {..); do scp -r /bigdata/spark-2.2./ node-$i/bigdata/; done # 依次复制到别的节点 #-----------------------------------------------------------------------------#
#-------------------------------HA 配置:---------------------------------------#
# spark-env.sh 中如下修改:
# SPARK_MASTER_HOST=node- 注释掉
# SPARK_MASTER_PORT= 注释掉
# 指定spark进程关联的zookeeper.
export SPARK_DAEMON_JAVA_OPTS="-Dspark.deploy.recoveryMode=ZOOKEEPER -Dspark.deploy.zookeeper.url=node-1:2181,node-2:2181,node-3:2181 -Dspark.deploy.zookeeper.dir=/spark"
# 还可以指定硬件资源
export SPARK_WORKER_CORES=
export SPARK_WORKER_MEMORY=1g
# 保存退出 并将配置文件复制到其它节点。
#
# 先启动好zookeeper
# 启动Master及Worker 。最后手动启动备份的Master节点 sbin/start-master.sh
# 检验备份节点jps进程,以及状态 http://node-3:8080
#-----------------------------------------------------------------------------#
#-----------------------------------------------------------------------------#

启动后的验证及简单示例:

############################## 启动后:  通过jps 看到一个master, 两个worker
cd spark-2.2./sbin
./start-all.sh # web UI 监控页面
http://node-4:8080 ##### 验证:本地2个进程模拟
./bin/run-example SparkPi --master local[] ###### 验证:spark standalone 可以在http://node-4:8080监控 #参数100是这个示例的执行轮数
./bin/spark-submit --class org.apache.spark.examples.SparkPi --master spark://node-4:7077 examples/jars/spark-examples_2.11-2.2.1.jar 100
# 提交 指定类 Main()方法 通过反射来执行 官方示例 指定Master在哪 指定jar包位置 采样次数
# 参数需要在jar包之前指定
# spark执行过程中,Master产生进程:SparkSubmit Worker产生进程:CoarseGrainedExecutorBackend bin/spark-submit \
--master spark://node-4:7077 \
--class org.apache.spark.examples.SparkPi \
--executor-memory 512mb \
--total-executor-cores \
examples/jars/spark-examples_2.-2.2..jar
# 指定每个executor内存大小, 以及一共用多少核
# --master spark://node-4:7077,node-5:7077 如果是HA可以指定多个Master ####### 验证:spark on yarn 需要在yarn上监控 http://node-4:8088 # --master yarn-cluster 是固定写法
./bin/spark-submit --class org.apache.spark.examples.SparkPi --master yarn-cluster examples/jars/spark-examples_2.-2.2..jar # 计算结果不在终端显示,显示在yarn上, 打开http://node-4:8088 点击Tracking UI下的ApplicationMaster, 再点击Tracking URL: History 再点击 Logs , stdout可以看到结果. #####------------------------------------------- client方式
spark-2.2./bin/pyspark # 以python shell的方式开发spark , 进入>>> 后,直接使用python交互
# Using Python version 2.7. (default, Apr ::)
# SparkSession available as 'spark'. #####------------------------------------------- spark shell
spark-2.2./bin/spark-shell # 以本地模式启动shell的方式, 进入 scala> 后使用scala语言
bin/spark-shell --master spark://master:7077 # 指定了Master地址就会提交到集群。开始时sparksubmit(客户端)要连接Master,
# 并申请计算资源(内存和核数),Master进行资源调度(让那些Worker启动Executor),在准备工作时,这些进程都已经创建好了 # 用spark Shell完成WordCount计算
# 启动HDFS(上传数据到hdfs),sc是spark core(RDD)的执行入口 sc.textFile("/home/test/1.txt").flatMap(_.split(" ")).map((_,)).reduceByKey(_+_).collect # 本地文件
# 如果报错文件找不到,可以将文件放在Master所在机器上。
sc.textFile("/home/test/2.txt").flatMap(_.split(" ")).map((_,)).reduceByKey(_+_).sortBy(_._2,false).collect # 加上了以数量降序 sc.textFile("hdfs://node-4:9000/data/input/1.txt").flatMap(_.split(" ")).map((_,)).reduceByKey(_+_).collect # hdfs文件
# 如果连接HDFS的nameservice则需要复制配置文件到spark中

Spark最好的开发语言是Scala 点此下载:Scala语言规范

Spark笔记的更多相关文章

  1. spark笔记 环境配置

    spark笔记 spark简介 saprk 有六个核心组件: SparkCore.SparkSQL.SparkStreaming.StructedStreaming.MLlib,Graphx Spar ...

  2. 大数据学习——spark笔记

    变量的定义 val a: Int = 1 var b = 2 方法和函数 区别:函数可以作为参数传递给方法 方法: def test(arg: Int): Int=>Int ={ 方法体 } v ...

  3. spark 笔记 16: BlockManager

    先看一下原理性的文章:http://jerryshao.me/architecture/2013/10/08/spark-storage-module-analysis/ ,http://jerrys ...

  4. spark 笔记 15: ShuffleManager,shuffle map两端的stage/task的桥梁

    无论是Hadoop还是spark,shuffle操作都是决定其性能的重要因素.在不能减少shuffle的情况下,使用一个好的shuffle管理器也是优化性能的重要手段. ShuffleManager的 ...

  5. spark 笔记 14: spark中的delay scheduling实现

    延迟调度算法的实现是在TaskSetManager类中的,它通过将task存放在四个不同级别的hash表里,当有可用的资源时,resourceOffer函数的参数之一(maxLocality)就是这些 ...

  6. spark 笔记 12: Executor,task最后的归宿

    spark的Executor是执行task的容器.和java的executor概念类似. ===================start executor runs task============ ...

  7. spark 笔记 11: SchedulingAlgorithm 两种调度算法的优先级比较

    调度算法的最基本工作之一,就是比较两个可执行的task的优先级.spark提供的FIFO和FAIR的优先级比较在SchedulingAlgorithm这个接口体现.) { ) { ) { ) { fa ...

  8. spark 笔记 10: TaskScheduler相关

    任务调度器的接口类.应用程序可以定制自己的调度器来执行.当前spark只实现了一个任务调度器) )))))val createTime = System.currentTimeMillis()clas ...

  9. spark 笔记 8: Stage

    Stage 是一组独立的任务,他们在一个job中执行相同的功能(function),功能的划分是以shuffle为边界的.DAG调度器以拓扑顺序执行同一个Stage中的task. /** * A st ...

  10. spark 笔记 9: Task/TaskContext

    DAGScheduler最终创建了task set,并提交给了taskScheduler.那先得看看task是怎么定义和执行的. Task是execution执行的一个单元. Task: execut ...

随机推荐

  1. 牛客 黑龙江大学程序设计竞赛重现 19-4-25 D

    题意: n项工作 1~n  工时s[i] ~e[i], 工时有覆盖的工作不能被同一台机器同时操作, 问完成所有工作的最少机器数 思路:前缀差分和 e.g. a            2 3 4    ...

  2. Spring Boot 返回 JSON 数据,一分钟搞定!

    如何返回 JSON 数据? 在 Spring Boot 中返回 JSON 数据很简单,如下几步. 加入依赖 12345678910 <parent> <groupId>org. ...

  3. CF数据结构练习(二)

    1. 833D Red-Black Cobweb 大意: 给定树, 边为黑色或白色, 求所有黑白边比例在$[\frac{1}{2},2]$内的路径边权乘积的乘积. 考虑点分治, 记黑边数为$a$, 白 ...

  4. 再次精读《javascript高级程序设计第3版》学习笔记(1)

    第一次拿起这本书是2016年暑假,时隔2年,又一次开始研读这本经典书籍.每次读,都是对之前的一次沉淀和总结,每次都会有新的收获.

  5. IntelliJ IDEA2018.3 最新破解方法

    IntelliJ IDEA2018.3 最新破解方法 输入    http://idea.java.sx/   即可,亲测可用.如果资金允许还是希望大家能支持正版,尊重原创 ------------- ...

  6. 关于Python的一些看法

    我是一个学新闻传播的编程新人,对于电脑这一方面,我是真的有一些一窍不通啊~选择Python语言程序设计的原因也是因为出于Python对未来专业可能会起到帮助考虑(因为未来我的专业会涉及到一些大数据抽查 ...

  7. log4j的详细配置

    https://www.cnblogs.com/juddhu/archive/2013/07/14/3189177.html(原文链接) 先说下我的需求 1,可以记录日记在我们的java开发项目周期中 ...

  8. setTimeout代替setInterval的写法以及setInterval的弊端以及越来越快的解决办法

    平常经常遇到的一个问题,很多人想间隔时间执行一些事件的时候,第一时间就会想到用setInterval,但是setInterval村子啊不少弊端哦. 弊端1:setInterval会无视错误代码,即使代 ...

  9. js 遍历数组

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"/> <title> ...

  10. luogu1706全排列

    #include<bits/stdc++.h> using namespace std; +]; +]; int search(int k); int print(); int n,num ...