自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(142)
  • 资源 (2)
  • 收藏
  • 关注

原创 Spark withColumn 陷阱

withColumn / withColumnRenamed 是 spark 中常用的 API,可以用于添加新字段 / 字段重命名 / 修改字段类型,但是当列的数量增加时,会出现严重的性能下降现象,本文将分析出现该现象的原因以及该如何解决

2020-04-27 23:43:41 9520

原创 大数据平台资源治理经验总结

文章目录背景组件HDFS为什么需要治理为什么难以推动需要做什么部分效果图SPARK & YARN为什么需要治理需要做什么部分效果图计费后记背景大数据平台早期是野蛮生长的,任务直接在终端提交运行,处于一种完全无管理的自由状态。在17年上线了内部的大数据平台后,用户开始逐渐在平台上进行数据管理,代码编写,作业管理等工作,但是资源治理依旧缺失。随着业务及数据量的不断增加,集群扩容,存储和计...

2020-04-23 14:27:15 2414

原创 不通过 Spark 获取 Delta Lake Snapshot

Delta Lake 进行数据删除或更新操作时实际上只是对删除数据文件进行了一个 remove 标记,在进行 vacuum 前并不会进行物理删除,因此一些例如在 web 上获取元数据或进行部分数据展示的操作如果直接从表路径下获取 parquet 文件信息,读到的可能是历史已经被标记删除的数据。

2020-04-22 11:49:04 506

原创 Delta Lake 分区表覆盖写入操作

Delta Lake当前版本(0.5)只支持API操作的,但是实现 Insert SQL 语法也不难,可以参考 Delta Lake 平台化实践(离线篇),需要注意的是 Delta Lake 中的分区表覆盖写入操作。

2020-03-26 00:18:07 1452

原创 Apache Ranger KMS 部署文档

很久没写过部署文档了,不过 Apache Ranger KMS 的手动部署较为繁琐,网上的相关资料基本都是散装的,因此写了一篇进行总结。文章目录背景安装部署安装 ranger-admin安装 ranger-kmsHDFS 配置Kerberos 配置HA 配置KMS LUNA HSMFAQ后记参考背景需要一个高可用的 KMS 服务用于数据静态加密(HDFS 透明加密 / ORC格式列加密)...

2020-01-10 20:51:49 5415 3

原创 Delta Presto Integration & Manifests 机制

Delta Lake 在 0.5 之前只支持通过 Spark 读取数据,在新版本中增加了其他处理引擎通过 manifest 文件访问 Delta Lake 的能力。下文以Presto 为例说明如何通过 manifest 文件访问数据,manifest 文件的生成及其一些限制。

2019-12-17 11:46:18 1526

原创 Delta Lake 平台化实践(离线篇)

Delta Lake 是什么?简单的说就是为大数据场景添加了事务功能,并且支持了 update/delete/merge into 等功能, Delta Lake 初探。要将 Delta Lake 与 spark2.4 sql 以及大数据平台打通还是有一些工作需要去做,下文是在该过程中的一些实践及思考。目录SQL 支持DMLQueryInsert平台化工作浏览 delta 数据元数据兼容碎...

2019-12-15 21:18:26 2794 1

原创 Spark 小文件合并优化实践

对 spark 任务数据落地(HDFS) 碎片文件过多的问题的优化实践及思考。

2019-10-24 11:04:37 8082 4

原创 Apache Druid 平台化 - 数据接入篇

文章目录数据接入背景方案设计druid 数据接入的一些经验一. hive 数据导入自动填充分区二. zstd 编码支持三. keberos四. druid-0.15.0 进程自动退出五. druid 对数据进行 ETL数据接入背景使用界面化和 sql 的方式将数据导入到 druid,提供数据给后续告警,监控,查询等服务使用。方案设计数据源1:内部消息服务 dclog ,本质上是一个 ka...

2019-08-20 17:08:09 5114 8

原创 Spark 数据读取冷启动优化分析

Spark 读取数据冷启动 (在一个 Session 中第一次读取该数据) 时,会从文件系统中获取文件的一些元数据信息用于优化,如果一个目录下的文件过多,就会比较耗时(可能达到数十分钟),该逻辑在 InMemoryFieIndex 中实现。下文针对该过程进行分析。文章目录InMemoryFileIndexbefore spark 2.1after spark 2.1优化 HDFS 获取 F...

2019-05-27 18:35:53 2243

原创 Delta 初探

Delta Lake 初探Delta Lake在说 Delta Lake 之前,不得不说下近几年火热的 Data Lake ,Data Lake 的主要思想是将企业中的所有数据进行统一管理。例如基于 Hadoop 的 Data Lake 方案可以非常低成本的存储所有类型的数据,但是显而易见的,它只支持批量插入,用户读取时无法获取当前更新的数据,多用户写还可能会发生异常,数据并不是非常可靠。...

