大数据 ’ 目录归档

颠覆大数据分析之类似Spark的系统

颠覆大数据分析之类似Spark的系统

译者:黄经业    购书

Nectar (Gunda 等2010),HaLoop (Bu 等2010),以及Twister(Ekanayake等2010)都是类似于Spark的系统。HaLoop是修改后的Hadoop,它增加了一个支持循环的任务调度器以及一定的缓存机制。缓存一方面是用于缓存映射器的循环数据变量,另一方面是用于缓存归约器的输出以便使得终止条件判断可以更高效地进行。Twister提供了订阅-发布的设施来实现一个广播的结构,同时它还能在历次迭代间指定及缓存静态数据。Twister和HaLoop都是扩展MR范式以支持迭代式运算的很有意思的实现。然而它们只能算是学术项目,并没有提供稳定的实现版本。除此之外,Spark通过世系所提供的容错性要比Twister和HaLoop所提供的要更先进和高效。另一个重要的不同在于Spark的编程模型更加通用,map和reduce只是它所支持的众多结构中的一组而已。它还有许多更强大的结构,包括reduceByKey以及前面所提到的一些。 阅读全文

颠覆大数据分析之Shark:分布式系统上的SQL接口

颠覆大数据分析之Shark:分布式系统上的SQL接口

译者:黄经业    购书

内存计算已经成为了海量数据分析的一个重要范式。这一点可以从两个方面来进行理解。一方面,尽管当要查询的数据达到了PB级,但是由于时间和空间的局限性,在一个集群环境上仅需64GB的缓存就能够满足绝大多数的查询(95%)。Ananthanarayanan等人在一次研究中发现了这点。另一方面,由于机器学习算法需要在数据的工作集上进行迭代,如果工作数据集在内存中,它的实现会变得非常高效。Shark本质上可以看作是一个内存型的分布式SQL系统。

Shark基于Spark提供了SQL接口。Shark的主要特性就是它的SQL接口以及它能够基于机器学习来进行分析的能力,同时还有它为SQL查询和机器学习算法所提供的细粒度的容错性。对于查询而言,即使是粗粒度的RDD也能工作得很好,因为Shark可以从失败中进行恢复,它会去重新构造集群中丢失的RDD分区。这个恢复是细粒度的,这意味着它可以在查询的过程中进行恢复,并不像并行数据库系统那样得重新执行整个查询。

颠覆大数据分析之Spark弹性分布式数据集

颠覆大数据分析之Spark弹性数据集

译者:黄经业    购书

Spark中迭代式机器学习算法的数据流可以通过图2.3来进行理解。将它和图2.1中Hadoop MR的迭代式机器学习的数据流比较一下。你会发现在Hadoop MR中每次迭代都会涉及HDFS的读写,而在Spark中则要简单得多。它仅需从HDFS到Spark中的分布式共享对象空间的一次读入——从HDFS文件中创建RDD。RDD可以重用,在机器学习的各个迭代中它都会驻留在内存里,这样能显著地提升性能。当检查结束条件发现迭代结束的时候,会将RDD持久化,把数据写回到HDFS中。后续章节会对Spark的内部结构进行详细介绍——包括它的设计,RDD,以及世系等等。

阅读全文

跟着实例学习ZooKeeper的用法: 分布式锁

分布式的锁全局同步, 这意味着任何一个时间点不会有两个客户端都拥有相同的锁。

可重入锁Shared Reentrant Lock

首先我们先看一个全局可重入的锁。 Shared意味着锁是全局可见的, 客户端都可以请求锁。 Reentrant和JDK的ReentrantLock类似, 意味着同一个客户端在拥有锁的同时,可以多次获取,不会被阻塞。 它是由类InterProcessMutex来实现。 它的构造函数为:

public InterProcessMutex(CuratorFramework client, String path)

阅读全文

云架构和openstack的思考

作者:罗立树

最近在负责公司内部私有云的建设,一直在思考怎么搞云计算,怎么才能够把云架构设计得好一些。

本文章主要内容:

1. 行业生态

