Apache Spark

巨杉Tech | 分布式数据库六招“玩转”HTAP场景

≯℡__Kan透↙ 提交于 2020-08-09 04:11:16
随着企业应用的类型不断拓展,在海量数据、高并发、多类型数据的应用场景下,底层数据平台对于混合数据类型、混合业务场景处理能力的要求不断扩大,这就催生了 HTAP(混合事务和分析处理)的需求。 新一代分布式数据库,对于HTAP类型的处理有着无可比拟的优势。而本文将从实战出发,带大家了解HTAP场景下分布式数据库使用的几个技术要点,帮助大家使用分布式数据库六招轻松“搞定”HTAP场景。 传统数据库架构面临的痛点 1. 集群分散不利于整合,数据结构同步工作量大 目前传统数据库架构各个业务之间数据分散,往往一个比较全面的关联查询需要找不同的机构去不同的库中查询数据。甚至有些数据已经使用磁盘落库的方式永久尘封,数据没有使用的价值。怎么能够把各个业务系统打通,如何把数据盘活,让数据能够给业务带来新的增长点是现在面临比较棘手的问题。 2. 传统方式存储,后续扩展同样面临生产当前问题 因为核心系统普遍使用小型机架构,传统关系型数据库扩容会非常麻烦,且扩容成本会很高。只能不断把生产数据剥离出来同步到历史库中,应用查询往往需要对接查询多个不同库,且每天数据切割工作给运维人员带来不小压力。 3. SQL查询界面和服务形式单一 传统架构只有一个数据查询窗口,伴随着机器宕机、和某些用户使用不当会拖垮整个库的性能,这样是对整个业务是有很大影响的。且业务对应的SQL查询形式比较单一,无法适应目前互联网多样化的需求

SparkContext 初始化源代码分析

落花浮王杯 提交于 2020-08-09 03:45:48
SparkContext 初始化流程 SparkContext 是通往Spark 集群的唯一入口,可以用来在 Spark 集群中创建 RDD,累加 器和广播变量,并对RDD执行各种算子,SparkContext的核心作用是初始化Spark程序运行需要组件。 SparkContext初始化过程会构建三大核心对象: DAGScheduler:DAGScheduler是面向Job的Stage高层调度器 TaskScheduler:TaskScheduler个接口,是底层调度器,根据具体的ClusterManager 的不同会有不同的实现 SchedulerBacker:ScdulerBackend个接口,根据具体的Cluster Manager不同会有不同的实现。 源代码分析 创建TaskScheduler位于SparkContext主构造方法中 . . . val ( sched , ts ) = SparkContext . createTaskScheduler ( this , master , deployMode ) // yarn cluster 模式下返回 YarnClusterSchedulerBackend YarnClusterScheduler _schedulerBackend = sched _taskScheduler = ts _dagScheduler

巨杉Tech | 分布式数据库六招“玩转”HTAP场景

|▌冷眼眸甩不掉的悲伤 提交于 2020-08-08 21:22:57
随着企业应用的类型不断拓展,在海量数据、高并发、多类型数据的应用场景下,底层数据平台对于混合数据类型、混合业务场景处理能力的要求不断扩大,这就催生了 HTAP(混合事务和分析处理)的需求。 新一代分布式数据库,对于HTAP类型的处理有着无可比拟的优势。而本文将从实战出发,带大家了解HTAP场景下分布式数据库使用的几个技术要点,帮助大家使用分布式数据库六招轻松“搞定”HTAP场景。 传统数据库架构面临的痛点 1. 集群分散不利于整合,数据结构同步工作量大 目前传统数据库架构各个业务之间数据分散,往往一个比较全面的关联查询需要找不同的机构去不同的库中查询数据。甚至有些数据已经使用磁盘落库的方式永久尘封,数据没有使用的价值。怎么能够把各个业务系统打通,如何把数据盘活,让数据能够给业务带来新的增长点是现在面临比较棘手的问题。 2. 传统方式存储,后续扩展同样面临生产当前问题 因为核心系统普遍使用小型机架构,传统关系型数据库扩容会非常麻烦,且扩容成本会很高。只能不断把生产数据剥离出来同步到历史库中,应用查询往往需要对接查询多个不同库,且每天数据切割工作给运维人员带来不小压力。 3. SQL查询界面和服务形式单一 传统架构只有一个数据查询窗口,伴随着机器宕机、和某些用户使用不当会拖垮整个库的性能,这样是对整个业务是有很大影响的。且业务对应的SQL查询形式比较单一,无法适应目前互联网多样化的需求