2019-04-29 01:01:00 5898 1

原创 Druid 消费一个 kafka topic 发送到不同数据源

文章目录背景解决办法一. 过滤标识在消息体中二. 过滤标识在 header 中源码修改逻辑背景数据采集时,为了避免在 kafka 中创建大量的 Topic ,采集时会将小的数据源写入一个共享 Topic 中,以某个字段作为标识。这里有两种方式:直接将标识写入消息体中将标识写入 record header 中 (kafka 0.11版本后支持)Druid 使用 druid-kafka-...

2019-04-11 00:32:29 2470 9

原创 Spark Sql 复杂类型高阶函数

文章目录背景1. 只使用 sql 实现2. 使用 udf 的方式3. 使用高阶函数的方式使用Array 高阶函数1. transform2. filter3. exists4. aggregate5. zip_with复杂类型内置函数总结参考spark sql 2.4 新增了高阶函数功能,允许在数组类型中像 scala/python 一样使用高阶函数背景复杂类型的数据和真实数据模型相像,...

2019-04-03 18:50:06 3410 1

原创 使用 spark sql extensions 实现 skew join

文章目录背景实现方式原理用法语法编译&配置Test局限性参考背景使用 Join 时,如果出现数据倾斜就会导致OOM或者单task长时间执行的现象,如果是大小表关联的场景,还可以使用 MAPJOIN 的方式来解决,如果遇到两张大表目前还没有比较好的解决方案。实现方式使用spark sql extensions 的扩展功能,增加自定义 hint 在 sql parser 层对相关逻辑进...

2019-03-12 01:15:57 2219 1

原创 AMD & Intel 机器 Spark 性能测试2

文章目录硬件配置测试角色分配线上sql任务模拟使用 sysbench 对内存读写进行测试结果硬件配置接上篇文章 AMD & Intel 机器 Spark 性能测试共6台机器,每个对照组各三台。intel 5118 内存为6通道,双路为12通道amd 7401p 为8通道,如果用16*16G,则内存频率会下降到2133,带宽进一步降低,默认使用 Channel Interleav...

2019-01-24 15:52:37 646

原创 Alluxio 性能测试

文章目录背景为什么要引入 Alluxio读取数据的效率取决于哪些因素计算&存储分离混合部署分离部署测试环境测试理论性能提升ScanPresto测试结果TPC-DS测试结果总结背景HDFS数据读取延时不稳定,波动较大为什么要引入 Alluxio通过监控发现计算节点的物理内存有富余,不需要增加额外机器成本机器网卡较为空闲,瓶颈主要存在于磁盘IO热数据读取加速存储计算分离,提高数...

2019-01-03 13:28:32 2776 3

原创 spark-sql-perf

文章目录简介测试tpcds-kitspark-sql-perf生成数据执行查询查询结果TPC-DS简介spark-sql-perf 是一个 spark sql 性能测试框架,可以用来进行一些基准测试。测试环境:spark 2.4.0spark-sql-perf_2.11-0.5.0-SNAPSHOT测试tpcds-kit通过 tpcds-kit 生成 TPC-DS 数据。su...

2019-01-03 01:19:15 2500

原创 Mac pySpark IDE 环境配置

本地配置 pyspark 开发环境开发工具Javaspark-2.3.0-bin-2.6.0-cdh5.7.0PyCharm配置 PyCharmConfigurationRun -> Edit Configurations -> Configuration -> Environm

2018-12-13 22:59:21 1572 1

原创 Kerberos ticket 生命周期

基本概念Kerberos ticket 有两种生命周期,ticket timelife (票据生命周期) 和 renewable lifetime (可再生周期)。当 ticket lifetime 结束时,该 ticket 将不再可用。如果 renewable lifetime > ticket lifetime ,那么在票据生命周期内都可以其进行续期,直到达到可再生周期的上限...

2018-11-27 14:12:01 4274

原创 使用 jvm-profiler 分析 spark 内存使用

文章目录背景jvm-profiler分析总结背景在生产环境中,为了提高任务提交的响应速度,我们研发了类似 Spark Jobserver 的服务,各种类型的 spark 任务复用已经启动的 Spark Application,避免了 sparkContext 初始化冷启动的过程。但是这些服务的内存是固定的,因此开放了用户自定义 Executor 的权限,不过也带来了很多问题,最典型的就是内存...

2018-10-27 15:53:57 2107 3

原创 AMD & Intel 机器 Spark 性能测试

