IT界从来不缺少浮躁,现在什么公司都说大数据,好像不搞这个显得自己很落后似的。但是什么是大数据?多大的数据才是大数据?用什么工具去解决多大的数据?
下面这篇文章的观点很好,我比较认同。其中它提到,超过5T的数据建议使用hadoop。其实从hadoop的计算架构来看,这也是合理的,因为经过测试,小而多的数据文件进行计算,效率非常差。大而少的文件嫩更充分利用hadoop计算架构的优势。
最后想提一下的是,综合全文观点,是否直接采用spark就能解决所有问题?因为spark除了兼容hadoop的计算模外,还具有极高的性能去兼容各种hadoop所不能计算的场景。
文章出处:http://www.36dsj.com/archives/22748
有人问我,“你在大数据和Hadoop方面有多少经验?”我告诉他们,我一直在使用Hadoop,但是我处理的数据集很少有大于几个TB的。
他们又问我,“你能使用Hadoop做简单的分组和统计吗?”我说当然可以,我只是告诉他们我需要看一些文件格式的例子。
他们递给我一个包含600MB数据的闪盘,看起来这些数据并非样本数据,由于一些我不能理解的原因,当我的解决方案涉及到pandas.read_csv文件,而不是Hadoop,他们很不愉快。
Hadoop实际上是有很多局限的。Hadoop允许你运行一个通用的计算,下面我用伪码进行说明:
目标:计算图书馆书籍的数量
Map:你统计奇数书架上书的数量,我统计偶数书架上书的数量。(人越多,统计越快)
Reduce:把我们单独统计后的数据加在一起。
我们所做的只有两个:F(k,v)和G(k,v),除开在中间步骤中的性能优化,一切都是固定的。
它会迫使你在Map中进行所有的计算,分组和统计,执行运算的方式像是穿上了紧身衣,其实很多计算更适合选用其它模型。穿上紧身衣的唯一原因是这可能会扩展到非常大的数据集上,而大多数情况下,你的数据量可能会小几个数量级。
但是由于“大数据”和“Hadoop”这两个热门词,即使很多人实际上不需要Hadoop,他们也愿意穿上“紧身衣”。
一、如果我的数据量是几百兆,Excel可能没法加载它
对 于Excel软件来说的“很大的数据”并非大数据,其实还有其它极好的工具可以使用——我喜欢的Pandas。Pandas构建于Numpy库之上,可以 以矢量格式的方式有效地把数百兆的数据载入到内存中。在我购买已3年的笔记本上,它可以用Numpy在一眨眼的功夫把1亿的浮点数乘在一起。Matlab 和R也是极好的工具。
对于几百兆的数据量,典型的做法是写一个简单的Python脚本按行读取文件行,并处理它,向另一个文件写入。
二、如果我的数据是10GB呢
我 买了个新笔记本,它有16GB的内存和256GB的SSD。如果你要载入一个10GB的CSV文件到Pandas,它占用的内存实际上是很小的——其结果 是以数字类型的字符串保存的,如“17284832583”作为4字节货8字节的整数,或存储“284572452.2435723”字符串作为8字节的 双精度浮点数。
最坏的情况是你或许不能把所有的数据都同时载入到内存中。
三、如果我的数据是100GB、500GB或1TB呢
买个2TB或4TB的硬盘,在桌面PC或服务器上安装一个Postgre来解决它。
四、Hadoop远远比不上SQL或Python脚本
在计算的表达方面,Hadoop弱于SQL,也弱于Python脚本。
SQL是一个很直接的查询语言,适合做业务分析,SQL的查询相当简单,而且还非常快——如果你的数据库使用了正确的索引,二级查询或多级查询另当别论。
Hadoop没有索引的概念,Hadoop只有全表扫描,Hadoop有高度泄露抽象——我花了很多时间来处理Java的内存错误、文件碎片以及集群竞争,这些时间远大于我花在数据分析上的时间。
如果你的数据并不是像SQL表那样的结构化数据(比如纯文本、JSON对象、二进制对象),通常是直接写一个小的Python脚本来按行处理你的数据。把数据存储于文件,处理每一个文件,等等。如果换成是Hadoop就很麻烦。
相 比于SQL或Python脚本,Hadoop要慢的多。正确的使用索引后,SQL查询总是非快——PostgreSQL简单的查找索引,检索确切的键值。 而Hadoop是全表扫描的,它会把整个表进行重新排序。通过把数据表分片到多台计算机上后,重排序是很快的。另一方面,处理二进制对象,Hadoop需 要重复往返于命名节点,目的是查找和处理数据。这适合用Python脚本来实现。
五、我的数据超过了5TB
你应该考虑使用Hadoop,而无需做过多的选择。
使用Hadoop唯一的好处是可伸缩性非常好。如果你有一个包含了数TB数据的表,Hadoop有一个适合全表扫描的选项。如果你没有这样大数据量的表,那么你应该像躲避瘟疫那样避免使用Hadoop。这样使用传统的方法来解决问题会更轻松。
六、Hadoop是一个极好的工具
我并不讨厌Hadoop,当我用其它工具不能很好处理数据时我会选择Hadoop。另外,我推荐使用Scalding,不要使用Hive或Pig。Scalding支持使用Scala语言来编写Hadoop任务链,隐藏了其下的MapReduce。
相关推荐
这份原创的“Hadoop使用文档”深入浅出地介绍了如何安装Hadoop,并详细讲解了如何运用MapReduce进行分布式计算以及如何操作HDFS(Hadoop Distributed File System)进行数据存储。 **一、Hadoop安装** 1. **环境...
Hadoop是一种开源框架,它使用简单易学的编程模型,支持数据密集型分布式应用的运行。它允许用户在由普通硬件组成的大型集群上存储和处理大量的数据集。对于新手来说,Hadoop学习之旅通常包括安装基础组件、掌握Hive...
3. "细细品味Hadoop_Hadoop集群(第4期)_SecureCRT使用.pdf":SecureCRT是一款远程终端工具,用于SSH连接,文件可能教读者如何使用SecureCRT来管理Hadoop集群中的节点。 4. "细细品味Hadoop_Hadoop集群(第5期)_...
Hadoop课题笔记(原创
3. **YARN(Yet Another Resource Negotiator)**:在Hadoop 2.x版本中引入,作为资源管理器,负责集群中的任务调度和资源分配,将原本在MapReduce中的资源管理和计算任务分离,提高了系统的灵活性和效率。...
hadoop学习笔记,分天学习,原创,亲测,放心使用,没问题。
【原创学士学位毕业论文,未入库可过查重】万字原创,基于Hadoop架构类的学位毕业论文,适合本科专科毕业生使用。 内容概要: 本论文以Hadoop架构为基础,深入研究了其在大数据处理和分析方面的应用。通过对Hadoop...
- 在`${HADOOP_HOME}/etc/hadoop`目录下编辑以下文件: - `hadoop-env.sh` - `mapred-env.sh` - `yarn-env.sh` - 在这些文件中配置`JAVA_HOME`环境变量: ```bash export JAVA_HOME=/opt/modules/jdk1.7.0_67 ...
Hadoop完全分布式环境搭建文档,绝对原创,并且本人亲自验证并使用,图文并茂详细介绍了hadoop完全分布式环境搭建所有步骤,条例格式清楚,不能成功的,请给我留言!将给与在线支持!
其核心组件是Hadoop Distributed File System(HDFS),一个高度容错性的分布式文件系统,旨在运行在廉价硬件上。这篇博文将深入探讨HDFS的构架和设计原理。 **1. HDFS设计目标** HDFS的设计目标是提供高吞吐量的...
2、大数据环境-安装Hadoop2.5.2伪分布式傻瓜教程 原创
小白搭建hadoop完全分布式环境笔记,步骤详细,原创
在提供的文档中,"hadoop安装实例(原创最终版).doc"详细介绍了Hadoop的安装过程;"细细品味Hadoop_Hadoop集群(第2期)_机器信息分布表.pdf"可能包含了集群中各节点的配置信息;"细细品味Hadoop_Hadoop集群(第5期...
《Hadoop实战》作为云计算所青睐的分布式架构,Hadoop是一个用Java语言实现的软件框架,在由大量计算机组成的集群中运行海量数据的分布式计算,是谷歌实现云计算的重要基石。《Hadoop实战》分为3个部分,深入浅出地...
《基于Hadoop大数据集群的搭建》是一篇针对计算机科学与技术、软件工程等领域学生的原创学士学位毕业论文,深入探讨了Hadoop架构在大数据处理和分析中的应用。Hadoop是Apache开源项目,它提供了一个分布式文件系统...
《Hadoop MapReduce Cookbook》是一本针对大数据处理专家和开发者的实用指南,详细阐述了如何使用Hadoop MapReduce框架分析大规模复杂数据集。Hadoop是大数据处理领域的核心工具之一,尤其擅长处理海量数据集,而...
【基于Hadoop的海量图像检索】是一篇深入探讨Hadoop在大数据处理和分析领域的应用的原创学士学位毕业论文,适合计算机科学与技术、软件工程等专业的学生阅读。该论文全面解析了Hadoop架构,包括其核心组件、工作原理...
《基于Hadoop的列车管理系统设计》是一篇深入探讨Hadoop在大数据处理和分析中的应用的原创学士学位毕业论文。该论文以Hadoop为核心,详细阐述了其在数据存储、计算和处理上的优势和挑战,同时也通过实际的列车管理...
实验的目标是让学习者深入理解Hadoop的项目结构,熟悉安装流程,并掌握分布式集群的配置和使用。实验过程中,学生需要独立完成报告的撰写,确保内容的真实性和原创性。 实验的具体任务是在CentOS 6操作系统上建立一...