Apache Storm 官方文档 —— Trident State

原文链接    译者:魏勇

Trident 中含有对状态化(stateful)的数据源进行读取和写入操作的一级抽象封装工具。这个所谓的状态(state)既可以保存在拓扑内部(保存在内存中并通过 HDFS 来实现备份),也可以存入像 Memcached 或者 Cassandra 这样的外部数据库中。而对于 Trident API 而言,这两种机制并没有任何区别。

阅读全文

Apache Storm 官方文档 —— Trident API 概述

原文链接    译者:魏勇

Trident 的核心数据模型是“流”(Stream),不过与普通的拓扑不同的是,这里的流是作为一连串 batch 来处理的。流是分布在集群中的不同节点上运行的,并且对流的操作也是在流的各个 partition 上并行运行的。

阅读全文

Apache Storm 官方文档 —— Trident 教程

原文链接    译者:魏勇

Trident 是 Storm 的一种高度抽象的实时计算模型,它可以将高吞吐量(每秒百万级)数据输入、有状态的流式处理与低延时的分布式查询无缝结合起来。如果你了解 Pig 或者 Cascading 这样的高级批处理工具,你就会发现他们和 Trident 的概念非常相似。Trident 同样有联结(join)、聚合(aggregation)、分组(grouping)、函数(function)以及过滤器(filter)这些功能。Trident 为数据库或者其他持久化存储上层的状态化、增量式处理提供了基础原语。由于 Trident 有着一致的、恰好一次的语义,因此推断出 Trident 拓扑的状态也是一件很容易的事。

阅读全文

Velocity官方指南-使用Velocity

原文地址  译者:冷风  校对:方腾飞

如果你使用的是VelocityViewServlet或者其他的web框架,你不会直接调用到Velocity。但是,如果在非web的应用中或者自己编写的web框架时,你将会像上面说的基本流程一样直接调用到Velocity 引擎。另外一个需要记住的重点是,必须在使用Velocity合并模版之前,初始化Velocity引擎。

阅读全文

我是如何构建一个持续发展的项目

作者:张开涛

说起项目,每个程序员都应该搭建过自己的项目,而我也搭建过数十个企业级或互联网级项目;在做企业级项目时也抽象了一套通过的开发脚手架ES方便开发,也做过一些通用的代码生成工具来生成通用项目架子或一些CRUD的代码。做这些平台或项目的时候或多或少给我一些启示和原则,而这些启示和原则一直指导着我内心方向,时刻指导我不偏离航线。

阅读全文

京东技术架构(一)构建亿级前端读服务

作者:张开涛

从入职京东到现在,做读服务已经一年多的时间了,经历了各种亿级到百亿级的读服务;这段时间也进行了一些新的读服务架构尝试,从架构到代码的编写,各个环节都进行了反复尝试,压测并进行调优,希望得到一个自己满意的读服务架构。

阅读全文

Java Date Time 教程-java.util.Date

原文链接 作者:Jakob Jenkov  译者:魏嘉鹏

Javajava.util.Date类是Java最初的时间类之一。今天该类的大部分方法已不推荐使用,取而代之的是java.util.Calendar类。不过你仍然可以使用java.util.Date类去表示某个时间。下面是一个如何实例化java.util.Date的例子:
[code lang=”java”]
java.util.Date date = new java.util.Date();
[/code]
Date实例包含了当前时间作为它的日期和时间。
阅读全文

《Java并发编程的艺术》源码下载

封面立体图  作者:方腾飞,魏鹏,程晓明
《Java并发编程的艺术》纸质书购买地址=》天猫(价最低)  当当 京东  互动   亚马逊

《Java并发编程的艺术》电子书购买地址=》亚马逊
请使用JDK1.7及其以上版本编译源码,源码的任何问题可以通过评论告诉我们。

 

Apache Storm 官方文档 —— 理解 Storm 拓扑的并行度(parallelism)概念

原文链接    译者:魏勇

一个运行中的拓扑是由什么构成的:工作进程(worker processes),执行器(executors)和任务(tasks)

