Apache Spark

5月21日 Spark 社区直播【Spark on Zeppelin】

主宰稳场 提交于 2020-08-14 12:39:52
主题: Spark on Zeppelin 时间: 5月21日 19:00 参与方式: 扫描下方海报二维码加入钉钉群 或者 届时点击直播间直接观看(回看链接) https://developer.aliyun.com/live/2871 讲师介绍: 章剑锋(简锋),开源界老兵,Apache Member,曾就职于 Hortonworks,目前在阿里巴巴计算平台事业部任高级技术专家,并同时担任 Apache Tez、Livy 、Zeppelin 三个开源项目的 PMC ,以及 Apache Pig 的 Committer。 直播简介: Apache Zeppelin 是一个交互式的大数据开发Notebook,从一开始就是为Spark定制的。Zeppelin Notebook的开发环境与传统IDE开发环境相比有几大优势:不需要编译Jar,环境配置简单,交互式 来源: oschina 链接: https://my.oschina.net/u/4381796/blog/4285135

Spark 任务提交运行基本概念

本小妞迷上赌 提交于 2020-08-14 12:36:55
Spark 任务提交运行基本概念 基本概念 application :整个spark应用程序 driver :相当于驱动节点,负责资源申请,任务分配和监控,也即是运行main函数所在进程的节点,main函数中会创建 Sparkcontext(Spark上下文),它会包含spark env(spark 运行环境等),并且和 ClusterManager 通讯,申请资源 分配任务 监控任务,sparkContext中创建的类主要包括spark env, TaskScheduler(任务调度器), DAGScheduler (DAG调度器) executor :应用运行在worker节点(这里只的是物理节点,一个机器上的一个jvm)上的进程,该进程负责运行一些task,并且负责将这些task的运行过程中的数据存储在内存或者磁盘上,executor会将task包装成 taskRunner,然后从线程池中分配一个空闲的线程运行它,executor能并行运行多少个task,取决于给他分配的core的个数,一个core同一时间只能运行一个task. Worker : 集群中可以运行Application代码的节点。在Spark on Yarn模式中指的就是NodeManager节点 task : 在Executor进程中执行任务的工作单元,多个Task组成一个Stage

滴滴HBase大版本滚动升级之旅

寵の児 提交于 2020-08-14 10:57:27
桔妹导读:滴滴HBase团队日前完成了0.98版本 -> 1.4.8版本滚动升级,用户无感知。新版本为我们带来了丰富的新特性,在性能、稳定性与易用性方便也均有很大提升。我们将整个升级过程中面临的挑战、进行的思考以及解决的问题总结成文,希望对大家有所帮助。 1. 背景 目前HBase服务在我司共有国内、海外共计11个集群,总吞吐超过1kw+/s,服务着地图、普惠、车服、引擎、金融等几乎全部部门与业务线。 然而有一个问题持续困扰着我们:版本较社区落后较多——HBase线上集群使用0.98版本,而社区目前最新的release版本为2.3。这为我们的工作带来了很多额外的掣肘与负担,主要包括以下几点: 新特性引入成本极高: 0.98版本可以算是HBase第一个稳定版本,但过于老旧,社区已经不再维护。想要backport新特性难度越来越大。 自研patch维护成本较高: 我们基于0.98版本有数十个大大小小的自研patch,涵盖了从label分组、ACL鉴权等大的feature到监控体系建设、审计日志优化等Improvement以及各种bug fix。这些patch或是新版本中已支持但和我们实现有差异,或是由于版本差异过大无法合入社区,而且随着时间线的拉长,这种问题只会进一步恶化。 上层组件对于HBase存在一定需求: 得益于活跃的HBase生态圈,目前我们的用户使用形态也比较丰富,OLAP

QingStor 对象存储架构设计及最佳实践

