spark

spark安装和使用

こ雲淡風輕ζ 提交于 2020-02-25 22:19:08
local模式 概述 local模式就是在一台计算机上运行spark程序,通常用于在本机上练手和测试,它将线程映射为worker。 1)local: 所有计算都运行在一个线程当中,没有任何并行计算,通常我们在本机执行一些测试代码,或者练手,就用这种模式; 2)local[K]: 指定使用几个线程来运行计算,比如local[4]就是运行4个Worker线程。通常我们的Cpu有几个Core,就指定几个线程,最大化利用Cpu的计算能力; 3)local[*]: 这种模式直接帮你按照Cpu最多Cores来设置线程数了 。 安装使用 1)上传并解压 spark 安装包 tar -zxvf spark-2.1.1-bin-hadoop2.7.tgz -C /opt/module/ 2) 官方求 PI 案例 bin/spark-submit \ --class org.apache.spark.examples.SparkPi \ --executor-memory 1G \ --total-executor-cores 2 \ ./examples/jars/spark-examples_2.11-2.1.1.jar \ 100 该算法是利用蒙特·卡罗算法求 PI ,结果如下: standalone模式 构建一个由 Master+Slave构成的 Spark集群,采用Spark原生的资源管理器

机器学习研究与开发平台的选择

本小妞迷上赌 提交于 2020-02-25 18:19:41
    目前机器学习可以说是百花齐放阶段,不过如果要学习或者研究机器学习,进而用到生产环境,对平台,开发语言,机器学习库的选择就要费一番脑筋了。这里就我自己的机器学习经验做一个建议,仅供参考。     首先,对于平台选择的第一个问题是,你是要用于生产环境,也就是具体的产品中,还是仅仅是做研究学习用? 1. 生产环境中机器学习平台的搭建     如果平台是要用于生产环境的话,接着有一个问题,就是对产品需要分析的数据量的估计,如果数据量很大,那么需要选择一个大数据平台。否则的话只需要一个单机版的平台就可以了。 1.1 生产环境中机器学习大数据平台的搭建     生产环境里面大数据平台,目前最主流的就是Spark平台,加上辅助的分布式数据处理容器,比如YARN,或者Mesos.如果需要实时的收集在线数据,那么就加上Kafka。简言之,一个通用的大数据处理平台就是集成Spark + YARN(Mesos) + Kafka. 我现在做的产品项目都是基于Spark + YARN+ Kafka的,目前来看,这个平台选择基本上是主流的方向。     当然,有人会说,这么多开源软件,一起集成起来好麻烦,大坑肯定不少,有没有一个通用的平台,可以包括类似Spark + YARN+ Kafka的大数据平台功能呢?目前据我所知,做的比较好的有CDAP(http://cdap.io)。它对Spark,

Spark源码

随声附和 提交于 2020-02-25 18:11:02
Spark版本:2.1.x Spark有许多模式,比如standlone 这里分析Spark on yarn 的部署流程。在这种模式中有几个重要的角色我们列出来。Driver、Executor、AM、NM、RM等,我们将在源码中将这几个组件串联起来,分析在Spark on yarn下这几个组件是如何工作的。 入口 spark-submit 中调用的类为 org.apache.spark.deploy.SparkSubmit 具体分析过程不赘述。 所以我们直接从SparkSubmit 分析,后续的逻辑。 1 % org.apache.spark.deploy.SparkSubmit %% main %%% SparkSubmitArguments(args) 进入main方法SparkSubmitArguments(args)进行参数准备,这是一个class对象,当我们使用new SparkSubmitArguments(args)的时候,其中的所有的代码从上至下依次执行。 %% submit(appArgs) %%% prepareSubmitEnvironment(args) 在这个方法中,返回了方法参数,其中 mainClass代表的参数是org.apache.spark.deploy.yarn.Client %%% Runmain() 此方法中以开启线程的方式

spark wordcount程序

不打扰是莪最后的温柔 提交于 2020-02-24 11:51:19
spark wordcount程序 IllegalAccessError错误 这个错误是权限错误,错误的引用方法,比如方法中调用private,protect方法。 当然大家知道wordcount业务很简单,都是调用依赖的方法,最后在一篇博客讲了错误: spark 2.2 读取 Hadoop3.0 数据异常 我试了下,解决了,我没有像他依赖那么多。 Exception in thread "main" java.lang.IllegalAccessError: class org.apache.hadoop.hdfs.web.HftpFileSystem cannot access its superinterface org.apache.hadoop.hdfs.web.TokenAspect$TokenManagementDelegator at java.lang.ClassLoader.defineClass1(Native Method) at java.lang.ClassLoader.defineClass(ClassLoader.java:763) at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) at java.net.URLClassLoader

