spark

Spark交互式工具spark-shell

Deadly 提交于 2020-01-14 21:41:16
REPL Read-Eval-Print-Loop,即交互式shell,以交互式方式来编程 Spark REPL $SPARK_HOME/bin/spark-shell(scala) $SPARK_HOME/bin/pyspark(python) 其他 Spark shell Spark的scala REPL,支持使用scala语言来进行Spark的交互式编程 支持Spark的local,standalone,yarn client模式 启动./bin/spark-shell 内置实例化一个SparkContex对象,可以通过sc来调用 内置实例化一个SQLContext对象,可以使用sqlContext来调用查看帮助sc.\t spark-shell运行在YARN上 登陆安装Spark那台机器 .bin/spark-shell --master yarn (注意,这样也是yarn client模式) spark-shell运行在YARN上(这是Spark on YARN模式) (包含YARN client和YARN cluster)(作为补充) 登陆安装Spark那台机器 bin/spark-shell --master yarn-client 或者 bin/spark-shell --master yarn-cluster   包括可以加上其他的,比如控制内存啊等。这很简单

Spark优化 – 基础篇

邮差的信 提交于 2020-01-14 19:13:16
  大数据调优总体方向:CPU,内存以及IO(Disk,Network)三个方面来进行。   对于多次使用的数据(RDD/DataFrame),通过cache()或者persis()来进行缓存,避免每一次都从数据源获取(减少磁盘IO); 系统资源优化   如下参数可以进行调优(可以参见附录中介绍的spark和yarn的交互内容): num-executors :executor数量(Spark Job的进程数量);结合executor-core进行考虑,两者相乘的量[40,100],尽量不要超过YARN的总core的指定比例,有的说25%,有的说50% executor-memory :executor内存上线,建议8G左右,申请的内存总量(num-executors*executor-memory)不要超过YARN的80%; executor-cores :executor的核数(线程数),即并行执行task的数据量,建议值4个,总量不要超过YARN总核数的50%; driver-memory :默认1G,足以。 spark.default.parallelizm :spark的并行度,默认数是待处理数据的hdfs的datablock数量;但是如果数据量很大的话明显不合适,task数量>>core的数量会拉低效率;spark官方建议要么是和分配的从cores数量保持一致

Spark Structured Streaming 编程模型

拥有回忆 提交于 2020-01-14 16:35:36
从Spark 2.0.0开始,提供了一个用于实时流处理的新组件- Structured Streaming(结构化流) 。 本文总结Structured Streaming的编程模型,顺带会总结Structured Streaming与Spark Streaming的区别。 Structured Streaming 编程模型 首先, Structured Streaming 有一个 Input Table 的概念。即将输入的数据流视为一张 Append-Only Input Table 表。流式数据源源不断地追加到 Input Table 表中,每条数据都对应表中的一行。 其次, Structured Streaming 有一个 Trigger 的概念。即多久去检查一次新数据并执行查询。 再次, Structured Streaming 有一个 Query 的概念。即在 Input Table 上执行各种操作,如 map/filter/groupBy/window 等等。 然后, Structured Streaming 有一个 Result Table 的概念。即每次Trigger后,会将 Query 结果更新到 Result Table 结果表中。 最后, Structured Streaming 有一个 Output Mode 的概念。即每次Trigger后,将 Result

大数据架构师从入门到精通,该具备怎么样的知识体系?