文章目录配置硬件配置软件配置Benchmark总结配置硬件配置INTEL 机型与 AMD 机型除了CPU其余配置相同。256G DRAM8TB 7.2k HDD * 11960G SSD * 12 * 10GbpsIntel: Intel Xeon Gold 5118 * 2AMD: AMD EPYC 7401P软件配置Spark 2.3.1CentOS 7.4CD...

2018-10-10 09:58:27 997

原创 Spark Optane IMDT 测试

文章目录测试目的测试配置测试方法BenchmarkcacheWordcountTerasortKMeans结论容量说明成本相关适合的场景不适合的场景参考测试目的如果不了解什么是Optane,可以先了解一下:Optane介绍使用 Intel Memory Drive Technology (IMDT) 将 Intel Optane SSD 模拟成内存,进行性能测试。在运行时,部分 DRAM...

2018-09-26 11:35:57 1111

原创 使用 Hibench 对 Spark 进行基准测试

文章目录概述安装配置Test配置运行查看报告概述项目地址: Intel-hadoop/HiBenchHibench 是 Intel 开源的大数据基准测试工具,可以评估不同大数据框架的速度,吞吐量和系统资源利用率。包括 Sort, WordCount, TeraSort, Sleep, SQL, PageRank, Nutch indexing, Bayes, Kmeans, NWeight ...

2018-09-20 14:36:47 3364 7

原创 使用 Prometheus 和 Grafana 监控 Spark 应用

背景每个开发者都想了解自己任务运行时的状态,便于调优及排错,Spark 提供的 webui 已经提供了很多信息,用户可以从上面了解到任务的 shuffle,任务运行等信息,但是运行时 Executor JVM 的状态对用户来说是个黑盒,在应用内存不足报错时,初级用户可能不了解程序究竟是 Driver 还是 Executor 内存不足,从而也无法正确的去调整参数。Spark 的度量系统提供了...

2018-09-13 01:17:18 7024 4

原创 使用 aspectj 对 spark 进行拦截

开源产品要想用的得心应手免不了要根据公司的业务/场景对其做一些改造,如果直接在源码的层面对其修改,当时可能用的很爽,但后期与社区代码的合并,版本升级可能会变成一场噩梦。对于一个平台来说,使用者对技术本身是不敏感的,所以我们需要增加一些限制来减少集群的一些不可控情况,例如不断的写入新表/新数据却不记得删除,大量不按规范创建的表名等情况。与此同时应尽量让技术对用户透明,比如让其无感...

2018-09-04 01:30:38 1510 5

原创 spark on yarn cgroup 资源隔离(cpu篇)

环境配置cdh 5.9.0cm 5.15.0os centos 7.2背景yarn container 默认不支持对cpu进行资源隔离,一些计算密集型任务甚至可能占满NM节点的cpu资源,从而影响到其他任务的执行效率。spark streaming 出现消费延时一些调度任务运行时间波动较大目标限制一些计算密集型任务的CPU使用,避免多 Cont...

2018-08-02 17:59:21 3969 3

原创 提高spark任务稳定性1 - Blacklist 机制

场景 一个 spark 应用的产生过程: 获取需求 -> 编写spark代码 -> 测试通过 -> 扔上平台调度。 往往应用会正常运行一段时间,突然有一天运行失败,或是失败了一次才运行成功。从开发者的角度看,我的代码没问题,测试也通过了,之前一段都运行好好的,怎么突然就失败了呢?为什么我重新调度又能正常运行了,是不是你们平台不稳定?是什么导致了上述问题?...

2018-04-25 00:01:43 6422

原创 PySpark Pandas UDF

配置所有运行节点安装 pyarrow ,需要 >= 0.8为什么会有 pandas UDF在过去的几年中,python 正在成为数据分析师的默认语言。一些类似 pandas,numpy,statsmodel,scikit-learn 被大量使用,逐渐成为主流的工具包。同时,spark 也成为了大数据处理的标准,为了让数据分析师能够使用 spark ,Spark在 0.7 版本...

2018-04-13 17:58:45 9033 2

原创 在spark dataFrame 中使用 pandas dataframe

背景 项 pandas spark 工作方式 单机,无法处理大量数据 分布式,能处理大量数据 存储方式 单机缓存 可以调用 persist/cache 分布式缓存 是否可变 是 否 index索引 自动创建 无索引 行结构 Pandas.Series Pyspark.sql.Row 列结构...

2018-04-04 11:05:27 3130

原创 spark 读取 hdfs 数据分区规则

下文以读取 parquet 文件 / parquet hive table 为例:hive metastore 和 parquet 转化的方式通过 spark.sql.hive.convertMetastoreParquet 控制,默认为 true。如果设置为 true ,会使用 org.apache.spark.sql.execution.FileSourceScanExec ,否则会使...

2018-04-03 10:10:16 4992 7

