Apache Spark

干货 | Spark Streaming 和 Flink 详细对比

雨燕双飞 提交于 2019-12-01 02:57:36
本文从编程模型、任务调度、时间机制、Kafka 动态分区的感知、容错及处理语义、背压等几个方面对比 Spark Stream 与 Flink,希望对有实时处理需求业务的企业端用户在框架选型有所启发。本文篇幅较长,建议先收藏~ / 编程模型对比 / 运行角色 Spark Streaming 运行时的角色(standalone 模式)主要有: Master :主要负责整体集群资源的管理和应用程序调度; Worker :负责单个节点的资源管理,driver 和 executor 的启动等; Driver :用户入口程序执行的地方,即 SparkContext 执行的地方,主要是 DGA 生成、stage 划分、task 生成及调度; Executor :负责执行 task,反馈执行状态和执行结果。 Flink 运行时的角色(standalone 模式)主要有: Jobmanager : 协调分布式执行,他们调度任务、协调 checkpoints、协调故障恢复等。至少有一个 JobManager。高可用情况下可以启动多个 JobManager,其中一个选举为 leader,其余为 standby; Taskmanager : 负责执行具体的 tasks、缓存、交换数据流,至少有一个 TaskManager; Slot : 每个 task slot 代表 TaskManager

如何在CDH中安装Kudu&Spark2&Kafka

丶灬走出姿态 提交于 2019-12-01 02:44:43
1.概述 在CDH的默认安装包中,是不包含Kafka,Kudu和Spark2的,需要单独下载特定的Parcel包才能安装相应服务。本文档主要描述在离线环境下,在CentOS6.5操作系统上基于CDH5.12.1集群,使用Cloudera Manager通过Parcel包方式安装Kudu、Spark2和Kafka的过程。 内容概括 Kudu安装 Spark2安装 Kafka安装 服务验证 测试环境 操作系统版本:CentOS6.5 CM和CDH版本5.12.1 使用CM管理员admin用户 操作系统采用root用户操作 前置条件 CDH集群运行正常 2.Kudu安装 CDH5.12.1打包集成Kudu1.4,并且Cloudera提供官方支持。不再需要安装Kudu的csd文件,安装完Kudu,Impala即可直接操作Kudu。 以下安装步骤描述如何使用Cloudera Manager来安装和部署Kudu1.4 2.1Kudu的Parcel部署 1.从Cloudera官网下载Kudu的Parcel包,下载地址如下 http://archive.cloudera.com/kudu/parcels/5.12.1/KUDU-1.4.0-1.cdh5.12.1.p0.10-el6.parcel http://archive.cloudera.com/kudu/parcels/5.12.1

CDH5动静态资源池配置与回滚

微笑、不失礼 提交于 2019-12-01 00:12:38
关于动态 静态资源池的配置以前都有提过,可以从以下几篇了解: YARN动态资源池配置案例 https://yq.aliyun.com/ziliao/346856# Hadoop YARN配置参数剖析(4)—Fair Scheduler相关参数 Hadoop YARN配置参数剖析(5)—Capacity Scheduler相关参数 Hadoop YARN配置参数剖析(5)—Capacity Scheduler相关参数 Hadoop 2.0中Capacity Scheduler与Fair Scheduler对比 Hadoop权限管理 而如果不小配错了想回滚怎么办??? 动态池还好说重设刷新资源状态就好, 静态的可以参考如下: 解决办法: 英文好的就看原文吧: Disabling Static Service Pools To disable static service pools, disable cgroup-based resource management for all hosts in all clusters: 1.In the main navigation bar, click Hosts. 2.Click the Configuration tab. 3.Click the Resource Management category, uncheck the

大数据(hadoop-分布式搭建和yarn)

依然范特西╮ 提交于 2019-12-01 00:10:28
分布式搭建步骤 1:克隆一台机器完成后,按以下步骤进行修改(作为源克隆主机) 1)修改网卡信息,路径/etc/sysconfig/network-scripts 2)删除70-persistent-net.rules这个文件,路径在:/etc/udev/rules.d 3)修改hosts文件,设置ip和主机名对映关系 如: 127.0.0.1 localhost 192.168.153.115 hm02 192.168.153.116 hs0201 192.168.153.117 hs0202 4)重启 5)删除hadoop和jdk的安装包(可选) 6)删除hadoop2.7.3下面的tmp目录 2:克隆从节点后,修改步骤 比上面的主节点的步骤,少3,5,6这几步 3:免密登陆设置 1)重新生成私钥和公钥(主从节点) 2)将公钥写入authorized_keys这个文件(主节点) 三台机器的免密设置 3)将2台从节点上面的公钥远程拷贝到主节点 4)在主节点上面将从节点的公钥合并到authorized_keys这个文件 5)把这已经合并了三台机器公钥的authorized_keys文件分发到两个从节点上面 cat id_rsa.pub_from_hs0201 >> authorized_keys scp authorized_keys hadoop@hs0202:~/.ssh

Spark学习记录(二)Spark集群搭建

余生长醉 提交于 2019-11-30 22:30:20
Hadoop Spark 集群搭建,以及IDEA远程调试 环境:Hadoop-2.7.2 jdk-1.8 scala-2-11-12 spark-2.1.0 spark2.0.0开始,只支持Java8版本了,并且Java8版本最好相对高一点,并且从spark2.1.0开始只支持scala2.11了 scala下载地址(选择2.11.X以上版本): http://www.scala-lang.org/download/ spark下载地址: http://spark.apache.org/downloads.html 由于我们的hadoop是2.7.2 版本,这里选择下载对应的spark版本。 首先,将scala和spark的tar包上传到我们的三台虚拟机上,并进行解压配置。 三台虚拟机IP: 192.168.194.131 Hadoop.Master 192.168.194.129 Hadoop.Slave1 192.168.194.130 Hadoop.Slave2 我们先来配置scala,在配置scala之前我们必须保证服务器上有Java8之后,配置scala的环境变量,编辑/etc/profile: 保存然后使其生效之后,执行scala -version观察输出: 如果输出对应版本号则说明配置成功。 接下来我们配置spark,首先就是环境变量:

Spark提交Yarn的过程

∥☆過路亽.° 提交于 2019-11-30 18:07:10
spark-submit.sh-> spark-class.sh,然后调用SparkSubmit.scala。 根据client或者cluster模式处理方式不一样。 client:直接在spark-class.sh运行的地方包装要给进程来执行driver。 cluster:将driver提交到集群去执行。 核心在SparkSubmit.scala的prepareSubmitEnvironment方法中,截取一段处理Yarn集群环境的看一下。 // In client mode, launch the application main class directly // In addition, add the main application jar and any added jars (if any) to the classpath if (deployMode == CLIENT) { childMainClass = args.mainClass if (localPrimaryResource != null && isUserJar(localPrimaryResource)) { childClasspath += localPrimaryResource } if (localJars != null) { childClasspath ++=

MongoDB Spark Connector 实战指南

蹲街弑〆低调 提交于 2019-11-30 18:05:14
Why Spark with MongoDB? 高性能,官方号称 100x faster,因为可以全内存运行,性能提升肯定是很明显的 简单易用,支持 Java、Python、Scala、SQL 等多种语言,使得构建分析应用非常简单 统一构建 ,支持多种数据源,通过 Spark RDD 屏蔽底层数据差异,同一个分析应用可运行于不同的数据源; 应用场景广泛,能同时支持批处理以及流式处理 MongoDB Spark Connector 为官方推出,用于适配 Spark 操作 MongoDB 数据;本文以 Python 为例,介绍 MongoDB Spark Connector 的使用,帮助你基于 MongoDB 构建第一个分析应用。 准备 MongoDB 环境 安装 MongoDB 参考 Install MongoDB Community Edition on Linux mkdir mongodata mongod --dbpath mongodata --port 9555 准备 Spark python 环境 参考 PySpark - Quick Guide 下载 Spark cd /home/mongo-spark wget http://mirrors.tuna.tsinghua.edu.cn/apache/spark/spark-2.4.4/spark-2.4.4-bin

MongoDB Spark Connector 实战指南

余生长醉 提交于 2019-11-30 18:03:05
Why Spark with MongoDB? 高性能,官方号称 100x faster,因为可以全内存运行,性能提升肯定是很明显的 简单易用,支持 Java、Python、Scala、SQL 等多种语言,使得构建分析应用非常简单 统一构建 ,支持多种数据源,通过 Spark RDD 屏蔽底层数据差异,同一个分析应用可运行于不同的数据源; 应用场景广泛,能同时支持批处理以及流式处理 MongoDB Spark Connector 为官方推出,用于适配 Spark 操作 MongoDB 数据;本文以 Python 为例,介绍 MongoDB Spark Connector 的使用,帮助你基于 MongoDB 构建第一个分析应用。 准备 MongoDB 环境 安装 MongoDB 参考 Install MongoDB Community Edition on Linux mkdir mongodata mongod --dbpath mongodata --port 9555 准备 Spark python 环境 参考 PySpark – Quick Guide 下载 Spark cd /home/mongo-spark wget http://mirrors.tuna.tsinghua.edu.cn/apache/spark/spark-2.4.4/spark-2.4.4-bin

YarnAllocator

痴心易碎 提交于 2019-11-30 16:57:30
YarnAllocator从字面意思来看,也应该知道是在Yarn集群中分配Container的。 private[yarn] class YarnAllocator( driverUrl: String, driverRef: RpcEndpointRef, conf: YarnConfiguration, sparkConf: SparkConf, amClient: AMRMClient[ContainerRequest], appAttemptId: ApplicationAttemptId, securityMgr: SecurityManager, localResources: Map[String, LocalResource], resolver: SparkRackResolver, clock: Clock = new SystemClock) 其中driverUrl就是Driver的地址。当用YarnAllocator分配Container来运行Executors时,这些Executors要联系的Driver地址就是构造函数里的driverRef参数。 requestTotalExecutorsWithPreferredLocalities方法是分配多个Executor的,先将分配请求保存在队列里,然后在守护线程中异步的创建Executor。 def

CoarseGrainedSchedulerBackend和CoarseGrainedExecutorBackend

强颜欢笑 提交于 2019-11-30 14:25:32
CoarseGrainedSchedulerBackend是Driver端用到的,CoarseGrainedExecutorBackend是Executor端用到的。他们都是Backend,什么是Backend?Backend其实就是负责端到端通信的,这两个CoarseGrained的Backend是负责Driver和Executor之间的通信的。 什么是Driver呢?Driver就是我们编写的spark代码,里面的main函数就是Driver跑的代码。 什么是Executor呢?Executor就是执行spark的Task任务的地方,Backend接收到Driver的LaunchTask消息后,调用Executor类的launchTask方法来执行任务。 Driver会启动CoarseGrainedSchedulerBackend,通过CoarseGrainedSchedulerBackend来向集群申请机器以便启动Executor,会找到一台机器,发送命令让机器启动一个ExecutorRunner,ExecutorRunner里启动CoarseGrainedExecutorBackend向Driver注册,并创建Executor来处理CoarseGrainedExecutorBackend接收到的请求。刚刚说的是Standalone部署下的流程,Yarn下大部分类似