不羁的心 提交于 2020-01-14 14:19:27
经常有初学者在博客和QQ问我,自己想往大数据方向发展,该学哪些技术,学习路线是什么样的,觉得大数据很火,就业很好,薪资很高。如果自己很迷茫,为了这些原因想往大数据方向发展,也可以,那么我就想问一下,你的专业是什么,对于计算机/软件,你的兴趣是什么?是计算机专业,对操作系统、硬件、网络、服务器感兴趣?是软件专业,对软件开发、编程、写代码感兴趣?还是数学、统计学专业,对数据和数字特别感兴趣。 其实这就是想告诉你的大数据的三个发展方向,平台搭建/优化/运维/监控、大数据开发/ 设计/ 架构、数据分析/挖掘。请不要问我哪个容易,哪个前景好,哪个钱多。 先扯一下大数据的4V特征: 数据量大 ,TB->PB 数据类型繁多 ,结构化、非结构化文本、日志、视频、图片、地理位置等; 商业价值高 ,但是这种价值需要在海量数据之上,通过数据分析与机器学习更快速的挖掘出来; 处理时效性高 ,海量数据的处理需求不再局限在离线计算当中。 现如今,正式为了应对大数据的这几个特点,开源的大数据框架越来越多,越来越强,先列举一些常见的: 文件存储: Hadoop HDFS、Tachyon、KFS 离线计算: Hadoop MapReduce、Spark 流式、实时计算: Storm、Spark Streaming、S4、Heron K-V、NOSQL数据库: HBase、Redis、MongoDB 资源管理:

【Spark】RDD创建总结

前提是你 提交于 2020-01-14 07:37:45
文章目录 方式一、从内存中创建 1.makeRDD 2.parallelize 方式二、从文件系统创建 1.textFile 2.wholeTextFiles 3.sequenceFile 4、saveAsHadoopFile 5.newAPIHadoopRDD 方式一、从内存中创建 1.makeRDD scala > val df = sc.makeRDD ( List ( "huangmouren" , "henshuai" )) df: org.apache.spark.rdd.RDD [ String ] = ParallelCollectionRDD [ 66 ] at makeRDD at < console > :27 2.parallelize scala > val dc = sc.parallelize ( List ( "huangmouren" , "henshuai" ) ,2 ) dc: org.apache.spark.rdd.RDD [ String ] = ParallelCollectionRDD [ 67 ] at parallelize at < console > :27 scala > dc.partition partitioner partitions scala > dc.partitions.size res16: Int = 2

Spark记录-Scala多线程

牧云@^-^@ 提交于 2020-01-13 20:34:44
Scala多线程 多线程是同时执行多个线程的过程。 它允许您独立执行多个操作。可以通过使用多线程来实现多任务。线程是轻量级的子进程,占用较少的内存。多线程用于在Scala中开发并发应用程序。 Scala不提供用于创建线程的任何单独的库。如果您熟悉Java的多线程概念,那么将会了解到它与Scala语言本身的语法相似。 可以通过扩展 Thread 类或 Runnable 接口来创建线程。两者都提供了运行方法来提供具体的实现。 Scala线程生命周期 线程生命周期是线程开始和终止的时间跨度。它有各种各样的阶段,如新,可运行,终止,阻止等。线程类提供了各种方法来监视线程的状态。 Scala线程状态如下: 新建(New) 可运行(Runnable) 运行(Running) 不可运行(Non-Runnable - 阻塞) 终止(Terminated) 1. 新建(New) 这是线程的第一个状态,在新线程开始之前。 2. 可运行(Runnable) 这是线程已经启动但是线程调度程序没有选择它作为正在运行的线程的状态。 3. 运行(Running) 如果线程调度程序选择了该线程,则该线程处于运行状态。 4. 不可运行(Non-Runnable - 阻塞) 这是线程仍然存在但由于等待输入或资源而无法运行的状态。 5. 终止(Terminated) 当 run() 方法退出时,线程处于终止或死亡状态。

Spark- Linux下安装Spark

谁说胖子不能爱 提交于 2020-01-13 20:06:56
Spark- Linux下安装Spark 前期部署 1.JDK安装,配置PATH 可以参考之前配置hadoop等配置 2.下载spark-1.6.1-bin-hadoop2.6.tgz,并上传到服务器解压 [root@srv01 ~]# tar -xvzf spark-1.6.1-hadoop2.6.tgz /usr/spark-1.6.1-hadoop2.6 3.在 /usr 下创建软链接到目标文件夹 [root@srv01 usr]# ln -s spark-1.6.1-bin-hadoop2.6 spark 4.修改配置文件,目标目录 /usr/spark/conf/ [root@srv01 conf]# ls docker.properties.template log4j.properties.template slaves.template spark-env.sh.template fairscheduler.xml.template metrics.properties.template spark-defaults.conf.template 这里需要把spark-env.sh.template改名为spark-env.sh export JAVA_HOME=/usr/jdk #这个是单机版的配置,不能实现高可用 export SPARK_MASTER_IP