2. 从需求角度看云

3. 云计算概述

4. 云建设的关键问题

5. 私有云架构规划
阅读全文

大数据分析:机器学习算法实现的演化

本文翻译自《BIG DATA ANALYTICS BEYOND HADOOP

我将会对机器学习算法的不同的实现范式进行讲解,既有来自文献中的,也有来自开源社区里的。首先,这里列出了目前可用的三代机器学习工具。

阅读全文

超越Hadoop的大数据分析之第一章介绍:为什么超越Hadoop Map-Reduce

本文翻译自《BIG DATA ANALYTICS BEYOND HADOOP》译者:吴京润
译者注:本文是本书第一章的开头,第一章其它部分由其他人翻译。

你可能是一个视频服务提供商,而你想基于网络环境动态的选择合适的内容分发网络来优化终端用户的体验。或者你是一个政府监管机构,需要为互联网页进行色情或非色情的分类以便过滤色情页面,同时还要做到高吞吐量以及实时性。或者你是一个通讯/移动服务提供商——要么你在这样的公司工作——而你担心客户流失(客户流失意味着,老用户离开而选择竞争对手,或者新用户加入竞争对手)。你一定非常想知道前一天有哪些客户在tweeter上抱怨你的服务。或者你是个零食店主,而你非常想对你的客户做购买预测,这样你就可以为你商品做更多有针对性的促销活动,并期望销售额由此带来的增长。或者你是一家医疗保险公司,当务之急是计算某位客户明年住院的概率,以便适当的修改的保费。或者你是一家金融产品公司的CTO,而公司希望拥有实时交易/预测算法,帮助确认损益表底线。或者你为一家电子制造公司工作,而你想在试运行期间预测故障、查明故障根源,以便在后来的实际运行中有效。这要归功于大数据分析创造的新世界。 阅读全文

超越Hadoop的大数据分析之前言

本文翻译自《BIG DATA ANALYTICS BEYOND HADOOP》译者:吴京润 校对:方腾飞

我试图给人们学习大数据留下的一点深刻印象:尽管Apache Hadoop很有用,而且是一项非常成功的技术,但是这一观点的前提已经有些过时了。考虑一下这样一条时间线:由谷歌实现的MapReduce投入使用的时间可追溯到2002年,发表于2004年。Yahoo!于2006年发起Hadoop项目。MR是基于十年前的数据中心的经济上的考虑。从那时以来,已经有太多的东西发生了变化:多核心处理器、大内存地址空间、10G网络带宽、SSD,而至今,这已经产生足够的成本效益。这些极大改变了在构建可容错分布式商用系统规模方面的取舍。 阅读全文

《Storm入门》中文版

本文翻译自《Getting Started With Storm》译者:吴京润    编辑:郭蕾 方腾飞

本书的译文仅限于学习和研究之用,没有原作者和译者的授权不能用于商业用途。

译者序

Storm入门终于翻译完了。首先感谢并发编程网同意本人在网站上首发本书译文,同时还要感谢并发编程网的各位大牛们的耐心帮助。这是本人翻译的第一本书,其中必有各种不足请诸位读者朋友不吝斧正。

译完此书之后,我已经忘记了是如何知道的Storm这个工具了。本人读过的所有技术书籍大部分都是在地铁上完成的,现在已经成了习惯。最近发现自己有一阵子没有看书,那个时候大数据已经相当火热,我就想找一些讲大数据分析的书来读一读,虽然一直没有机会接触大数据的工作,不过做一些技术储备也是好的。于是上谷歌和亚马逊用“大数据”、“实时分析”这类关键词搜索相关的技术文章和书籍。然后就知道了Storm,可惜一直没有找到中文的相关内容,只找到这一本《Getting Started with Storm》。可惜本人英文词汇量实在太少,书买来之后一直束之高阁,后来突发奇想我为什么不利用业余时间把这本书翻译了呢?于是由本人完成的《Getting Started with Storm》在并发编程网面世了。在本人之前已有人在CSDN上完成了本书除附录以外的全部翻译,并且有了PDF版。不过既然已经开始就不忍中途放弃了,所以一直坚持把本书译完。再次感谢并发编程网的朋友们的支持。

