- 博客(487)
- 资源 (102)
- 收藏
- 关注

原创 Apache Kafka 基于 S3 的数据导出、导入、备份、还原、迁移方案
在系统升级或迁移时,用户常常需要将一个 Kafka 集群中的数据导出(备份),然后在新集群或另一个集群中再将数据导入(还原)。通常,Kafka集群间的数据复制和同步多采用 Kafka MirrorMaker,但是,在某些场景中,受环境限制,两个于 Kafka 集群之间的网络可能无法连通,亦或是需要将 Kafka 的数据沉淀为文件存储以备他用。此时,基于 Kafka Connect S3 Source / Sink Connector 的方案会是一种较为合适的选择,本文就将介绍一下这一方案的具体实现。
2023-09-12 11:09:38
580

原创 解决方案:如何在 Amazon EMR Serverless 上执行纯 SQL 文件?
长久已来,SQL以其简单易用、开发效率高等优势一直是ETL的首选编程语言,但遗憾的是,Amazon EMR Serverless 未能针对执行SQL文件提供原生支持,这对于倚重纯SQL开发数仓或数据湖的用户来说并不友好。为此,我们专门开发了一组工具类,借助这组工具类,用户可以在 Amazon EMR Serverless 上直接执行SQL文件。
2023-08-16 11:12:26
589

原创 CDC一键入湖:当 Apache Hudi DeltaStreamer 遇见 Serverless Spark
本文首发于Apache Hudi公众号。Apache Hudi的DeltaStreamer是一种以近实时方式摄取数据并写入Hudi表的工具类,它简化了流式数据入湖并存储为Hudi表的操作,自 0.10.0 版开始,Hudi又在DeltaStreamer的基础上增加了基于Debezium的CDC数据处理能力,这使得其可以直接将Debezium采集的CDC数据落地成Hudi表,这一功能极大地简化了从源头业务数据库到Hudi数据湖的数据集成工作。
2023-07-31 09:34:54
252

原创 探索Apache Hudi核心概念(系列文章)
本文由本人撰写并首发于Apache Hudi公众号,共计四篇文章。本系列文章使用 Notebook 对 Apache Hudi 核心概念展开深入的探索和介绍,利用 Notebook 提供的统一环境和上下文,我们可以非常生动地观察到 Hudi 的运行机制,并深刻体会到其背后的控制原理,这也正是本系列文章的写作灵感:我们希望借助 Notebook“探索,发现,思考,领悟”的思维模式,带领大家开启一段 Hudi 核心概念的探索之旅。
2023-04-17 10:39:33
216
1

原创 Apache Ranger与AWS EMR自动化安装与集成(系列文章)
本系列文章发表于DZONE,共计五篇,文章针对Apache Ranger 与 AWS EMR 自动化安装与集成给出了完整的解决方案,方案背后是由一个12000+行代码开源项目提供支持,该系列文章同时也是此项目的官方文档。以下是五篇文章的具体信息:Solutions Overview;OpenLDAP + EMR-Native Ranger;Windows AD + EMR-Native Ranger;OpenLDAP + Open-Source Ranger;Windows AD + Open-Sourc
2023-01-30 17:58:23
468

原创 集成OpenLDAP与Kerberos实现统一认证(系列文章)
本系列文章发表于InfoQ,共计三篇,文章针对OpenLDAP与Kerberos的集成和统一认证给出了完整的解决方案,以下是三篇文章的具体信息:1. 整合后台数据库;2. 基于SSSD同步LDAP账号;3. 基于SASL/GSSAPI深度集成
2023-01-30 17:56:43
357

原创 数据平台上云,变革远比想象的深刻
版权声明:本文由本人撰写并发表于InfoQ官网以及公众号 https://www.infoq.cn/article/5t7w9H3LXSEujo1PCSIZ,本文版权归人个所有,未经许可不得转载。“戒备”与“偏见”几年前,我所在的一家传统行业的头部企业启动了一系列数字化转型项目,在配套的IT基础设施建设上,“上云”已是大势所趋。在此前数年的工作中,我断断续续地使用着公有云产品,大多数情况下,我们只选择IaaS层级的服务,也就是只使用虚拟实例,对PaaS和云平台特定的S
2021-11-15 15:38:29
2404
2