在一个 Storm 集群中,Storm 主要通过以下三个部件来运行拓扑:

  1. 工作进程(worker processes)
  2. 执行器(executors)
  3. 任务(tasks)

阅读全文

Apache Storm 官方文档 —— 容错性

原文链接    译者:魏勇

本文通过问答的形式解释了 Storm 的容错性原理。


工作进程(worker)死亡时会发生什么?

工作进程死亡的时候,supervisor 会重新启动这个进程。如果在启动过程中仍然一直失败,并且无法向 Nimbus 发送心跳,Nimbus 就会将这个 worker 重新分配到其他机器上去。

阅读全文

Apache Storm 官方文档 —— FAQ

原文链接    译者:魏勇

Storm 最佳实践

关于配置 Storm + Trident 的建议

  • worker 的数量最好是服务器数量的倍数;topology 的总并发度(parallelism)最好是 worker 数量的倍数;Kafka 的分区数(partitions)最好是 Spout(特指 KafkaSpout)并发度的倍数
  • 在每个机器(supervisor)上每个拓扑应用只配置一个 worker
  • 在拓扑最开始运行的时候设置使用较少的大聚合器,并且最好是每个 worker 进程分配一个
  • 使用独立的调度器(scheduler)来分配任务(关于Scheduler 的知识请参考 xumingming 的博客 —— 译者注)
  • 在每个 worker 上只配置使用一个 acker —— 这是 0.9.x 版本的默认特性,不过在早期版本中有所不同
  • 在配置文件中开启 GC 日志记录;如果一切正常,日志中记录的 major GC 应该会非常少
  • 将 trident 的 batch interval 配置为你的集群的端到端时延的 50% 左右
  • 开始时设置一个很小的 TOPOLOGY_MAX_SPOUT_PENDING(对于 trident 可以设置为 1,对于一般的 topology 可以设置为 executor 的数量),然后逐渐增大,直到数据流不再发生变化。这时你可能会发现结果大约等于 “2 × 吞吐率(每秒收到的消息数) × 端到端时延” (最小的额定容量的2倍)。

阅读全文

Apache Storm 官方文档 —— 命令行操作

原文链接    译者:魏勇

本文介绍了 Storm 命令行客户端中的所有命令操作。如果想要了解怎样设置你的 Strom 客户端和远程集群的交互,请按照配置开发环境一文中的步骤操作。

阅读全文

Apache Storm 官方文档 —— 消息的可靠性保障

原文链接    译者:魏勇

Storm 能够保证每一个由 Spout 发送的消息都能够得到完整地处理。本文详细解释了 Storm 如何实现这种保障机制,以及作为用户如何使用好 Storm 的可靠性机制。

阅读全文

Apache Storm 官方文档 —— 配置

原文链接    译者:魏勇

Storm 有大量配置项用于调整 nimbus、supervisors 和拓扑的行为。有些配置项是系统级的配置项,在拓扑中不能修改,另外一些配置项则是可以在拓扑中修改的。

每一个配置项都在 Storm 代码库的 defaults.yaml 中有一个默认值。可以通过在 Nimbus 和 Supervisors 的环境变量中定义一个 storm.yaml 来覆盖默认值。最后,在使用 StormSubmitter 提交拓扑时也可以定义基于具体拓扑的配置项。但是,基于拓扑的配置项仅仅能够覆盖那些以 “TOPOLOGY” 作为前缀的配置项。

阅读全文

Apache Storm 官方文档 —— 基础概念

原文链接    译者:魏勇

Storm 系统中包含以下几个基本概念:

  1. 拓扑(Topologies)
  2. 流(Streams)
  3. 数据源(Spouts)
  4. 数据流处理组件(Bolts)
  5. 数据流分组(Stream groupings)
  6. 可靠性(Reliability)
  7. 任务(Tasks)
  8. 工作进程(Workers)

译者注:由于 Storm 的几个基础概念无论是直译还是意译均不够清晰,而且还会让习惯了 Storm 编程模型的读者感到困惑,因此后文在提及这些概念时大多还会以英文原文出现,希望大家能够谅解。

阅读全文

return top