自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

张吉的博客

If I rest, I rust.

  • 博客(26)
  • 收藏
  • 关注

翻译 Cascalog: 基于 Clojure 的 Hadoop 查询语言

Cascalog 受 Datalog 启发,是一种基于 Clojure、运行于 Hadoop 平台上的查询语言。它的特点是简单、表达能力强、交互性和扩展性、以及能够和 Cascading 相结合。

2017-08-31 08:39:19 620

翻译 Apache Hadoop YARN - 项目背景与简介

日前,Apache Hadoop YARN已被提升为Apache软件基金会的子项目,这是一个值得庆祝的里程碑。这里我们也第一时间为各位献上Apache Hadoop YARN项目的系列介绍文章。YARN是一个普适的、分布式的应用管理框架,运行于Hadoop集群之上,用以替代传统的Apache Hadoop MapReduce框架。

2017-08-30 06:29:35 770

翻译 Ansible 服务器配置工具常见问题

本文是从原Ansible官网的FAQ页面翻译而来,网站改版后该页面已无法访问,但可以从Github历史提交中获得。翻译这篇原始FAQ文档是因为它陈述了Ansible这款工具诞生的原因,设计思路和特性,以及与Puppet、Fabric等同类软件的比较,可以让我们对Ansible有一个整体的了解,所以值得使用者一读。

2017-08-29 06:11:15 1578 1

原创 实时计算工具库 stream-lib 使用指南

进行大数据处理时,计算唯一值、95% 分位数等操作非常占用空间和时间。但有时我们只是想对数据集有一个概略的了解,数值的准确性并不那么重要。实时监控系统中也是如此,可以容忍一定的错误率。目前已经有许多算法可以通过牺牲准确性来减少计算所需的空间和时间,这些算法大多支持数据结构之间的合并,因此可以方便地用在实时计算中。stream-lib 就是一个集成了很多此类算法的实时计算工具库。

2017-08-28 09:00:50 2935

原创 Hive 并发情况下报 DELETEME 表不存在的异常

在每天运行的Hive脚本中,偶尔会抛出以下错误:MySQLSyntaxErrorException: Table 'hive.DELETEME1378143540925' doesn't exist

2017-08-27 10:23:54 1457

翻译 抽象泄漏定律

TCP协议是互联网的基石,我们每天都需要依靠它来构建各类互联网应用。也正是在这一协议中,时刻发生着一件近乎神奇的事情。

2017-08-26 07:13:48 1747

翻译 Java 反射机制

“反射(Reflection)能够让运行于JVM中的程序检测和修改运行时的行为。”这个概念常常会和内省(Introspection)混淆,以下是这两个术语在Wikipedia中的解释:

2017-08-25 08:52:59 505

原创 Hive 小文件问题的处理

Hive的后端存储是HDFS,它对大文件的处理是非常高效的,如果合理配置文件系统的块大小,NameNode可以支持很大的数据量。但是在数据仓库中,越是上层的表其汇总程度就越高,数据量也就越小。而且这些表通常会按日期进行分区,随着时间的推移,HDFS的文件数目就会逐渐增加。

2017-08-24 06:40:28 2665

原创 在 CDH 4.5 上安装 Shark 0.9

Spark是一个新兴的大数据计算平台,它的优势之一是内存型计算,因此对于需要多次迭代的算法尤为适用。同时,它又能够很好地融合到现有的Hadoop生态环境中,包括直接存取HDFS上的文件,以及运行于YARN之上。对于Hive,Spark也有相应的替代项目——Shark,能做到 drop-in replacement ,直接构建在现有集群之上。

2017-08-23 06:17:04 478

原创 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 2726

原创 离线环境下构建 sbt 项目

在公司网络中使用sbt、Maven等项目构建工具时,我们通常会搭建一个公用的Nexus镜像服务,原因有以下几个:避免重复下载依赖,节省公司带宽;国内网络环境不理想,下载速度慢;IDC服务器没有外网访问权限;用于发布内部模块。

2017-08-21 08:46:13 2259

原创 Spark 快速入门

Apache Spark是新兴的一种快速通用的大规模数据处理引擎。它的优势有三个方面:通用计算引擎 能够运行MapReduce、数据挖掘、图运算、流式计算、SQL等多种框架;基于内存 数据可缓存在内存中,特别适用于需要迭代多次运算的场景;与Hadoop集成 能够直接读写HDFS中的数据,并能运行在YARN之上。

2017-08-20 07:44:37 652

原创 使用 git rebase 让历史变得清晰

当多人协作开发一个分支时,历史记录通常如下方左图所示,比较凌乱。如果希望能像右图那样呈线性提交,就需要学习 git rebase 的用法。

2017-08-19 07:13:42 1646

原创 深入理解 Reduce-side Join

在《MapReduce Design Patterns》一书中,作者给出了Reduce-side Join的实现方法,大致步骤如下:使用MultipleInputs指定不同的来源表和相应的Mapper类;Mapper输出的Key为Join的字段内容,Value为打了来源表标签的记录;Reducer在接收到同一个Key的记录后,执行以下两步:

2017-08-18 06:16:52 1068