送分小仙女□ 提交于 2020-08-14 08:48:09
对象存储概念及特性 在介绍 QingStor®️对象存储内部的的架构和设计原理之前,我们首先来了解一下对象存储的概念,也就是从外部视角看,对象存储有什么特性,我们应该如何使用。 对象存储本质上是一款存储产品,与其他的存储,如文件存储、块存储,功能是类似的,主要的功能都是数据的读和写。最大的不同在于对象存储是把数据作为对象进行管理,这是它最主要的特征,所有的数据在这里面都当做一个对象处理。 对象存储有一些非常鲜明的特点: 它的结构是扁平的,不像文件存储那样有目录层级,在读写数据时不需要对目录进行层层查找和打开。 对象存储具备海量数据存储的能力,这里的海量指的是不仅仅是几百 GB 的量,而是说几百 T 甚至上 PB 的级别。 对象存储适用于非结构化数据的存储,非结构化具体指的是不对数据的类型和格式做任何假设,不管是简单的文本,还是图片、视频、音频都可以存在对象存储里,当做对象来处理。 对象存储通过 Restful 接口对外提供服务,也就是 HTTP 协议,这使得对象存储的访问非常方便,随时随地可以进行数据的上传和下载。 QingStor®️对象存储核心优势 ![0_1591683403636_1.png]( https://community.qingcloud.com/assets/uploads/files/1591683404995-1-resized.png

Java字节码角度分析条件判断指令 ——提升硬实力3

[亡魂溺海] 提交于 2020-08-14 08:14:31
在前面的文章中,有详细地介绍java字节码相关的知识,有兴趣的可以提前了解一下。 1. Java字节码的一段旅行经历——提升硬实力1 2. Java字节码角度分析a++ ——提升硬实力2 下面将详细介绍一下java是if 条件判断是如何通过字节码来实现判读的。以下是java条件判断对应的字节码: 指令 助记符 含义 0x99 ifeq 判断是否 == 0 0x9a ifne 判断是否 != 0 0x9b iflt 判断是否 < 0 0x9c ifge 判断是否 >= 0 0x9d ifgt 判断是否 > 0 0x9e ifle 判断是否 <= 0 0x9f if_icmpeq 两个int 是否 == 0xa0 if_icmpne 两个int 是否 != 0xa1 if_icmplt 两个int 是否 < 0xa2 if_icmpge 两个int 是否 >= 0xa3 if_icmpgt 两个int 是否 > 0xa4 if_icmple 两个int 是否 <= 0xa5 if_acmpeq 两个引用是否 == 0xa6 if_acmpne 两个引用是否 != 0xc6 ifnull 判断是否 == null 0xc7 ifnonnull 判断是否 != null 几点说明: byte,short,char 都会按int比较,因为操作数栈都是4字节 goto

从零入门 Serverless | 一文详解 Serverless 技术选型

只谈情不闲聊 提交于 2020-08-14 06:25:07
作者 | 李国强 阿里云资深产品专家 本文整理自《Serverless 技术公开课》, 关注“Serverless”公众号,回复“入门”,即可获取 Serverless 系列文章 PPT。 今天来讲,在 Serverless 这个大领域中,不只有函数计算这一种产品形态和应用类型,而是面向不同的用户群体和使用习惯,都有其各自适用的 Serverless 产品。例如面向函数的函数计算、面向应用的 Serverless 应用引擎、面向容器的 Serverless Kubernetes,用户可以根据自己的使用习惯、使用场景或者应用类型,去选择使用什么样的 Serverless 产品。下面通过本文给大家介绍一下,阿里云都有哪些可供大家选择的 Serverless 产品。 Serverless 产品及分层 众所周知,最早提出 Serverless 的是 AWS,其在 Serverless 领域的旗舰产品是 function compute。同样阿里云也有函数计算的产品,帮助用户构建 Serverless 函数。但 Serverless 不仅仅是函数,如下图所示,其实用户会期望在应用、容器等层面也能够享受到 Serverless 的好处,包括按量付费、极致弹性等,这样也更符合用户原有的使用习惯。 在上图中,大家能够看到,阿里云针对函数、应用和容器都推出了对应的 Serverless 产品

spark RDD pipe 调用外部脚本

旧巷老猫 提交于 2020-08-14 04:08:59
pipe(command, [envVars]) 对于每个分区,都执行一个perl或者shell脚本,返回输出的RDD 1 2 3 4 5 6 7 8 9 10 11 scala> val rdd = sc.makeRDD(List( "wangguo", "yangxiu", "xiaozhou", "kangkang"),3) rdd: org.apache.spark.rdd.RDD[String] = ParallelCollectionRDD[9] at makeRDD at <console>:24 scala> rdd.pipe( "/opt/test/spark/pipe.sh").collect res4: Array[String] = Array(wangcen, wangguohehe, wangcen, yangxiuhehe, wangcen, xiaozhouhehe, kangkanghehe) scala> val rdd = sc.makeRDD(List( "wangguo", "yangxiu", "xiaozhou", "kangkang"),4) rdd: org.apache.spark.rdd.RDD[String] = ParallelCollectionRDD[11] at makeRDD at <console>:24

如何在本地调试你的 Spark Job

给你一囗甜甜゛ 提交于 2020-08-14 03:52:54
生产环境的 Spark Job 都是跑在集群上的,毕竟 Spark 为大数据而生,海量的数据处理必须依靠集群。但是在开发Spark的的时候,不可避免我们要在本地进行一些开发和测试工作,所以如何在本地用好Spark也十分重要,下面给大家分享一些经验。 首先你需要在本机上安装好了Java,Scala和Spark,并配置好了环境变量。详情请参考官方文档或其他教程。 spark-shell 本地运行Spark最直接的方式就是在命令行里面运行spark-shell,成功后你将看到如下信息: 首先可以仔细阅读一下命令行的提示信息, Picked up _JAVA_OPTIONS: -Xmx512M -Xms512M // _JAVA_OPTIONS是我在系统环境变量里面设置的值 Using Spark's default log4j profile: org/apache/spark/log4j-defaults.properties // 告诉你log4j使用配置 Setting default log level to "WARN". // log级别 To adjust logging level use sc.setLogLevel(newLevel). For SparkR, use setLogLevel(newLevel). // 如何调整log级别 Spark context

真正让你明白Hive调优系列3:笛卡尔乘积,小表join大表,Mapjoin等问题

≡放荡痞女 提交于 2020-08-14 03:17:13
0.Hive中的优化分类 真正想要掌握Hive的优化,要熟悉相关的MapReduce,Yarn,hdfs底层源码,明晰Hive的底层执行流程。真正让你明白Hive调优系列,会征对下面分类逐一分析演示。 大类1:参数优化 文件输入前看是否需要map前合并小文件 控制map个数,根据实际需求确认每个map的数据处理量,split的参数等 Map输出是否需要启动压缩,减少网络传输,OOM处理等 控制redcue个数,控制每个reduce的吞吐量,OOM处理等 是否将common-join转换成map-join处理策略 文件输出是否需要启动小文件合并策略 其他相关参数的配置:如严格模式,JVM重用,列剪切等 大类2:开发中优化 数据倾斜,这个是Hive优化的重头戏。出现的原因是因为出现了数据的重新分发和分布,启动了redcue。Hive中数据倾斜分类:group by ,count(distinct)以及join产生的数据倾斜(当然一些窗口函数中用了partition by一会造成数据倾斜) j oin相关的优化 :分类大表join大表,小表join大表的优化 代码细节优化分类 : 比如去重用group by替代distinct ; 多表关联,先进行子查询后再进行关联 ;表关联时一定要在子查询里过滤掉NULL值,避免数据倾斜; 不要对一个表进行重复处理,多使用临时表