流批一体机器学习算法平台

一世执手 提交于 2020-08-08 21:06:50
发布会传送门 产品详情 针对正在兴起的机器学习广泛而多样的应用场景,阿里巴巴计算平台基础算法团队在2017年开始基于Flink研发新一代的机器学习算法平台。该项目名称定为Alink,取自相关名称(Alibaba, Algorithm, AI, Flink, Blink)的公共部分。经过三年的投入研发,Alink在算法性能、算法规模、算法易用性等方面取得了不错的成果,并实现了产品化。这使得数据分析和应用开发人员能够轻松搭建端到端的业务流程。 在后面的篇幅中,我们将从算法功能、算法性能、用户界面、可视化等方面对Alink做一个系统的介绍。 算法功能 Alink拥有丰富的批式算法和流式算法,能够帮助数据分析和应用开发人员能够从数据处理、特征工程、模型训练、预测,端到端地完成整个流程。如下图所示,Alink提供的功能算法模块中,每一个模块都包含流式和批式算法。比如线性回归,包含批式线性回归训练,流式线性回归预测和批式线性回归预测。另外,Alink算法覆盖分类、回归、聚类、评估、统计分析、特征工程、异常检测、文本、在线学习、关联分析等经典领域,是一个通用的机器学习算法平台。 目前,Alink已经被阿里巴巴集团内部多个BU使用,并取得了不错的业务提升。特别是在2019年天猫双11中,单日数据处理量达到 970PB,每秒处理峰值数据高达 25 亿条。Alink

一文告诉你什么是E-MapReduce

混江龙づ霸主 提交于 2020-08-08 20:45:56
云栖号快速入门: 【点击查看更多云产品快速入门】 不知道怎么入门?这里分分钟解决新手入门等基础问题,可快速完成产品配置操作! 阿里云E-MapReduce(Elastic MapReduce),是运行在阿里云平台上的一种大数据处理的系统解决方案。 简介 E-MapReduce构建于云服务器ECS上,基于开源的Apache Hadoop和Apache Spark,让您可以方便地使用Hadoop和Spark生态系统中的其他周边系统(例如,Apache Hive、Apache Pig和HBase等)来分析和处理自己的数据。不仅如此,E-MapReduce还可以与阿里云其他的云数据存储系统和数据库系统(例如,阿里云OSS和RDS等)进行数据传输。 E-MapReduce的用途 以往在使用Hadoop和Spark等分布式处理系统时,您通常需要执行如下步骤。 在上述使用流程中,真正跟用户的应用逻辑相关的是步骤8~10,而步骤1~7都是前期准备工作,但这些前期准备工作都非常冗长繁琐。E-MapReduce提供了集群管理工具的集成解决方案,例如,主机选型、环境部署、集群搭建、集群配置、集群运行、作业配置、作业运行、集群管理和性能监控等。通过E-MapReduce,您可以从繁琐的集群构建相关的采购、准备和运维等工作中解放出来,只关心自己应用程序的处理逻辑即可。 此外,E

sparksql开发入门

孤街醉人 提交于 2020-08-08 19:17:36
一、sparksql基本操作 1.构建sparkSession import org.apache.spark.sql.SparkSession val spark: SparkSession = SparkSession .builder .enableHiveSupport() .config(initConf()) .getOrCreate 2.停止sparkSession spark.stop 3.读取parquet文件 val df1 = spark.read.parquet("hdfs://localhost:8020/tmp/testdata.parquet") 4.输出parquet文件 import org.apache.spark.sql. SaveMode df1.write.mode(SaveMode.Overwrite).parquet("hdfs://localhost:8020/tmp/testdata_out.parquet") 5.查看数据 //查看100行,列宽无限制 df1.show(100,false) 二、SQL操作数据 1.读取parquet文件,并注册临时view val df1 = spark.read.parquet("hdfs://localhost:8020/tmp/testdata.parquet") df1

远程提交Spark任务到yarn集群