原创 spark range join 优化

背景 一张ip表,一张ip地理信息表,地理信息表每条数据包含了ip地址的起点和终点以及一些地理信息, 需要用 ip 去关联 gep_ip 中匹配相应的信息 。例如: 数据条数为 50 M 的表 ip_record,数据格式大致如下: ip_int info 123456789 xx 987654321 xx数据条数为 7 M 的...

2018-04-03 09:47:51 2056

原创 ScheduledThreadPoolExecutor 定时调度

定时器中 Timer 有单线程等缺陷,quartz依赖太重, 用 ScheduledThreadPoolExecutor 又想实现定时调度,实现一个工具类计算初次调度时间即可。import java.util.concurrent._val task = new Runnable { override def run(): Unit = try { doSometh

2018-01-18 23:09:42 792

原创 hdfs exceeded directory item limit

报错提示:错误原因: 一个目录下的子目录数量达到限制,默认的上限是 1048576。 每次执行hive语句时,都会在 hive.exec.scratchdir 配置的目录下生成一个临时目录,执行结束后会自动删除,如果异常中断则有可能会保留目录。提供两种解决办法:提高目录的限制上限,通过 dfs.namenode.fs-limits.max-directory-items 参数

2018-01-15 22:57:22 2521

原创 HDFS 开启 SCR 对 Hbase 的性能提升

HDFS short circuit local readHDFS client 和 HDFS datanode 通过 TCP socket 进行通信,client 发起请求,datanode读取数据,通过RPC将数据传给 client 。如果client 和 数据在同一个节点上,那么通过 datanode 就会增加额外的开销。在这种场景下,HDFS提供了一个 local read 的机制 ,让 c

2017-11-23 23:40:28 720

原创 pypy on PySpark

什么是pypy 简单的说,pypy 基于jit静态编译,相比cpython 动态解释执行,因此执行速度上会更高效,同时减少了内存使用。http://pypy.org对三方包的支持一直是pypy的软肋,特别是一些科学计算包,不过在最新的 pypy5.9 中终于对Pandas和NumPy提供了支持。一个简单的例子: test1:import timet = time.time()i = 0

2017-11-15 00:50:09 1366

原创 hdfs du -sk 导致机器load高

hdfs 会定期(默认10分钟)使用 du -sk 命令统计BP的大小,在大硬盘机器上该操作耗时将会很长(可能超过10分钟)。这会导致 iowait 以及 load的提升。例如: 社区为了解决这个问题,主要在两个方面进行了改造: https://issues.apache.org/jira/browse/HADOOP-9884使用 df 命令替换 du允许用户自定义检查间隔时间问题虽然被

2017-11-10 08:41:41 1711

原创 spark convert RDD[Map] to DataFrame

将RDD[Map[String,String]] 转化为展平 DataFrame,类似于pyspark 中 dict 结构toDF的效果。inputval mapRDD: RDD[Map[String, String]] = sc.parallelize(Seq( Map("name" -> "zhangsan", "age" -> "18", "addr" -> "bj"), Map(

2017-10-12 00:15:48 3425 3

原创 spark 应用输出debug日志

问题:yarn container 大量输出debug日志 –> 磁盘写满 –> nodemanager 识别该盘为bad disk -> 停止服务 -> spark task lost 。container stdout:排错过程:查看log4j文件,查看yarn log 级别, 发现均为正常。发现driver,executor日志输出表现不一致(driver成功加载,executor表现和配

2017-09-25 14:01:04 5383

原创 phoenix for cloudera

phoenix for cloudera软件版本:spark 2.0.2cdh 5.9phoenix 4.9 (phoenix-spark模块使用4.11)下载CDH版本的phoenix,最新版本目前只有phoenix 4.9,不过在4.10开始才可以使用spark2.0: PHOENIX-3333 这里将phoenix-spark模块换成了4.11的。相应修改根目录pom的配置。git c

2017-07-17 01:31:54 2670

原创 网络原因造成 spark task 卡住

主机名映射出错背景:Yarn集群新加入了一批Spark机器后发现运行Spark任务时,一些task会无限卡住且driver端没有任何提示。解决:进入task卡住的节点查看container stderr日志,发现在获取其他节点block信息时,连接不上其他的机器节点,不停重试。 怀疑部分旧节点的/etc/hosts文件被运维更新漏了,查看/etc/hosts,发现没有加入新节点的地址,加入后问

2017-05-10 00:36:47 4171

spark_prometheus_metrics.json

博客https://blog.csdn.net/lsshlsw/article/details/82670508 spark_prometheus_metrics.json

2018-09-13

scala for spark

因为spark是用scala编写的,这里做了点总结,方便看spark源码。

2014-09-28

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除