别老扯什么Hadoop了,你的数据根本不够大

标签: hadoop 数据 | 发表时间:2013-09-18 11:39 | 作者:
出处:http://www.iteye.com
本文原名 “Don't use Hadoop when your data isn't that big ”,出自有着多年从业经验的数据科学家 Chris Stucchio,纽约大学柯朗研究所博士后,搞过高频交易平台,当过创业公司的CTO,更习惯称自己为统计学者。对了,他现在自己创业,提供数据分析、推荐优化咨询服务,他的邮件是:[email protected]

“你有多少大数据和Hadoop的经验?”他们问我。我一直在用Hadoop,但很少处理几TB以上的任务。我基本上只是一个大数据新手——知道概念,写过代码,但是没有大规模经验。

接下来他们会问:“你能用Hadoop做简单的group by和sum操作吗?”我当然会,但我会说需要看看具体文件格式。

他们给我一个U盘,里面有所有的数据,600MB,对,他们所有的数据。不知道为什么,我用 pandas.read_csvPandas是一种Python数据分析库)而不是Hadoop完成了这个任务后,他们显得很不满意。

Hadoop其实是挺局限的。它无非是运行某个通用的计算,用SQL伪代码表示就是: SELECT G(...) FROM table GROUP BY F(...) 你只能改变G和F操作,除非要在中间步骤做性能优化(这可不怎么好玩!)。其他一切都是死的。

(关于MapReduce,之前作者写过一篇 “41个词讲清楚MapReduce”,可以参考。)

Hadoop里,所有计算都必须按照一个map、一个group by、一个aggregate或者这种计算序列来写。这和穿上紧身衣一样,多憋得慌啊。许多计算用其他模型其实更适合。忍受紧身衣的唯一原因就是,可以扩展到极大极大的数据集。可你的数据集实际上很可能根本远远够不上那个数量级。

可是呢,因为Hadoop和大数据是热词,世界有一半的人都想穿上紧身衣,即使他们根本不需要。

可我的数据有好几百MB呢!Excel都装不下

对Excel很大可不是什么大数据。有很多好工具——我喜欢用的是基于 Numpy的Pandas。它可以将几百MB数据以高效的向量化格式加载到内存,在我已经3年的老笔记本上,一眨眼的功夫,Numpy就能完成1亿次浮点计算。Matlab和R也是很棒的工具。

数百MB数据一般用一个简单的Python脚本逐行读取文件、处理,然后写到了一个文件就行了。

可我的数据有10G呢!

我刚买了一台笔记本电脑。16G内存花了141.98美元,256GB SSD多收200美元。另外,如果在Pandas里加载一个10GB的csv文件,实际在内存里并没有那么大——你可以将 “17284932583” 这样的数值串存为4位或者8位整数,“284572452.2435723”存为8位双精度。

最差情况下,你还可以不同时将所有数据都一次加载到内存里。

可我的数据有100GB/500GB/1TB!

一个2T的硬盘才94.99美元,4T是169.99。买一块,加到桌面电脑或者服务器上,然后装上PostgreSQL。

Hadoop的适用范围远小于SQL和Python脚本

从计算的表达能力来说,Hadoop比SQL差多了。Hadoop里能写的计算,在SQL或者简单的Python脚本都可以更轻松地写出来。

SQL是直观的查询语言,没有太多抽象,业务分析师和程序员都很常用。SQL查询往往非常简单,而且一般也很快——只要数据库正确地做了索引,要花几秒钟的查询都不太多见。

Hadoop没有任何索引的概念,它只知道全表扫描。而且Hadoop抽象层次太多了——我之前的项目尽在应付Java内存错误、内存碎片和集群竞用了,实际的数据分析工作反而没了时间。

如果你的数据结构不是SQL表的形式(比如纯文本、JSON、二进制),一般写一小段Python或者Ruby脚本按行处理更直接。保存在多个文件里,逐个处理即可。SQL不适用的情况下,从编程来说Hadoop也没那么糟糕,但相比Python脚本仍然没有什么优势。

除了难以编程,Hadoop还一般总是比其他技术方案要慢。只要索引用得好,SQL查询非常快。比如要计算join,PostgreSQL只需查看索引(如果有),然后查询所需的每个键。而Hadoop呢,必须做全表扫描,然后重排整个表。排序通过多台机器之间分片可以加速,但也带来了跨多机数据流处理的开销。如果要处理二进制文件,Hadoop必须反复访问namenode。而简单的Python脚本只要反复访问文件系统即可。

可我的数据超过了5TB!

你的命可真苦——只能苦逼地折腾Hadoop了,没有太多其他选择(可能还能用许多硬盘容量的高富帅机器来扛),而且其他选择往往贵得要命(脑海中浮现出IOE等等字样……)。

用Hadoop唯一的好处是扩展。如果你的数据是一个数TB的单表,那么全表扫描是Hadoop的强项。此外的话,请关爱生命,尽量远离Hadoop。它带来的烦恼根本不值,用传统方法既省时又省力。

Via CSDN极客头条

感谢 WnouM 投递这篇资讯

资讯来源: CSDN极客头条

已有 2 人发表留言,猛击->> 这里<<-参与讨论