原创 在AWS Glue中使用Apache Hudi
本文发表于Apache Hudi公众号,文章对Glue与Hudi的集成做了可行性分析和理论探索,并通过一个完整的示例演示了如何在Glue作业中使用Hudi,同时将将Hudi元数据同步到Glue Catalog。
2021-04-21 11:00:47
1434

原创 企业数据能力测评:认清现状,布局未来 | 建设数据中台系列(一)
“我的企业目前在数据应用上处于什么水平?接下来应该朝哪个方向努力?”本文试图帮助企业决策者和IT负责人解答这一问题。今天,数据之于企业的重要性已经勿须多言,建设数据驱动型企业已成为众多企业的战略目标之一。在这一趋势的引领下,很多企业开始了新一代数据平台(例如数据中台)的建设工作,然而在启动这一具有挑战性的工作之前,企业首先需要冷静客观地审视一下自己的数据生态,弄清楚目前所处的能力水平,以及下一步努力的“方向”。只有这样才能确保后续工作沿着正确的方向展开,这可能也是企业在构建全新的大数据平台或数据中台前.
2020-07-10 11:13:18
2643
1

原创 重磅推荐:建大数据平台太难了!给我发个工程原型吧!
故事缘起:我们需要工程原型!大数据平台的架构体系庞大,技术堆栈非常深,从事大数据开发的同学对此应该都深有体会。而在很多细分领域(例如实时计算、作业调度)也没有像样的工程模板,这导致很多团队在启动大数据平台建设时往往感到无所侍从,也使得希望深入学习大数据技术的开发者由于缺少工程级的示例参考而感到迷茫。如果在大数据领域也有基于最佳实践提炼出来的工程原型,帮助团队快速启动开发,上手就写业务代码的话,你想了解一下吗?
2020-06-19 11:27:26
7571
13

原创 时间序列大数据平台建设经验谈
版权声明:本文由本人撰写并发表于2018年1月刊的《程序员》杂志,本文版权归《程序员》杂志所有,未经许可不得转载。引言在大数据的生态系统里,时间序列数据(Time Series Data,简称TSD)是很常见也是所占比例最大的一类数据,几乎出现在科学和工程的各个领域,一些常见的时间序列数据有:描述服务器运行状况的Metrics数据、各种IoT系统的终端数据、脑电图、汇率、股价、气象和天
2018-02-07 10:37:25
15763
7

原创 从函数字面量发现函数式编程
版权声明:本文由本人撰写并发表于2015年3月下半月的《程序员》杂志,原文题目《从字面量发现函数式编程》,本文版权归《程序员》杂志所有,未经许可不得转载。引言我相信很多像我一样初次接触函数式编程的程序员来说,对于“函数字面量”这个概念会感到迷惑和不解。伴随着深入地学习,在清晰地理解了这个概念之后,我进行了一些梳理和回溯,作为函数式编程思想延伸到最基层的语言元素,我深刻地觉得“函数字面量”这
2015-04-27 11:54:09
9554
6

原创 HBase高性能复杂条件查询引擎
版权声明:本文由本人撰写并发表于2014年7月份的InfoQ,HBase的PMC成员Ted Yu先生参与了审稿并于给予了肯定。该方案设计之初仅寄希望于通过二级索引提升查询性能,由于在前期架构时充分考虑了通用性以及对复杂条件的支持,在后来的演变中逐渐被剥离出来形成了一个通用的查询引擎。HBase在大数据领域的应用越来越广泛,成为目前NoSQL数据库中表现最耀眼,呼声最高的产品之一,但就应对复杂条件的查询来说,一般认为它并不是非常适合,熟悉HBase的开发人员对此应该有一定的体会,但是基于普遍的需求,开发者们希
2014-06-17 20:10:36
45667
36

原创 数据库分库分表(sharding)系列(五) 一种支持自由规划无须数据迁移和修改路由代码的Sharding扩容方案
版权声明:本文由本人撰写并发表于2012年9月份的《程序员》杂志,原文题目《一种支持自由规划的Sharding扩容方案——主打无须数据迁移和修改路由代码》,此处作为本系列的第五篇文章进行转载, 本文版权归《程序员》杂志所有,未经许可不得转载!作为一种数据存储层面上的水平伸缩解决方案,数据库Sharding技术由来已久,很多海量数据系统在其发展演进的历程中都曾经历过分库分表的Sharding改造阶段
2012-09-12 12:19:52
71429
54