翻译 Apache HBase 的适用场景

HBase很棒,但不是关系型数据库或HDFS的替代者。它需要配置得当才能运行良好。监控,监控,监控,重要的事情要说三遍。

2017-08-17 08:41:49 4220

翻译 HotSpot JVM中的对象指针压缩

什么是一般对象指针?一般对象指针(oop, ordinary object pointer)是HotSpot虚拟机的一个术语,表示受托管的对象指针。它的大小通常和本地指针是一样的。Java应用程序和GC子系统会非常小心地跟踪这些受托管的指针,以便在销毁对象时回收内存空间。

2017-08-16 08:59:09 5252 2

翻译 贫血领域模型

贫血领域模型是一个存在已久的反模式,目前仍有许多拥趸者。一次我和Eric Evans聊天谈到它时,都觉得这个模型似乎越来越流行了。作为领域模型的推广者,我们觉得这不是一件好事。

2017-08-15 10:04:51 1033

原创 使用 Binlog 和 Canal 从 MySQL 抽取数据

数据抽取是 ETL 流程的第一步,我们常会需要从多个不同的 MySQL 实例中抽取数据,存入一个中心节点,或直接进入 Hive。借助 Canal 项目,我们能够通过 MySQL Binlog 进行数据抽取。

2017-08-14 08:39:08 72987 5

原创 使用Spring AOP向领域模型注入依赖

在贫血领域模型这篇译文中,Martin阐述了这种“反模式”的症状和问题,并引用了领域驱动设计中的话来说明领域模型和分层设计之间的关系。为了编写真正的领域模型,我们需要将业务逻辑移至模型对象中。

2017-08-13 08:13:21 4464

翻译 开发人员必知的5种开源框架

软件侵吞着世界已经四年多了,但开发人员看待软件的方式稍有不同。我们一直在致力于解决实际问题,而很少思考软件开发的基石。当问题变得更庞大、解决方案更复杂时,一些实用的、不怎么产生泄漏的抽象工具就显得越来越重要。简单地来说,在那些追求生产效率的开发者眼中,框架正在吞食着世界。那究竟是哪些框架、各自又在吞食着哪一部分呢?

2017-08-12 07:25:55 4152

原创 使用 WebSocket 和 Python 编写日志查看器

在生产环境运维工作中,查看线上服务器日志是一项常规工作。如果这项工作可以在浏览器中进行,而无需登录服务器执行 tail -f 命令,就太方便了。我们可以使用 WebSocket 技术轻松实现这一目标。在本文中,我将带各位一起使用 Python 编写一个日志查看工具。

2017-08-11 08:52:21 5888 1

原创 通过 SQL 查询学习 Pandas 数据处理

Pandas 是一款广泛使用的数据处理工具,我们可以在内存中进行高性能的数据清洗、转换、分析及可视化工作。虽然 Python 本身是一门非常容易学习的语言,但要熟练掌握 Pandas 丰富的 API 接口及正确的使用方式,还是需要投入一定时间的。对于数据开发工程师或分析师而言,SQL 语言是标准的数据查询工具。本文提供了一系列的示例,如何将常见的 SQL 查询语句使用 Pandas 来实现。

2017-08-10 08:49:07 7644 2

原创 使用 Crossfilter 和 dc.js 构建交互式报表

在对多维数据集进行图表分析时,我们希望在图表之间建立联系,选择图表中的一部分数据后,其他图表也会相应变动。这项工作可以通过开发完成,即在服务端对数据进行过滤,并更新所有图表。此外,我们还可以借助 Crossfilter 和 dc.js 这两个工具,直接在浏览器中对数据进行操作。

2017-08-09 08:49:31 3974

翻译 Hive+Druid 实现快速查询;回归分析是机器学习吗;StructuredStreaming 可用于生产环境

Hadoop 生态中,我们使用 Hive 将 SQL 语句编译为 MapReduce 任务,对海量数据进行操作;Druid 则是一款独立的分布式列式存储系统,通常用于执行面向最终用户的即席查询和实时分析。

2017-08-06 14:08:07 7567

原创 Apache Flume 如何解析消息中的事件时间

数据开发工作中,从上游消息队列抽取数据是一项常规的 ETL 流程。在基于 Hadoop 构建的数据仓库体系中,我们通常会使用 Flume 将事件日志从 Kafka 抽取到 HDFS,然后针对其开发 MapReduce 脚本,或直接创建以时间分区的 Hive 外部表。这项流程中的关键一环是提取日志中的事件时间,Flume 提供了诸多工具帮助我们实现这一点。

2017-08-06 09:23:14 2678

原创 Spark Streaming 中如何实现 Exactly-Once 语义

Exactly-once 语义是实时计算的难点之一。要做到每一条记录只会被处理一次,即使服务器或网络发生故障时也能保证没有遗漏,这不仅需要实时计算框架本身的支持,还对上游的消息系统、下游的数据存储有所要求。本文将讲述如何结合 Spark Streaming 框架、Kafka 消息系统、以及 MySQL 数据库来实现 Exactly-once 的实时计算流程。

2017-08-02 10:59:24 6162 1

空空如也

空空如也

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

TA关注的人

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