随笔分类 - Spark
摘要:## Spark资源管理 ### 1、介绍 Spark资源管控分为spark集群自身可支配资源配置和job所用资源配置。 ### 2、spark集群支配资源控制 在spark的conf/spark-env.sh文件中可以指定master和worker的支配资源数。 #### 2.1 Spark集群可支配资源配置 1. 每个worker使用内核数 ```shell # 每个...
阅读全文
摘要:## Spark远程调试函数 ### 1、sendInfo 该函数用于分布式程序的调试,非常方便,在spark的rdd操作中嵌入sendInfo,启动nc服务器后,可以收集到所有需要的运行时信息,该函数可以捕获host、进程id、线程名称等主要的信息。 ### 2、函数实现 ```scala
def sendInfo(obj: Object, m: String, param: Strin...
阅读全文
摘要:## Spark核心组件 ### 1、RDD resilient distributed dataset, 弹性分布式数据集。逻辑上的组件,是spark的基本抽象,代表不可变,分区化的元素集合,可以进行并行操作。该类封装了RDD的基本操作,例如map、filter、persist等,除此以外,PairRDDFunctions封装了KV类型RDD的操作,例如groupByKey和join。对于s...
阅读全文
摘要:## Spark job执行流程消息图 ### 1、介绍 
阅读全文
摘要:## Spark Streaming与Kafka集成### 1、介绍kafka是一个发布订阅消息系统,具有分布式、分区化、多副本提交日志特点。kafka项目在0.8和0.10之间引入了一种新型消费者API,注意选择正确的包以获得相应的特性。每个版本都是向后兼容的,因此0.8可以兼容0.9和0.10,但是0.10不能兼容早期版本。0.8支持python、Receiver流和Direct流,不支持偏移...
阅读全文
摘要:## Spark python集成### 1、介绍Spark支持python语言,对于大量的SQL类型的操作,不需要编译,可以直接提交python文件给spark来运行,因此非常简单方便,但是性能要比scala或java慢。对于常规任务,可以使用python来编写,特殊任务还是建议scala编写。### 2、使用pyspark启动spark shell(centos)#### 2.1 启动pysp...
阅读全文
摘要:## Spark机器学习### 1、介绍MLlib是spark机器学习库,目标是让机器学习易用使用并具有伸缩性。在更高层面上,提供如下工具:- ML算法 常用算法,比如分类、回归、聚类和协同过滤。- 特征 特征抽取,特征变换、降维以及选择。- 管线 构造、计算以及调优管线的工具。- 持久化 保存、加载算法、模型和管线。- 工具 线性代数、统计学、数据处理等等。### 2、基础概念- ve...
阅读全文
摘要:## Spark内存管理### 1、介绍spark内存管理不是通过物理或者硬件底层API实现对内存资源探测,只是通过对内存操作过程期间的字节量的变化不断更新维护的数字,通过该方式跟踪内存使用情况。spark对每个task都关联了内存的使用量,存放在了map中。严格意义上讲,spark内存的管理是估算量,不是精确量。spark的内存管理主要针对的堆内内存,和离堆非堆无关。### 2、Spark内存结...
阅读全文
摘要:## Spark Streaming### 1、介绍Spark Streaming是Spark core API的扩展,针对实时数据流计算,具有可伸缩性、高吞吐量、自动容错机制的特点。数据源可以来自于多种方式,例如kafka、flume等等。使用类似于RDD的高级算子进行复杂计算,像map、reduce、join和window等等。最后,处理的数据推送到数据库、文件系统或者仪表盘等。也可以对流计算...
阅读全文
摘要:## Spark SQL### 1、介绍 Spark SQL是构建在Spark core模块之上的四大模块之一,提供DataFrame等丰富API,可以采用传统的SQL语句进行数学计算。运行期间,会通过Spark查询优化器翻译成物理执行计划,并行计算后输出结果。底层计算原理仍然采用RDD计算实现。### 2、Spark与Hive集成1. 在spark配置目录下创建指向hive-site.xml文件...
阅读全文
摘要:## Spark Job调度### 1、概览Spark有几种用于在计算之间调度资源的工具。首先,回想一下,如[集群模式概述中所述](http://spark.apache.org/docs/latest/cluster-overview.html),每个Spark应用程序(SparkContext的实例)都运行一组独立的executor进程。Spark运行的集群管理器提供了跨应用程序的调度工具。其...
阅读全文
摘要:## Spark master节点HA配置### 1、介绍Spark HA配置需要借助于Zookeeper实现,因此需要先搭建ZooKeeper集群。### 2、配置#### 2.1 修改所有节点的spark-evn.sh文件在spark-env.sh文件添加如下环境变量:```properties#需要将该条目注释掉#export SPARK_MASTER_IP=master1 #导入expor...
阅读全文
摘要:## 机器学习 ### 1、介绍 机器学习是科学的一个分支,涉及编程系统,他们会自动学习和改进的经验。在这里,学习意味着认识和理解输入的数据。根据所提供的数据,并作出明智的决定。这些算法从特定的数据和过去的经验,统计,概率论,逻辑,组合优化,搜索,强化学习和控制理论的原则,建立知识。机器学习是一个广阔的领域。有几种方法来实现机器学习技术,但是最常用的是监督和无监督学习。 - 监督学习 ...
阅读全文
摘要:## 07、Spark集群的进程管理 ### 7.1 概述 Spark standalone集群模式涉及master和worker两个守护进程。master进程是管理节点,worker进程是工作节点。spark提供了很多方便启动或停止进程的脚本,风格和hadoop相似。 ### 7.2 启动脚本 ```shell
#启动所有spark进程包括master和worker,该命令在maste节...
阅读全文
摘要:## 08、Spark常用RDD变换 ### 8.1 概述 Spark RDD内部提供了很多变换操作,可以使用对数据的各种处理。同时,针对KV类型的操作,对应的方法封装在PairRDDFunctions trait中,KV类的RDD可以被隐式转换成PairRDDFunctions类型。其中很多的操作,和传统的SQL语句中的操作是对应的,只是底层换成Spark的MR计算。 ### 8.2 常用...
阅读全文
摘要:## 06、部署Spark程序到集群上运行 ### 6.1 修改程序代码 1. 修改文件加载路径 在spark集群上执行程序时,如果加载文件需要确保路径是所有节点能否访问到的路径,因此通常是hdfs路径地址。所以需要修改代码中文件加载路径为hdfs路径: ```scala ... //指定hdfs路径 sc.textFile("hdfs://mycluster...
阅读全文
摘要:## 05、Spark shell连接到Spark集群执行作业 ### 5.1 Spark shell连接到Spark集群介绍 Spark shell可以连接到Spark集群,spark shell本身也是spark的一个应用,是和Spark集群的一种交互方式。每次action动作的执行,都会对应一个job。 ### 5.2 连接方式指定 ```shell
#进入Spark bin目录
$...
阅读全文
摘要:## 04、Spark Standalone集群搭建 ### 4.1 集群概述 独立模式是Spark集群模式之一,需要在多台节点上安装spark软件包,并分别启动master节点和worker节点。master节点是管理节点,负责和各worker节点通信,完成worker的注册与注销。worker节点是任务执行节点,通过worker节点孵化出执行器子进程来执行任务。 ### 4.2 集群规划...
阅读全文
摘要:## 02、体验Spark shell下RDD编程 ### 1、Spark RDD介绍 RDD是Resilient Distributed Dataset,中文翻译是弹性分布式数据集。该类是Spark是核心类成员之一,是贯穿Spark编程的始终。初期阶段,我们可以把RDD看成是Java中的集合就可以了,在后面的章节中会详细讲解RDD的内部结构和工作原理。 ### 2、Spark-shell下...
阅读全文
摘要:## 03、IDEA下Spark API编程 ### 3.1 编程实现Word Count #### 3.1.1 创建Scala模块 #### 3.1.2 添加maven支持,并引入spark依赖 ```xml 4.0.0 com.oldboy myspark 1.0-SNAPSHOT org.apache.spark spa...
阅读全文