
大数据
文章平均质量分 95
张吉Jerry
If I rest, I rust.
展开
-
Apache HBase 的适用场景
HBase很棒,但不是关系型数据库或HDFS的替代者。它需要配置得当才能运行良好。监控,监控,监控,重要的事情要说三遍。翻译 2017-08-17 08:41:49 · 4266 阅读 · 0 评论 -
Apache Beam 快速入门(Python 版)
Apache Beam 是一种大数据处理标准,由谷歌于 2016 年创建。它提供了一套统一的 DSL 用以处理离线和实时数据,并能在目前主流的大数据处理平台上使用,包括 Spark、Flink、以及谷歌自身的商业套件 Dataflow。Beam 的数据模型基于过去的几项研究成果:FlumeJava、Millwheel,适用场景包括 ETL、统计分析、实时计算等。原创 2017-09-13 20:25:36 · 4493 阅读 · 0 评论 -
Apache Hadoop YARN - 项目背景与简介
日前,Apache Hadoop YARN已被提升为Apache软件基金会的子项目,这是一个值得庆祝的里程碑。这里我们也第一时间为各位献上Apache Hadoop YARN项目的系列介绍文章。YARN是一个普适的、分布式的应用管理框架,运行于Hadoop集群之上,用以替代传统的Apache Hadoop MapReduce框架。翻译 2017-08-30 06:29:35 · 808 阅读 · 0 评论 -
Cascalog: 基于 Clojure 的 Hadoop 查询语言
Cascalog 受 Datalog 启发,是一种基于 Clojure、运行于 Hadoop 平台上的查询语言。它的特点是简单、表达能力强、交互性和扩展性、以及能够和 Cascading 相结合。翻译 2017-08-31 08:39:19 · 649 阅读 · 0 评论 -
Clojure 实战 (5):Storm 实时计算框架
Storm简介上一章介绍的Hadoop工具能够对海量数据进行批量处理,采用分布式的并行计算架构,只需使用其提供的MapReduce API编写脚本即可。但随着人们对数据实时性的要求越来越高,如实时日志分析、实时推荐系统等,Hadoop就无能为力了。这时,Storm诞生了。它的设计初衷就是提供一套分布式的实时计算框架,实现低延迟、高并发的海量数据处理,被誉为“Realtime Hadoop”。原创 2017-09-01 08:32:03 · 1792 阅读 · 0 评论 -
Pandas 与数据整理
在 Tidy Data 论文中,Wickham 博士提出了这样一种“整洁”的数据结构:每个变量是一列,每次观测结果是一行,不同的观测类型存放在单独的表中。他认为这样的数据结构可以帮助分析师更简单高效地进行处理、建模、和可视化。他在论文中列举了五种不符合整洁数据的情况,并演示了如何通过 R 语言对它们进行整理。本文中,我们将使用 Python 和 Pandas 来达到同样的目的。原创 2017-10-10 10:08:47 · 1772 阅读 · 0 评论 -
Flume 源码解析:组件生命周期
Apache Flume 是数据仓库体系中用于做实时 ETL 的工具。它提供了丰富的数据源和写入组件,这些组件在运行时都由 Flume 的生命周期管理机制进行监控和维护。本文将对这部分功能的源码进行解析。原创 2017-10-24 09:41:34 · 1228 阅读 · 0 评论 -
使用 Python 和 Thrift 连接 HBase
Apache HBase 是 Hadoop 生态环境中的键值存储系统(Key-value Store)。它构建在 HDFS 之上,可以对大型数据进行高速的读写操作。HBase 的开发语言是 Java,因此提供了原生的 Java 语言客户端。不过,借助于 Thrift 和其丰富的语言扩展,我们可以十分便捷地在任何地方调用 HBase 服务。文本将讲述的就是如何使用 Thrift 和 Python 来...原创 2018-04-23 08:58:07 · 5294 阅读 · 1 评论 -
Flume 源码解析:HDFS Sink
Apache Flume 数据流程的最后一部分是 Sink,它会将上游抽取并转换好的数据输送到外部存储中去,如本地文件、HDFS、ElasticSearch 等。本文将通过分析源码来展现 HDFS Sink 的工作流程。Sink 组件的生命周期在上一篇文章中, 我们了解到 Flume 组件都会实现 LifecycleAware 接口,并由 LifecycleSupervisor 实例管理和监控...原创 2018-10-04 14:01:59 · 1684 阅读 · 0 评论 -
Spark DataSource API V2
Spark 1.3 引入了第一版的数据源 API,我们可以使用它将常见的数据格式整合到 Spark SQL 中。但是,随着 Spark 的不断发展,这一 API 也体现出了其局限性,故而 Spark 团队不得不加入越来越多的专有代码来编写数据源,以获得更好的性能。Spark 2.3 中,新一版的数据源 API 初见雏形,它克服了上一版 API 的种种问题,原来的数据源代码也在逐步重写。本文将演示这...原创 2018-12-09 11:25:37 · 4335 阅读 · 1 评论 -
使用 Apache Flink 开发实时 ETL
Apache Flink 是大数据领域又一新兴框架。它与 Spark 的不同之处在于,它是使用流式处理来模拟批量处理的,因此能够提供亚秒级的、符合 Exactly-once 语义的实时处理能力。Flink 的使用场景之一是构建实时的数据通道,在不同的存储之间搬运和转换数据。本文将介绍如何使用 Flink 开发实时 ETL 程序,并介绍 Flink 是如何保证其 Exactly-once 语义的。...原创 2018-12-30 12:55:11 · 17617 阅读 · 2 评论 -
深入理解 Hive ACID 事务表
Apache Hive 0.13 版本引入了事务特性,能够在 Hive 表上实现 ACID 语义,包括 INSERT/UPDATE/DELETE/MERGE 语句、增量数据抽取等。Hive 3.0 又对该特性进行了优化,包括改进了底层的文件组织方式,减少了对表结构的限制,以及支持条件下推和向量化查询。Hive 事务表的介绍和使用方法可以参考 Hive Wiki 和 各类教程,本文将重点讲述 Hiv...原创 2019-06-11 21:30:58 · 11558 阅读 · 0 评论 -
Hive 小文件问题的处理
Hive的后端存储是HDFS,它对大文件的处理是非常高效的,如果合理配置文件系统的块大小,NameNode可以支持很大的数据量。但是在数据仓库中,越是上层的表其汇总程度就越高,数据量也就越小。而且这些表通常会按日期进行分区,随着时间的推移,HDFS的文件数目就会逐渐增加。原创 2017-08-24 06:40:28 · 2696 阅读 · 0 评论 -
实时计算工具库 stream-lib 使用指南
进行大数据处理时,计算唯一值、95% 分位数等操作非常占用空间和时间。但有时我们只是想对数据集有一个概略的了解,数值的准确性并不那么重要。实时监控系统中也是如此,可以容忍一定的错误率。目前已经有许多算法可以通过牺牲准确性来减少计算所需的空间和时间,这些算法大多支持数据结构之间的合并,因此可以方便地用在实时计算中。stream-lib 就是一个集成了很多此类算法的实时计算工具库。原创 2017-08-28 09:00:50 · 3042 阅读 · 0 评论 -
使用 Crossfilter 和 dc.js 构建交互式报表
在对多维数据集进行图表分析时,我们希望在图表之间建立联系,选择图表中的一部分数据后,其他图表也会相应变动。这项工作可以通过开发完成,即在服务端对数据进行过滤,并更新所有图表。此外,我们还可以借助 Crossfilter 和 dc.js 这两个工具,直接在浏览器中对数据进行操作。原创 2017-08-09 08:49:31 · 4053 阅读 · 0 评论 -
Apache Flume 如何解析消息中的事件时间
数据开发工作中,从上游消息队列抽取数据是一项常规的 ETL 流程。在基于 Hadoop 构建的数据仓库体系中,我们通常会使用 Flume 将事件日志从 Kafka 抽取到 HDFS,然后针对其开发 MapReduce 脚本,或直接创建以时间分区的 Hive 外部表。这项流程中的关键一环是提取日志中的事件时间,Flume 提供了诸多工具帮助我们实现这一点。原创 2017-08-06 09:23:14 · 2758 阅读 · 0 评论 -
Spark Streaming 中如何实现 Exactly-Once 语义
Exactly-once 语义是实时计算的难点之一。要做到每一条记录只会被处理一次,即使服务器或网络发生故障时也能保证没有遗漏,这不仅需要实时计算框架本身的支持,还对上游的消息系统、下游的数据存储有所要求。本文将讲述如何结合 Spark Streaming 框架、Kafka 消息系统、以及 MySQL 数据库来实现 Exactly-once 的实时计算流程。原创 2017-08-02 10:59:24 · 6237 阅读 · 1 评论 -
通过 SQL 查询学习 Pandas 数据处理
Pandas 是一款广泛使用的数据处理工具,我们可以在内存中进行高性能的数据清洗、转换、分析及可视化工作。虽然 Python 本身是一门非常容易学习的语言,但要熟练掌握 Pandas 丰富的 API 接口及正确的使用方式,还是需要投入一定时间的。对于数据开发工程师或分析师而言,SQL 语言是标准的数据查询工具。本文提供了一系列的示例,如何将常见的 SQL 查询语句使用 Pandas 来实现。原创 2017-08-10 08:49:07 · 7818 阅读 · 2 评论 -
深入理解 Reduce-side Join
在《MapReduce Design Patterns》一书中,作者给出了Reduce-side Join的实现方法,大致步骤如下:使用MultipleInputs指定不同的来源表和相应的Mapper类;Mapper输出的Key为Join的字段内容,Value为打了来源表标签的记录;Reducer在接收到同一个Key的记录后,执行以下两步:原创 2017-08-18 06:16:52 · 1103 阅读 · 0 评论 -
Spark 快速入门
Apache Spark是新兴的一种快速通用的大规模数据处理引擎。它的优势有三个方面:通用计算引擎 能够运行MapReduce、数据挖掘、图运算、流式计算、SQL等多种框架;基于内存 数据可缓存在内存中,特别适用于需要迭代多次运算的场景;与Hadoop集成 能够直接读写HDFS中的数据,并能运行在YARN之上。原创 2017-08-20 07:44:37 · 673 阅读 · 0 评论 -
使用 Binlog 和 Canal 从 MySQL 抽取数据
数据抽取是 ETL 流程的第一步,我们常会需要从多个不同的 MySQL 实例中抽取数据,存入一个中心节点,或直接进入 Hive。借助 Canal 项目,我们能够通过 MySQL Binlog 进行数据抽取。原创 2017-08-14 08:39:08 · 73484 阅读 · 5 评论 -
MySQL 异常 UTF-8 字符的处理
ETL流程中,我们会将Hive中的数据导入MySQL——先用Hive命令行将数据保存为文本文件,然后用MySQL的LOAD DATA语句进行加载。最近有一张表在加载到MySQL时会报以下错误:Incorrect string value: '\xF0\x9D\x8C\x86' for column ...经查,这个字段中保存的是用户聊天记录,因此会有一些表情符号。原创 2017-08-22 06:09:41 · 2774 阅读 · 0 评论 -
在 CDH 4.5 上安装 Shark 0.9
Spark是一个新兴的大数据计算平台,它的优势之一是内存型计算,因此对于需要多次迭代的算法尤为适用。同时,它又能够很好地融合到现有的Hadoop生态环境中,包括直接存取HDFS上的文件,以及运行于YARN之上。对于Hive,Spark也有相应的替代项目——Shark,能做到 drop-in replacement ,直接构建在现有集群之上。原创 2017-08-23 06:17:04 · 516 阅读 · 0 评论 -
Hive 并发情况下报 DELETEME 表不存在的异常
在每天运行的Hive脚本中,偶尔会抛出以下错误:MySQLSyntaxErrorException: Table 'hive.DELETEME1378143540925' doesn't exist原创 2017-08-27 10:23:54 · 1501 阅读 · 0 评论 -
Hive 窗口与分析型函数
新版的 SQL 标准引入了窗口查询功能,使用 WINDOW 语句我们可以计算分组排名、滑动平均值等。本文将介绍 Hive 中窗口及分析型函数的使用方法。原创 2017-09-05 12:39:18 · 4397 阅读 · 0 评论 -
使用 Kubernetes 部署 Flink 应用
Kubernetes 是目前非常流行的容器编排系统,在其之上可以运行 Web 服务、大数据处理等各类应用。这些应用被打包在一个个非常轻量的容器中,我们通过声明的方式来告知 Kubernetes 要如何部署和扩容这些程序,并对外提供服务。Flink 同样是非常流行的分布式处理框架,它也可以运行在 Kubernetes 之上。将两者相结合,我们就可以得到一个健壮和高可扩的数据处理应用,并且能够更安全地...原创 2019-08-25 15:46:58 · 5730 阅读 · 1 评论