Spark编程模型(一):SparkContext的作用

三世轮回 提交于 2020-02-23 01:41:49
开发人员根据自己的需求,在main函数中调用Spark提供的数据操纵接口,利用集群来对数据执行并操作。Spark为开发人员提供了两类抽象接口。第一类抽象接口是弹性分布式数据集RDD,其是对数据集的抽象封装,开发人员可以通过RDD提供的开发接口来访问和操纵数据集合,而无需了解数据的存储介质(内存或磁盘)、文件系统(本地文件系统、HDFS或Tachyon)、存储结点(本地或远程结点)等诸多实现细节;第二类抽象是共享变量(Shared Variables),通常情况下,一个应用程序在运行的时候会被分成分布在不同执行节点之上的多个任务,从而提供运算的速度,每个任务都会有一份独立的程序变量拷贝,彼此之间互不干扰,然而在某些情况下任务之间需要相互共享变量。Apache Spark提供了两类共享变量,分别是广播变量(Broadcast Variable)和累加器(Accumulators) 2.1 SparkContext的创建 SparkContext的创建过程首先要加载配置文件,然后创建SparkEnv,TaskScheduler,DAGScheduler 2.1.1 加载配置文件SparkConf SparkConf在初始化时,首先选择相关的配置参数,包含master、appName、sparkHome、jars、environment等信息,然后通过构造方法传递给SparkContext

机器学习研究与开发平台的选择