mac 搭建虚拟机安装spark,hive,zookeeper,scala,kafka等大数据集群搭建

拜拜、爱过 提交于 2020-01-13 18:22:48
=============================================================大数据相关资料============================================================ 课程环境 Virtual Box 4.1安装 1、使用课程提供的Virtual Box安装包,一步一步安装即可。Oracle_VM_VirtualBox_Extension_Pack-4.1.40-101594.vbox-extpack。 2、之所以选用Virtual Box是因为它比VMWare更加稳定。使用VMWare运行hadoop集群或者spark集群时,有时会出现休眠后重启时,某些进程莫名挂掉的问题。而Virtual Box没有这种情况。 3、之所以选择Virtual Box 4.1版本,是因为更高的版本就不兼容win7了。 CentOS 6.5安装 1、使用课程提供的CentOS 6.5镜像即可,CentOS-6.5-i386-minimal.iso。 2、创建虚拟机:打开Virtual Box,点击“新建”按钮,点击“下一步”,输入虚拟机名称为spark1,选择操作系统为Linux,选择版本为Red Hat,分配1024MB内存,后面的选项全部用默认,在Virtual Disk File location and

spark中RDD的Stage任务划分

爱⌒轻易说出口 提交于 2020-01-13 13:41:56
1)DAG有向无环图 DAG(Directed Acyclic Graph)有向无环图是由点和线组成的拓扑图形,该图形具有方向,不会闭环。例如,DAG记录了RDD的转换过程和任务的阶段。 2)RDD任务切分中间分为:Application、Job、Stage和Task (1)Application:初始化一个SparkContext即生成一个Application; (2)Job:一个Action算子就会生成一个Job; (3)Stage:Stage等于宽依赖的个数加1; (4)Task:一个Stage阶段中,最后一个RDD的分区个数就是Task的个数。 注意:Application->Job->Stage->Task每一层都是1对n的关系。 Stage任务划分 YarnClient运行模式介绍 3)代码实现 object Stage01 { def main(args: Array[String]): Unit = { //1.创建SparkConf并设置App名称 val conf: SparkConf = new SparkConf().setAppName("SparkCoreTest").setMaster("local[*]") //2. Application:初始化一个SparkContext即生成一个Application; val sc:

【Spark调优】Broadcast广播变量

好久不见. 提交于 2020-01-13 12:50:46
【 数据倾斜及调优概述 】   大数据分布式计算中一个常见的棘手问题——数据倾斜:      在进行shuffle的时候,必须将各个节点上相同的key拉取到某个节点上的一个task来进行处理,比如按照key进行聚合或join等操作。此时如果某个key对应的数据量特别大的话,就会发生数据倾斜。比如大部分key对应10条数据,但是个别key却对应了百万条数据,那么大部分task可能就只会分配到10条数据,然后1秒钟就运行完了;但是个别task可能分配到了百万数据,要运行一两个小时。木桶原理,整个作业的运行进度是由运行时间最长的那个task决定的。   出现数据倾斜的时候,绝大多数task执行得都非常快,但个别task执行极慢。例如,总共有1000个task,997个task都在1分钟之内执行完了,但是剩余两三个task却要一两个小时。这种情况很常见。原本能够正常执行的Spark作业,某天突然报出OOM(内存溢出)异常,观察异常栈,是我们写的业务代码造成的。这种情况比较少见。   此时Spark作业的性能会比期望差很多。数据倾斜调优,就是使用各种技术方案解决不同类型的数据倾斜问题,以保证Spark作业的性能。 【定位发生数据倾斜的代码 】 1) 数据倾斜只会发生在 shuffle过程中 。所以关注一些常用的并且可能会触发shuffle操作的算子:distinct、groupByKey