原创 Spring基于ThreadLocal的“资源-事务”线程绑定设计的缘起
题目起的有些拗口了,简单说,这篇文章想要解释Spring为什么会选择使用ThreadLocal将资源和事务绑定到线程上,这背后有着什么样的起因和设计动机,通过分析帮助大家更清晰地认识Spring的线程绑定机制。本文原文链接:http://blog.csdn.net/bluishglc/article/details/7784502 转载请注明出处!“原始”的数据访问写法访问任何带有事务特性的资源系
2012-07-25 14:17:56
26528
12

原创 数据库分库分表(sharding)系列(一) 拆分实施策略和示例演示
本文原文连接: http://blog.csdn.net/bluishglc/article/details/7696085 ,转载请注明出处!本文着重介绍sharding切分策略,如果你对数据库sharding缺少基本的了解,请参考我另一篇从基础理论全面介绍sharding的文章:数据库Sharding的基本思想和切分策略 第一部分:实施策略图1.数据库分库分表(sharding)实施策略图解(
2012-06-27 14:32:44
178334
25

原创 从MVC框架看MVC架构的设计
从MVC框架看MVC架构的设计尽管MVC早已不是什么新鲜话题了,但是从近些年一些优秀MVC框架的设计上,我们还是会发现MVC在架构设计上的一些新亮点。本文将对传统MVC架构中的一些弊病进行解读,了解一些优秀MVC框架是如何化解这些问题的,揭示其中所折射出的设计思想与设计理念。MVC回顾作为一种经典到不能再经典的架构模式,MVC的成功有其必然的道理,这个道理不同的人会有不同的解读,笔者最认同的一种观
2011-08-16 09:57:37
99133
82

