Spark基础入门

1. spark的核心概念,是什么?解决了什么问题?

内存计算框架

官网:Lightning-fast unified analytics engine.------快如闪电的统一分析引擎

    a unified analytics engine for large-scale data processing. ---针对大规模数据处理的统一分析引擎

补充:spark是基于hadoop基础之上的改进,不同于mapreduce的是Job中间的输出和结果可以保存在内存中,从而不再需要读写HDFS.

Spark是基于内存计算框架,计算速度非常快,但仅仅涉及计算,不涉及存储。


2. Spark的四大特性

2.1 Speed

    面试问题:为什么比hadoop快?

        1. 计算基于内存

                mapreduce任务后期计算的时候,每一个job的输出结果落地磁盘,后续其他job需要依赖于前面job的           输出结果,这个时候需要进行大量的磁盘io操作,性能降低。

                spark任务后期计算的时候,job输出的结果可以保存在内存中,后期其他job依赖前面job输出结果可以         直接从内存中获取,避免了磁盘io操作,性能比较高。

        例如hivesql:

            select name,age from (select * from user where age > 30) t;

            ===job1============  =========job2===============

        2. 进程和线程

                1) mapreduce任务以进程的方式运行在yarn集群中,比如程序有100个mapTask,一个task需要一个进         程,那么就需要100个进程。

                2)spark任务以线程的方式运行在进程中,比如程序有100个mapTask,后期一个task对应一个进程,           可以极端一点在一个进程中启动100个线程就可以了。

                3)开启进程和线程的时间和调度代价是不一样的,前者远远大于后者。

2.2 Easy of use(易用性)

     Java,Scala,Python,R,SQL

2.3 Generality(通用性)

    一站式

2.4 Run Everywhere

    Spark runs on Hadoop,Apache Mesos,Kubernetes,standalone,or in the cloud

        理解:计算框架==》计算程序==》要运行需要计算资源(内存,CPU,磁盘),哪里可以给当前这个任务提供计算资源,就可以把spark程序提交到哪里运行。

        * **standalone**

        spark自带的集群模式,集群中的老大Master负责

        * **yarn**

        ResourceManager负责(计算资源)

        * **mesos**

        apache开源的类似yarn的资源调度平台


3. Spark的整体架构

![8dd5236da9edf2b70030d47a7e0da361.png](evernotecid://EF6E7930-50FF-44A0-BEB3-6B91139D9B51/appyinxiangcom/27146473/ENResource/p2)


4. Spark的集群安装部署

~~~

例如:node01:master,node02:master,worker

node03:worker

~~~

- **在node01节点上下载并安装,及解压的过程略,spark-version :2.3.3**

- **修改配置vi spark-env.sh(/spark里面存储的是元数据)**

export JAVA_HOME=/opt/bigdata/jdk

#配置zk相关

export SPARK_DAEEMON_JAVA_OPTS="-Dspark.deploy.recoveryMode=ZOOKEEPER -Dspark.deploy.zookeeper.url=node01:2181,node02:2181,node03:2181 -Dspark.deploy.zookeeper.dir=/spark"

```

- **vi slaves(mv slaves.template slaves)**

```

#指定spark集群的worker节点

node02

node03

````

- **分发安装目录到其他节点**

``

scp -r /opt/bigdata/spark node02:/opt/bigdata

``

``

scp -r /opt/bigdata/spark node03:/opt/bigdata

``

- **修改spark环境变量vi /etc/profile,并立即生效source /etc/profile,所有节点都要执行**

``

export SPARK_HOME=/opt/bigdata/spark

``

``

export PATH=$PATH:$SPARK_HOME/bin:$SPARK_HOME/sbin

``


5. Spark的集群启动和停止(依赖Zookeeper,首先要启动zookeeper)

- 在node01上执行$SPARK_HOME/sbin/start-all.sh(在哪一台机器上执行start-all,哪一台机器就是master)

- 可以在node02上执行$SPARK_HOME/sbin/start-master.sh,这样node02也是一个master

- 其他命令sbin/stop-master.sh,sbin/stop-all.sh等顾名思义


6. Spark的集群web管理页面

- node01://8080,可以查看到master及worker的状态以及资源分配情况,当然还有任务执行等信息非常全面,master:alive

- node02://8080,master:standby,如果在node01上执行sbin/stop-master.sh,那么这个node02上的master状态会由standby-->alive,体现高可用(页面不会立即生效,大约需要1-2分钟,这期间是在计算资源及选举新的master的过程,这期间已经提交的任务不受影响,对即将提交的任务由于没有活着的master,会受到影响)


7. 初识spark程序

- **普通模式提交**(指定活着的master地址)

```

$SPARk_HOME/bin/spark-submit \

--class org.apache.spark.examples.SparkPi \

--master spark://node01:7077 \

--executor-memory 1G \

--total-executor-cores 2 \

--examples/jars/spark-examples_2.11-2.3.3.jar \ 10

============================

####参数说明

--class:指定包含main方法的主类

--master:指定spark集群master地址

--executor-memory:指定任务在运行时需要的每一个executor内存大小,如果不指定就会全部占用分配的内存

--total-executor-cores:指定任务在运行时需要的总的cpu核数

```

- **高可用模式提交**(把所有master都罗列出来,后期程序会轮询maser列表找到活着的master,然后向它申请资源运行程序)

``

--master spark://node01:7077,node02:7077,node03:7077

``


8. spark-shell使用(退出spark-shell,干掉SparkSubmit进程,spark-shell仅仅用来测试或者本地学习,实际生产不用)

- ``$SPARK_HOME/bin/spark-shell --master local[2]``

####**说明**:本地模式启动2个线程运行程序(本地模式与集群无关),以下'sc'是运行shell后被初始化的SparkConext对象

- web界面:``http://node01:4040``

- 案例:(统计文件里的每个单词个数)

``scala> sc.textFile("file:///home/hadoop/words.txt").flatMap(x=>x.split(" ")).map(x=>(x,1)).reduceByKey((x,y)=>x+y).collect

``

- ####简写

``

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

``

- ####处理hdfs上的数据

``

scala> sc.textFile("hdfs://node01:9000/words.txt").flatMap(_.split(" ")).map((_,1)).reduceByKey(_+_).collect

``


9. Spark程序的开发(这里不过多介绍)

9.1 本地模式运行

![60771e1528951f6dc30d9e31cdc2b0c5.jpeg](evernotecid://EF6E7930-50FF-44A0-BEB3-6B91139D9B51/appyinxiangcom/27146473/ENResource/p4)

![4d819104964c8a4b4a3a05ec9f1951f8.jpeg](evernotecid://EF6E7930-50FF-44A0-BEB3-6B91139D9B51/appyinxiangcom/27146473/ENResource/p3)

9.2 集群模式开发:上传程序jar包到服务器,spark-submit时指定jar包和主类class以及输入输出参数(这里的输入参数:/words.txt, 输出参数:/out)

![b4c5d28db9b0f561ec9120cc921f3b17.jpeg](evernotecid://EF6E7930-50FF-44A0-BEB3-6B91139D9B51/appyinxiangcom/27146473/ENResource/p5)

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,734评论 6 505
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,931评论 3 394
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,133评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,532评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,585评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,462评论 1 302
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,262评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,153评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,587评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,792评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,919评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,635评论 5 345
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,237评论 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,855评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,983评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,048评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,864评论 2 354

推荐阅读更多精彩内容