阅读全文

Storm入门之附录C

本文翻译自《Getting Started With Storm》译者:吴京润    编辑:郭蕾 方腾飞

安装实际的例子

译者注:有些软件的最新版本已有变化,译文不会完全按照原文翻译,而是列出当前最新版本的软件。

首先,从下述GitHub的URL克隆这个例子:

阅读全文

Storm入门之附录B

本文翻译自《Getting Started With Storm》译者:吴京润    编辑:郭蕾 方腾飞

安装Storm集群

译者注:本附录的内容已经有些陈旧了。最新的Storm已不再必须依赖ZeroMQ,各种依赖的库和软件也已经有更新的版本。

阅读全文

Storm入门之附录A

本文翻译自《Getting Started With Storm》译者:吴京润    编辑:郭蕾 方腾飞

安装Storm客户端

Storm客户端能让我们使用命令管理集群中的拓扑。按照以下步骤安装Storm客户端:

  1. 从Storm站点下载最新的稳定版本(https://github.com/nathanmarz/storm/downloads)当前最新版本是storm-0.8.1。(译者注:原文是storm-0.6.2,不过翻译的时候已经是storm-0.8.1了)
  2. 把下载的文件解压缩到/usr/local/bin/storm的Storm共享目录。
  3. 把Storm目录加入PATH环境变量,这样就不用每次都输入全路径执行Storm了。如果我们使用了/usr/local/bin/storm,执行export PATH=$PATH:/usr/local/bin/storm
  4. 最后,创建Storm本地配置文件:~/.storm/storm.yaml,在配置文件中按如下格式加入nimbus主机:

[code lang=”yaml”]
      nimbus.host:"我们的nimbus主机"
[/code]

阅读全文

Storm入门之第8章事务性拓扑

本文翻译自《Getting Started With Storm》译者:吴京润    编辑:郭蕾 方腾飞

正如书中之前所提到的,使用Storm编程,可以通过调用ack和fail方法来确保一条消息的处理成功或失败。不过当元组被重发时,会发生什么呢?你又该如何砍不会重复计算?

 

Storm0.7.0实现了一个新特性——事务性拓扑,这一特性使消息在语义上确保你可以安全的方式重发消息,并保证它们只会被处理一次。在不支持事务性拓扑的情况下,你无法在准确性,可扩展性,以空错性上得到保证的前提下完成计算。

 

阅读全文

Storm入门之第7章使用非JVM语言开发

本文翻译自《Getting Started With Storm》译者:吴京润    编辑:郭蕾 方腾飞

有时候你可能想使用不是基于JVM的语言开发一个Storm工程,你可能更喜欢使用别的语言或者想使用用某种语言编写的库。

Storm是用Java实现的,你看到的所有这本书中的spoutbolt都是用java编写的。那么有可能使用像Python、Ruby、或者JavaScript这样的语言编写spoutbolt吗?答案是当然

 

可以!可以使用多语言协议达到这一目的。

多语言协议是Storm实现的一种特殊的协议,它使用标准输入输出作为spoutbolt进程间的通讯通道。消息以JSON格式或纯文本格式在通道中传递。

我们看一个用非JVM语言开发spoutbolt的简单例子。在这个例子中有一个spout产生从1到10,000的数字,一个bolt过滤素数,二者都用PHP实现。

阅读全文

Storm入门之第6章一个实际的例子

本文翻译自《Getting Started With Storm》译者:吴京润    编辑:郭蕾 方腾飞

本章要阐述一个典型的网络分析解决方案,而这类问题通常利用Hadoop批处理作为解决方案。与Hadoop不同的是,基于Storm的方案会实时输出结果。

 

 

我们的这个例子有三个主要组件(见图6-1)

  • 一个基于Node.js的web应用,用于测试系统
  • 一个Redis服务器,用于持久化数据
  • 一个Storm拓扑,用于分布式实时处理数据

阅读全文

return top