原创 领域驱动设计(Domain Driven Design)参考架构详解
领域驱动设计(Domain Driven Design)参考架构详解摘要本文将介绍领域驱动设计(Domain Driven Design)的官方参考架构,该架构分成了Interfaces、Applications和Domain三层以及包含各类基础设施的Infrastructure。本文会对架构中一些重要组件和问题进行讨论,给出一些分析结论。本文原文连接:http://blog.csdn.net/b
2011-08-12 11:33:02
68153
14
原创 在 EMR Serverless 上使用 Delta Lake
本文是一份开箱即用的全自动测试脚本,用于在 EMR Serverless 上提交一个 Delta Lake 作业。本文完全遵循《最佳实践:如何优雅地提交一个 Amazon EMR Serverless 作业?》 一文给出的标准和规范!
2023-09-25 16:47:10
172
原创 在 EMR 上使用 Delta Lake
Amazon EMR 在 6.9.0 版本开始引入 Delta Lake,测试下来,启用的方式和 Apache Hudi 是非常像的。本文简单记录一下操作环节。此外,在 EMR 上使用 Delta Lake 也是可以使用 Glue Data Catalog 的。
2023-09-25 11:06:43
56
原创 使用 YCSB 和 PE 进行 HBase 性能压力测试
HBase主要性能压力测试有两个,一个是 HBase 自带的 PE,另一个是 YCSB,先简单说一个两者的区别。PE 是 HBase 自带的工具,开箱即用,使用起来非常简单,但是 PE 只能按单个线程统计压测结果,不能汇总整体压测数据,更重要的是,PE 没有 YCSB 的 预设模板(Workload) 功能,测试场景单一,相较而言,YCSB 要强大的多,它的 Workload 功能非常实用,可以模拟更贴近实际使用场景的压力状况。
2023-09-12 16:34:09
496
原创 解密 Shell 重定向:>、>1、2>、&>、>&、2>&1、1>&2 、/dev/null、>>、>>2、&>>
Shell 重定向这部分知识比较琐碎,符号很多,各种操作符又有多种“变种”,所以会让人感觉很凌乱。本文试图对这部分内容做一些规范化的梳理,主要以 GNU 官方文档为准。首先,有必要“温习”一个基础知识点:在Linux上一切皆文件!所有的设备都可以使用一个文件来描述或代表,这一点在重定向操作中体现的尤为明显,例如:0,1,2,/dev/null 都是文件,其中:0代表文件/dev/stdin,1代表文件/dev/stdout,2代表文件/dev/stderr。而这些文件又分别代表了某种设备:/dev/stdi
2023-09-06 15:59:41
147
原创 Shell 编程技巧:批量转换Markdown文件
由于一些原因,需要将以前编写的所有markdown文件转成docx文件,以便做一个备份,特别是原文档中引用的图片需要嵌入docx文件,作本地化保存。先上脚本吧
2023-09-03 11:59:19
238
原创 使用正则表达式在中英文之间添加空格
有时为了排版需要,我们可能需要在文章的中英文之间添加空格,特别是中文中引用了英文单词时,这种情况使用正则表达式整体修订是最明智的做法。首先,推荐使用在线的正则表格式工具:https://regex101.com/ , 该工具非常强大,支持几乎所有的编程语言风格!
2023-09-02 12:23:22
790
原创 Shell 编程技巧:从URL、文件路径截取文件名或文件夹名
从URL、文件路径截取文件名或文件夹名是一项很常见的操作,常规思路是操作字符串甚至是正则表达式来截取需要的部分,但实际上,作为一项非常基础和常见的操作,shell提供了一个很好的命令行工具:basename 来简化这项操作。以下就是一份示例
2023-08-29 17:47:54
127
原创 为什么分配给Spark的Executor数量和Cores与请求值不符?
作为的姊妹篇,我们再来看另外一种更“离奇”的情况,这种情况下,Spark UI上显示的Executor数量和每个Executor占用的核数与请求值完全对应不上。如果再仔细观察一下可以发现如下规律:实际分配的Executor数量往往比申请的数量少,单个Executor的合数一般比申请的值大,但是:总的分配的核数与申请的数量()是可以对齐的。特别说明的是:本文描述的情况排除了集群不足和EMR 6.11),OSS Spark没有此问题。接下来,我们先看一下测试的情况。
2023-08-28 11:43:10
163
原创 为什么 Spark UI 上显示的 Executor Cores 与 Yarn 上的 vCore 数量不符?
你可能会在自己的集群上观察到:Spark UI 上显示的 Executor Cores 与 Yarn 上的 vCore 数量是不符的,本文将会给出详细解释。本文和《为什么我的集群一个 Spark Executor / Yarn Container 只有一个vCore?》一文有比较密切的关系,建议先阅读一下此文,本文可以看作是这篇文章的“补充”,因为原文只讨论了Yarn上的情况,并没有Spark UI和本地实际资源分配的讨论和验证!
2023-08-24 11:46:22
161
原创 Hive/Spark 整库导出/导入脚本
1. 整库导出为一个SQL文件database="<your-database-name>"cat << EOF > $database.sqldrop database if exists $database cascade;create database if not exists $database;use $database;EOFfor table in $(beeline -n hadoop -u jdbc:hive2:// --showHeade
2023-08-21 14:07:22
441
原创 Jupyter 报 Connection Reset 错误:Bad address (C:\projects\libzmq\src\epoll.cpp:100)
(参考:https://github.com/zeromq/pyzmq/issues/1505),但是在复杂的依赖状况下,这种方法可能改起来会很麻烦。出现这个问题可能和你本地使用了某种VPN软件有关,解决这个问题有两种说法,一种是降低 pyzmq 版本至。经测试,上述方法有效!
2023-08-21 13:45:28
114
原创 TPC-DS 测试是否支持 Glue Data Catalog?
在上一篇文章《在Hive/Spark上执行TPC-DS基准测试 (PARQUET格式)》中,我们详细介绍了具体的操作方法,当时的集群使用的是Hive Metastore,所有操作均可成功执行。当集群启用 Glue Data Catalog 时,在执行add_constraints.sql时会报错:UnsupportedOperationException: addPrimaryKey is not supported
2023-08-19 19:53:23
478
原创 为什么我的 Spark Executor / Yarn Container 只有一个vCore?
在很多集群里,在关闭了Spark的DynamicAllocation的前提下(避免自动申请空闲资源,干扰测试结果),都会观察到:提交Spark作业时,申请 1 个 driver + n 个 executor 会在Yarn上会对应创建 n+1 个 container,但是每个container只有一个vCore,通过--driver-cores和--executor-cores设定的vCore数都未奏效。有人会因此错误的认为Yarn上的一个vCore对应一个Spark的executor,这是非常错误的,正确的
2023-08-17 17:06:25
180
原创 在Hive/Spark上执行TPC-DS基准测试 (PARQUET格式)
在上一篇文章:《在Hive/Spark上运行执行TPC-DS基准测试 (ORC和TEXT格式)》中,我们介绍了如何使用 hive-testbench 在Hive/Spark上执行TPC-DS基准测试,同时也指出了该项目不支持parquet格式。如果我们想要生成parquet格式的测试数据,就需要使用其他工具了。本文选择使用另外一个开源项目,它和 hive-testbench 项目非常接近,操作方法也很类似,如果你熟悉
2023-08-16 08:45:00
394
原创 在Hive/Spark上运行执行TPC-DS基准测试 (ORC和TEXT格式)
目前,在Hive/Spark上运行TPC-DS Benchmark主要是通过早期由Hortonworks维护的一个项目:hive-testbench 来完成的。本文我们以该项目为基础介绍一下具体的操作步骤。不过,该项目仅支持生成ORC和TEXT格式的数据,如果需要Parquet格式,请参考此文《在Hive/Spark上执行TPC-DS基准测试 (Parquet格式)》。
2023-08-14 17:09:00
751
原创 最佳实践:如何优雅地提交一个 Amazon EMR Serverless 作业?
自Amazon EMR推出Serverlesss形态以来,得益于开箱即用和零运维的优质特性,越来越多的EMR用户开始尝试EMR Serverless。在使用过程中,一个常被提及的问题是:我们应该如何在EMR Serverless上提交Spark/Hive作业?本文我们将分享一些这方面的最佳实践,帮助大家以一种更优雅的方式使用这项服务。
2023-08-08 09:15:00
781
原创 在 spark-sql / spark-shell / hive / beeline 中粘贴 sql、程序脚本时的常见错误
一个很小的问题,简单记录一下。有时候我们会粘贴一段已经成功运行过的SQL或程序脚本,但是在spark-sql / spark-shell / hive / beeline 中执行时可能会报这样的错误:hive> CREATE EXTERNAL TABLE IF NOT EXISTS ORDERS( > Display all 641 possibilities? (y or n)
2023-08-02 11:43:52
1087
原创 编译 TPC-DS ( dsdgen / dsqgen ) 生成测试数据和查询语句
TPC所有Benchmark工具包的下载地址是https://www.tpc.org/tpc_documents_current_versions/current_specifications5.asp , TPC-DS当前最新版本是3.2.0,下载前需要填写真实的邮箱地址,因为下载连接是通过邮件发送的。将下载好的安装包上传到Linux服务器,并解压安装包
2023-08-01 18:54:44
584
原创 Hive/Spark/Yarn: User Not Found 错误和 Kerberos / AD / OpenLDAP 之间的关系与解释
有时候,当你向Spark或Hive提交作业时,可能会遇到User not found错误,类似的问题大多发生在启动了Kerberos的Hadoop集群上,或者集群集成了Windows AD或OpenLDAP后。本文,我们把这个问题梳理清楚并给出解决方法。
2023-07-31 10:24:47
1100
原创 HBase CDC ( WAL日志写入Kafka ) 方案和实操文档
本文记录HBase CDC ( WAL日志写入Kafka ) 方案的实操步骤,测试使用的方案和环境如下:创建HBase集群在MER 空置台上创建一个EMR集群,选择HBase一个App即可,S3路径使用上一步创建的桶。我们需要一个MSK集群,本文不赘述MSK集群的创建步骤,这个集群须无身份认证,使用PLAINTEXT传输,同时和EMR需能连通。将如下两个包上传至集群所有节点的/usr/lib/hbase/lib/文件下
2023-07-17 17:23:38
374
Big_Data_SMACK.pdf
2016-10-14
The.Art.of.Multiprocessor.Programming.Revised.Reprint
2014-02-06
win7下硬盘安装Linux(Fedora17,CentOS 6.4,Ubuntu 12.10,LinuxMint 13 64-bit)
2013-08-16
Packtpub.Hadoop.MapReduce.Cookbook.Jan.2013
2013-03-04
OpenSSH for Windows
2013-02-06
Professional Website Performance.pdf
2013-02-04
Red.Gate.SQL.Toolbelt.v1.8.2.238.Incl.Keygen
2013-01-14
Araxis.Merge.Professional.v2012.4260.x64-BEAN
2012-12-27
Apress.Pro.SQL.Server.2012.Practices.Nov.2012
2012-12-24
JavaScript.The.Definitive.Guide.6th.Edition.Apr.2011
2012-09-29
Professional JavaScript for Web Developers, 3rd Edition 附书中代码
2012-09-19
Head.First.HTML.and.CSS.2nd.Edition.Aug.2012
2012-09-11
Packtpub.Spring.Security.3.May.2010
2012-09-10
Pro Apache Log4j Second Edition
2012-09-06
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人