ITeye推荐



相关 [hadoop 数据] 推荐:

Hadoop的数据管理

- - 技术改变世界 创新驱动中国 - 《程序员》官网
本文主要介绍Hadoop的数据管理,主要包括Hadoop的分布式文件系统HDFS、分布式数据库HBase和数据仓库工具Hive. HDFS是分布式计算的存储基石,Hadoop分布式文件系统和其他分布式文件系统有很多类似的特性:. 对于整个集群有单一的命名空间;. 具有数据一致性,都适合一次写入多次读取的模型,客户端在文件没有被成功创建之前是无法看到文件存在的;.

大数据架构hadoop

- - CSDN博客云计算推荐文章
摘要:Admaster数据挖掘总监 随着互联网、移动互联网和物联网的发展,谁也无法否认,我们已经切实地迎来了一个海量数据的时代,数据调查公司IDC预计2011年的数据总量将达到1.8万亿GB,对这些海量数据的分析已经成为一个非常重要且紧迫的需求. 随着互联网、移动互联网和物联网的发展,谁也无法否认,我们已经切实地迎来了一个海量数据的时代,数据调查公司IDC预计2011年的数据总量将达到1.8万亿GB,对这些海量数据的分析已经成为一个非常重要且紧迫的需求.

微软数据库拥抱Hadoop

- Adam - Solidot
在西雅图举行的PASS峰会上,微软副总裁Ted Kumert宣布,Hadoop分布式计算平台将整合到下一个版本的关系数据库SQL Server 2012、Windows Server 和Azure中. Hadoop是一个顶级Apache开源项目,雅虎是最主要的贡献者,主要被应用于分析大容量数据集. 整合Hadoop将让微软的客户能分析和处理大数量的非结构化数据.

Apache Sqoop 1.4.3 发布,Hadoop 数据迁移

- - 开源中国社区最新新闻
Sqoop是一个用来将 Hadoop和关系型数据库中的数据相互转移的工具,可以将一个关系型数据库(例如 : MySQL ,Oracle ,Postgres等)中的数据导入到Hadoop的HDFS中,也可以将HDFS的数据导入到关系型数据库中. Sqoop 1.4.3 完整的改进记录请看 这里. 下载地址: http://www.apache.org/dyn/closer.cgi/sqoop/.

Hadoop 添加数据节点(datanode)

- - CSDN博客云计算推荐文章
在hadoop集群中添加一个新增数据节点. 同样在其它各节点都添加新的server123服务器. ->在新节点上生成自己的密钥. ->把原集群中的密钥复制添加到新节点的密钥当中. ->再把新节点上的新密钥复制(覆盖)到原集群中的新节点. --首先,为了避免误操作,操作之前要先备份原集群的密钥文件. 2014年 02月 12日 星期三 11:31:08 CST.

利用hadoop mapreduce 做数据排序

- - zzm
我们的需求是想统计一个文件中用IK分词后每个词出现的次数,然后按照出现的次数降序排列. 由于hadoop在reduce之后就不能对结果做什么了,所以只能分为两个job完成,第一个job统计次数,第二个job对第一个job的结果排序. 第一个job的就是hadoop最简单的例子countwords,我要说的是用hadoop对结果排序.

Hadoop初体验――搭建hadoop简单实现文本数据全局排序

- - 学着站在巨人的肩膀上
      手头上有三台配置一样的电脑,就不去装虚拟机了,配置如下:.       三台电脑装有相同的操作系统――Ubuntu 11.04.       任选一台机器作为master,其他机器作为slaves,所有机器拥有相同的用户、相同的环境变量配置、相同的hadoop目录结构、相同的Java目录结构.

MySQL添加Hadoop数据实时复制功能

- - searchdatabase
  MySQL复制操作可以将数据从一个MySQL服务器(主)复制到其他的一个或多个MySQL服务器(从). 试想一下,如果从服务器不再局限为一个MySQL服务器,而是其他任何数据库服务器或平台,并且复制事件要求实时进行,是否可以实现呢?.   MySQL团队最新推出的 MySQL Applier for Hadoop(以下简称Hadoop Applier)旨在解决这一问题.

Hadoop掀起大数据革命 三巨头齐发力

- - 慕容鱼吐的新闻泡
导读:开源的数据处理平台凭借其低成本、高扩展性和灵活性的优势已经赢得了多数网络巨头的认可. 现在Hadoop将进入更多企业. IBM将在明年推出内置NoSQL技术的DB2旗舰级数据库管理系统. 上个月Oracle和Microsoft也分别透露了将计划在明年发布基于Hadoop的产品. 两家公司都计划提供协助部署服务和企业级支持.

Kylin:基于Hadoop的开源数据仓库OLAP分析引擎

- - 标点符
Kylin是一个开源、分布式的OLAP分析引擎,它由eBay公司开发,并且基于Hadoop提供了SQL接口和OLAP接口,能够支持TB到PB级别的数据量. OLAP即联机分析处理,它能够帮助分析人员、管理人员或执行人员从多角度快速、一致、交互地存取信息和更加深入的了解信息. OLAP的目标是满足决策支持或者满足在多维环境下特定的查询和报表需求.