北城以北 提交于 2020-02-22 00:01:03
    目前机器学习可以说是百花齐放阶段,不过如果要学习或者研究机器学习,进而用到生产环境,对平台,开发语言,机器学习库的选择就要费一番脑筋了。这里就我自己的机器学习经验做一个建议,仅供参考。     首先,对于平台选择的第一个问题是,你是要用于生产环境,也就是具体的产品中,还是仅仅是做研究学习用? 1. 生产环境中机器学习平台的搭建     如果平台是要用于生产环境的话,接着有一个问题,就是对产品需要分析的数据量的估计,如果数据量很大,那么需要选择一个大数据平台。否则的话只需要一个单机版的平台就可以了。 1.1 生产环境中机器学习大数据平台的搭建     生产环境里面大数据平台,目前最主流的就是Spark平台,加上辅助的分布式数据处理容器,比如YARN,或者Mesos.如果需要实时的收集在线数据,那么就加上Kafka。简言之,一个通用的大数据处理平台就是集成Spark + YARN(Mesos) + Kafka. 我现在做的产品项目都是基于Spark + YARN+ Kafka的,目前来看,这个平台选择基本上是主流的方向。     当然,有人会说,这么多开源软件,一起集成起来好麻烦,大坑肯定不少,有没有一个通用的平台,可以包括类似Spark + YARN+ Kafka的大数据平台功能呢?目前据我所知,做的比较好的有CDAP(http://cdap.io)。它对Spark,

Spark DataFrame的空值形式和空值和非空值之间的相互转换

我的未来我决定 提交于 2020-02-21 22:51:41
1.空值替换为其他值 建df时的空值表示形式为:null null val df = Seq("a", null, "c", "b").toDF("col1") df.show() var df4 = df.na.fill(value="qqq",Array[String]("col1")) df4.show() df: org.apache.spark.sql.DataFrame = [col1: string] +----+ |col1| +----+ | a| |null| | c| | b| +----+ df4: org.apache.spark.sql.DataFrame = [col1: string] +----+ |col1| +----+ | a| | qqq| | c| | b| +----+ 2.其他值转换为空值 此时的空值形式为 “null” val df2 = df.withColumn("col1", regexp_replace(col("col1"), "NullNone", "null")) df2.show() df2: org.apache.spark.sql.DataFrame = [col1: string] +----+ |col1| +----+ | a| |null| | c| | b| +----+ val df3 = df2

spark实现WordCount(多种实现方式)

若如初见. 提交于 2020-02-21 19:02:27
第一种方式: 文件内容: object WordCount { def main ( args : Array [ String ] ) : Unit = { val conf : SparkConf = new SparkConf ( ) . setMaster ( "local" ) . setAppName ( "WordCount" ) /// 创建Spark上下文对象 val sc = new SparkContext ( conf ) // 读取文件种的数据 val textRDD : RDD [ String ] = sc . textFile ( "in" ) // 扁平化, 按照" "来切割 val wordRDD : RDD [ String ] = textRDD . flatMap { case x = > { x . split ( " " ) } } // 转换结构 val mapRDD : RDD [ ( String , Int ) ] = wordRDD . map { case x = > { ( x , 1 ) } } val rdRDD : RDD [ ( String , Int ) ] = mapRDD . reduceByKey { case ( x , y ) = > { x + y } } //收集遍历 rdRDD .

Apache Spark探秘:三种分布式部署方式比较

我的未来我决定 提交于 2020-02-21 08:16:54
目前Apache Spark支持三种分布式部署方式,分别是standalone、spark on mesos 和 spark on YARN ,其中,第一种类似于MapReduce 1.0所采用的模式,内部实现了容错性和资源管理,后两种则是未来发展的趋势,部分容错性和资源管理交由统一的资源管理系统完成:让Spark运行在一个通用的资源管理系统之上,这样可以与其他计算框架,比如MapReduce,公用一个集群资源,最大的好处是降低运维成本和提高资源利用率(资源按需分配)。本文将介绍这三种部署方式,并比较其优缺点。 standalone模式 ,即独立模式,自带完整的服务,可单独部署到一个集群中,无需依赖任何其他资源管理系统。从一定程度上说,该模式是其他两种的基础。借鉴Spark开发模式,我们可以得到一种开发新型计算框架的一般思路:先设计出它的standalone模式,为了快速开发,起初不需要考虑服务(比如master/slave)的容错性,之后再开发相应的wrapper,将stanlone模式下的服务原封不动的部署到资源管理系统yarn或者mesos上,由资源管理系统负责服务本身的容错。目前Spark在standalone模式下是没有任何单点故障问题的,这是借助zookeeper实现的,思想类似于Hbase master单点故障解决方案。将Spark

Spark运行模式

帅比萌擦擦* 提交于 2020-02-21 08:16:36
Spark运行模式简介 注:重点是Standalone模式,然后是YARNcluster和YARN client模式。 1. Standalone模式 即独立模式,自带完整的服务,可单独部署到一个集群中,无需依赖任何其他资源管理系统 。从一定程度上说, 该模式是其他两种的基础 。借鉴Spark开发模式,我们可以得到一种开发新型计算框架的一般思路:先设计出它的standalone模式,为了快速开发,起初不需要考虑服务(比如master/slave)的容错性,之后再开发相应的wrapper,将standalone模式下的服务原封不动的部署到资源管理系统yarn或者mesos上,由资源管理系统负责服务本身的容错。目前Spark在standalone模式下是没有任何单点故障问题的,这是借助zookeeper实现的,思想类似于Hbase master单点故障解决方案。将Spark standalone与MapReduce比较,会发现它们两个在架构上是完全一致的:   1) 都是由master/slaves服务组成的,且起初master均存在单点故障,后来均通过zookeeper解决;   2) 各个节点上的资源被抽象成粗粒度的slot,有多少slot就能同时运行多少task。不同的是, MapReduce将slot分为map slot和reduce slot,它们分别只能供Map