我只是一个虾纸丫 提交于 2020-08-08 16:43:12
参考文章: 在idea里面怎么远程提交spark任务到yarn集群 spark任务运行的几种模式: 1,本地模式,在idea里面写完代码直接运行. 2,standalone模式,需要把程序打jar包,上传到集群,spark-submit提交到集群运行 3,yarn模式(local,client,cluster)跟上面的一样,也需要打jar包,提交到集群运行 如果是自己测试的话,用上面几种方法都比较麻烦,每次改完代码都需要打包上传到集群,然后spark-submit提交到集群运行,也非常浪费时间,下面就介绍怎么在本地idea远程提交到yarn集群 直接看下面的demo(代码写的比较简单) package spark import org.apache.kafka.common.serialization.StringDeserializer import org.apache.spark.streaming.kafka010.{ConsumerStrategies, KafkaUtils, LocationStrategies} import org.apache.spark.streaming.{Seconds, StreamingContext} import org.apache.spark.{SparkConf} import spark.wordcount

金融风控系统设计

风流意气都作罢 提交于 2020-08-08 16:39:14
2019-02-05:金融风控系统设计 - 外汇管理风控系统 胖子钓鱼 https://www.jianshu.com/p/e0609b5ba0d4 2019.02.05 14:06:01 字数 3,227阅读 1,576 无际致力于金融科技对银行、融担、互联网金融行业的基于供应链金融为核心的互联网化金融风控技术的输出。涵盖了互联网信贷核心的系统建设,基于Spark[Spark ML, Spark Streaming(Flink 替换中),Spark Graphx]技术体系的信贷风控系统建设,以及长期为合作伙伴提供有效的低风险资产的流量业务。在经历了从银行到互联网金融公司到科技输出行金融科技公司的历程后,笔者希望能够将对行业及系统设计的理解做以分享。 本文共分为三部分(外资银行的外汇交易系统风险建设,互联网金融个人风控系统建设,供应链金融中小企业风控系统建设) 外资银行的风险系统建设 该部分更多介绍一下外汇交易系统风险控制的业务层面,技术上的确无创新之处,加上大量使用三方厂商的系统,在此感谢IBM MQ、Webmethod跟Oracle为该行提供大量的便利,在这家银行里,我们看不到Tomcat, Jetty, 看不到Spring Cloud,Dubbo,ZooKeeper,没有人理会微服务,大家连Yarn跟Hadoop啥关系都不知道。从技术角度到也单纯,能买的就不做

基于Apache Flink的爱奇艺实时计算平台建设实践

旧街凉风 提交于 2020-08-08 15:42:38
分享嘉宾:梁建煌 爱奇艺 编辑整理:张宇轩 内容来源:Flink Forward Asia 导读: 随着大数据的快速发展,行业大数据服务越来越重要。同时,对大数据实时计算的要求也越来越高。今天会和大家分享下爱奇艺基于Apache Flink的实时计算平台建设实践。 今天的介绍会围绕下面三点展开: Flink的现状与改进 平台化的探索和实践:实时计算平台 Flink业务案例 01 Flink的现状与改进 1. Flink现状 首先和大家分享下爱奇艺大数据服务的发展史。 我们从2012年到2019年,大数据服务经过了一系列持续的改进和发展: 2012年搭建了第一个Hadoop集群,当时只有大概20几个节点,使用的计算框架是MapReduce和Hive等 到2013,2014年,开始使用Hadoop 2.0,上线了Storm和Spark,由于Storm的使用性和稳定性不够好,被放弃使用,转而使用Spark 2015年发布了第一个实时计算平台Europa,上线了Kafka 2017年使用了Flink,同时我们基于Spark和Flink打造了流式计算引擎StreamingSQL 2018年推出了自研的实时计算平台Real-time Analytics Platform (RAP) 2019年基于Flink达到了内部的流数据生态平台; 然后介绍一下Flink在爱奇艺的使用情况:

Spark Broadcast源代码分析

蹲街弑〆低调 提交于 2020-08-08 12:45:49
1. Broadcast 简介 Broadcast广播变量是只读变量,它会将数据缓存在每个节点上,而不是每个Task去获取它的复制副本。这样可以降低计算过程中的网络开销。 broadcast的基本使用包括创建和读取。 创建 scala > val broadcastVar = sc . broadcast ( Array ( 1 , 2 , 3 ) ) broadcastVar : org . apache . spark . broadcast . Broadcast [ Array [ Int ] ] = Broadcast ( 0 ) 读取 scala > broadcastVar . value res0 : Array [ Int ] = Array ( 1 , 2 , 3 ) 2. BroadcastManager的初始化 BroadcastManager是用来管理Broadcast ,该实例对象是在SparkEnv.scala的create方法时候创建的。 private def create ( conf : SparkConf , executorId : String , bindAddress : String , advertiseAddress : String , port : Option [ Int ] , isLocal : Boolean ,