【数据蒋堂】第 47 期:Hadoop – 一把杀鸡用的牛刀
Hadoop 是个庞大的重型解决方案,它的设计目标本来就是大规模甚至超大规模的集群,面对的是上百甚至上千个节点,这样就会带来两个问题:
1.自动化管理管任务分配机制:这样规模的集群,显然不大可能针对每个节点提供个性化的管理控制,否则工作量会大到累死人,必须采用自动化的管理和任务分配手段,而这并不是件简单的事情。
2.强容错能力:大规模集群在某个任务执行周期内,也就是几小时之内,都有可能发生设备故障。如果没有强容错能力可能任何任务都无法执行出来。而容错同样并不容易实现,同样非常消耗计算和存储资源。
而且,Hadoop 的产品线丰富,这本来是好事情,但要把这些模块都放在一个平台上运行,还要梳理好各个模块之间的相互依赖性,就需要一个包罗万象的复杂框架,这也使得 Hadoop 体系显得很沉重。
但是,很多情况下,用户的数据并不总会有那么多。除了一些互联网巨头企业和国家级通信运营商及银行外,大多数用户的数据量并没有大到需要几百上千个节点才能处理的地步。而且,很多用户也只是为了常规的结构化数据运算(主要也就是 SQL),用不着那么完整的产品线。
结果,我们经常看到的现象是:用户上了 Hadoop,只有四个或八个节点,多的也就十来个,而且也只是安装个 Hive(或别的类似解决方案)来跑跑 SQL。
这就是“杀鸡用牛刀了”!
为什么会这样?
道理很简单。现在大数据平台是个业界趋势,而经过几年的宣传,用户都觉得传统关系数据库不再是未来的方向,即使现在还能用,但总觉得继续投资在关系数据库上就有被时代甩下的风险,于是都想去尝试新技术。但找来找去,也只有 Hadoop 勉强可用了,选择 Hadoop 变成一个政治正确的事情了。
那么,选用 Hadoop 有什么不好呢?牛刀就牛刀,牛刀也可以用来杀鸡,反正它开源不要钱,
不是这样的。虽然 Hadoop 软件本身是开源免费的(其实很多用户上的是商业公司的产品,本来也并不便宜),但因为它的复杂性,想配置用好它并不容易,维护支持的成本一点也不低。Hadoop 事实上是个高端产品,并不很适合数据量规模没有大到需要上百节点的中小用户。
大集群和小集群的实现技术是完全不一样的,Hadoop 为了解决大集群问题而付出的努力并不是没有成本的。
统一的自动化管理机制固然让管理工作变简单了,但也限制了程序员的灵活性。开发人员只能去适应,难以写出适合业务和数据特征的代码,这样无法发挥机器的最大效能。比如想控制 HDFS 的文件冗余方案,让不同文件的冗余数不同,而特定的冗余方案能有效地减少网络传输量从而提高性能。这也许能够通过修改 Hadoop 源码来实现,但并不轻松,而且随意修改底层源码又会影响升级。
对于小规模的集群,则没有必要采用统一管理方式,可以针对每个节点进行个性化配置,程序员也可以自由决定每个节点的计算任务和数据分布,这样可以更有效地利用硬件资源,获得最高的性能,虽然会需要更细致的工作,但对于小规模集群,这增加的工作量仍然是可以接受的。
Hadoop 投入了相当多资源来实现超强的容错,这对于大集群当然也非常必要的。比如 MapReduce 为了容错把任务拆得太碎,而且每次执行结果都会写盘,以保证任务过程中有节点故障时仍然可以执行下去,这会严重影响性能。而且,这种体系也难以直接控制执行次序,在编写有序有关联运算时就很困难,需要费劲去绕(这个问题以后还会再谈到)。
而对于几个到十几个节点的小集群,就不需要这么强的容错能力了。在几小时的任务周期内,整个集群所有节点都能正常工作是个大概率事件。对于小集群,我们只要保证有少数节点故障时整个集群还能继续工作以接受新任务,而让当前正在执行的任务失败也是可以容忍的,毕竟这并不会经常发生。
复杂的框架本身也会消耗很多资源。小集群本来就没有几个节点,还要把有限的资源花费在这些不实际计算的事情上,显然是不划算的。在目标任务类型较为单一时,应当选择更适合的框架,没必要去追求大而全的东西。
“牛刀”应当去做它适合做的事,也就数据量大但运算简单的任务,用俗话说就是“傻大笨粗”。真到了几百个节点的集群,那还只有 Hadoop 能做了,而精细的活儿真不合适它来干。
对于小集群,我们需要更轻量级的大数据解决方案。
大数据的技术本质是高性能,而提高性能的需求无处不在,并不是只有那种规模的大数据。比即时查询设计的数据量就不会也不可能太大(否则不可能即时),这种场景会要求有很好的集成性,但 Hadoop 基本上不可能被嵌到应用程序里面,它只能在边上作为一个数据源工作;有些临时性数据处理时需要随时使用,也不可能再为之专门建设大数据平台,比如为了处理一批日志而搭建一个 Hadoop,等环境搭好时任务已经过期了。
【数据蒋堂】第 47 期:Hadoop – 一把杀鸡用的牛刀相关推荐
- 【数据蒋堂】第47期:Hadoop - 一把杀鸡用的牛刀
Hadoop是个庞大的重型解决方案,它的设计目标本来就是大规模甚至超大规模的集群,面对的是上百甚至上千个节点,这样就会带来两个问题: 自动化管理管任务分配机制:这样规模的集群,显然不大可能针对每个节点 ...
- 数据蒋堂 | Hadoop - 一把杀鸡用的牛刀
作者:蒋步星 来源:数据蒋堂 本文共1800字,建议阅读6分钟. 通过本文为大家解读为什么Hadoop不适合小集群实现. Hadoop是个庞大的重型解决方案,它的设计目标本来就是大规模甚至超大规模的集 ...
- 项目小经验: 杀鸡用了牛刀
有这么一个小事: DB表里的一个字段存着类似这样的数据">=100",">25","=123",现在要求在Java取出后把那些比 ...
- 记录两段杀鸡用的牛刀——分钱和算日子……
我们寝室三个人说好了按照房租比例分摊各种水电费 每次分钱的时候跑一下这玩意 total = 79.81portion = [1120, 1750, 1850] sum_portion = sum(po ...
- 杀鸡也用牛刀,Haskell 处理 XML 文档小试
平常经常用千千静听来听音乐,长期以来就形成了一个自己最喜欢听的音乐列表.这几天想把这些音乐全部复制到U盘,插在车上,开车的时候也可以听听.但是每个MP3.WMA分散在不同的文件夹,一个个复制的话工作量 ...
- 大数据Hadoop:杀鸡用的宰牛刀
Hadoop是个庞大的重型解决方案,它的设计目标本来就是大规模甚至超大规模的集群,面对的是上百甚至上千个节点,这样就会带来两个问题: 自动化管理管任务分配机制:这样规模的集群,显然不大可能针对每个节点 ...
- 数据蒋堂 | Hadoop中理论与工程的错位
作者:蒋步星 来源:数据蒋堂 校对:林亦霖 本文共1400字,建议阅读6分钟. 本文分析了在Hadoop的设计和实现中的理论问题和工程问题. Hadoop是当前重要的大数据计算平台,它试图摒弃传统数据 ...
- 数据蒋堂 | 数据库的封闭性
作者:蒋步星 来源:数据蒋堂 本文共1200字,建议阅读6分钟. 本文与你探讨数据库的封闭性对数据处理效率的影响. 我们知道,数据库的数据处理能力是封闭的.所谓封闭性,这里是指要被数据库计算和处理的数 ...
- 数据蒋堂 | 多维分析预汇总的存储容量
作者:蒋步星 来源:数据蒋堂 本文共1700字,建议阅读7分钟. 本文带你感性认识多维分析方案中的预汇总额外占用的存储空间. 多维分析一般是交互式操作的,也就要求有极高的响应速度,而多维分析涉及的数据 ...
最新文章
- 选择重传协议(SR)
- go gorm指定别名_GORM入门指南
- 从理论角度理解L1、L2正则化
- 两分钟让你变成jar包制作高手
- 漫步微积分一 —— 引言
- _系列 | 全自动泊车辅助F-APA简介(系列一)
- springcache使用笔记002_注释驱动的 Spring cache 按条件查询
- 华为效仿苹果卖高价手机?滴滴顺风车开放灰度测试;苹果官微被投诉“攻陷”| 极客头条...
- python labelencoder参数_对python 数据处理中的LabelEncoder 和 OneHotEncoder详解
- Good Bye 2016 //智商再次下线,边界爆炸.....
- caffe︱Places365-CNNs For Scene Recognition
- 全面规范的软件需求可以规避项目风险
- Not enough space in file systems for the current software selection. An additional XXXX MiB is neede
- java 银行卡号_java银行卡号判断银行
- vs2015 相关
- python里面pow是什么意思_pow在python中是什么意思
- CephFS 介绍及使用经验分享
- 为什么RSA公钥每次加密得到的结果都不一样?
- 基于51单片机的智能环境监测光强火焰有害气体检测proteus仿真原理图PCB
- 【转载】SAP ABAP应用日志的使用