`

Hadoop无法解决的问题

阅读更多

因为项目的需要,学习使用了Hadoop,和所有过热的技术一样,“大数据”、“海量”这类词语在互联网上满天乱飞。Hadoop是一个非常优秀的分布式编程框架,设计精巧而且目前没有同级别同重量的替代品。另外也接触到一个内部使用的框架,对于Hadoop做了封装和定制,使得更满足业务需求。我最近也想写一些Hadoop的学习和使用心得,但是看到网上那么泛滥的文章,我觉得再写点笔记一样的东西实在是没有价值。倒不如在漫天颂歌的时候冷静下来看看,有哪些不适合Hadoop解决的难题呢?

Hadoop无法解决的问题

这张图就是Hadoop的架构图,Map和Reduce是两个最基本的处理阶段,之前有输入数据格式定义和数据分片,之后有输出数据格式定义,二者中间还可以实现combine这个本地reduce操作和partition这个重定向mapper输出的策略行为。可以增加的定制和增强包括:

  • 输入数据和输出数据的强化,例如通过数据集管理起来,可以统一、合并各式数据集,甚至也可以给数据增加过滤操作作为初筛,事实上业务上的核心数据源是种类繁多的;
  • 数据分片策略的扩展,我们经常需要把具备某些业务共性的数据放到一起处理;
  • combine和partition的扩展,主要是有一些策略实现是在很多Hadoop的job中都是通用的;
  • 监控工具的扩展,这方面我也见过别的公司内部定制的工具;
  • 通讯协议和文件系统的增强,尤其是文件系统,最好能用起来像接近本地命令一样,这样的定制在互联网上也能找得到;
  • 数据访问的编程接口的进一步封装,主要也是为了更切合业务,用着方便;
  • ……

这些定制从某种程度上也反应了Hadoop在实际使用中略感局限或者设计时无暇顾及的地方,但是这些都是小问题,都是通过定制和扩展能够修复的。但是有一些问题,是Hadoop天生无法解决的,或者说,是不适合使用Hadoop来解决的问题。

1、最最重要一点,Hadoop能解决的问题必须是可以MapReduce的。这里有两个特别的含义,一个是问题必须可以拆分,有的问题看起来很大,但是拆分很困难;第二个是子问题必须独立——很多Hadoop的教材上面都举了一个斐波那契数列的例子,每一步数据的运算都不是独立的,都必须依赖于前一步、前二步的结果,换言之,无法把大问题划分成独立的小问题,这样的场景是根本没有办法使用Hadoop的。

2、数据结构不满足key-value这样的模式的。在Hadoop In Action中,作者把Hadoop和关系数据库做了比较,结构化数据查询是不适合用Hadoop来实现的(虽然像Hive这样的东西模拟了ANSI SQL的语法)。即便如此,性能开销不是一般关系数据库可以比拟的,而如果是复杂一点的组合条件的查询,还是不如SQL的威力强大。编写代码调用也是很花费时间的。

3、Hadoop不适合用来处理大批量的小文件。其实这是由namenode的局限性所决定的,如果文件过小,namenode存储的元信息相对来说就会占用过大比例的空间,内存还是磁盘开销都非常大。如果一次task的文件处理较大,那么虚拟机启动、初始化等等准备时间和任务完成后的清理时间,甚至shuffle等等框架消耗时间所占的比例就小得多;反之,处理的吞吐量就掉下来了。(有人做了一个实验,参阅:链接

4、Hadoop不适合用来处理需要及时响应的任务,高并发请求的任务。这也很容易理解,上面已经说了虚拟机开销、初始化准备时间等等,即使task里面什么都不做完整地跑一遍job也要花费几分钟时间。

5、Hadoop要处理真正的“大数据”,把scale up真正变成scale out,两台小破机器,或者几、十几GB这种数据量,用Hadoop就显得粗笨了。异步系统本身的直观性并不像那些同步系统来得好,这是显而易见的。所以基本上来说,维护成本不会低。

文章系本人原创,转载请保持完整性并注明出自《四火的唠叨》

0
0
分享到:
评论
2 楼 wojiaolongyinong 2013-11-13  
LZ说的基本同意,但是下面那些问题在Hadoop在开发之初就已经考虑到了,因为Hadoop本就是想实现数据的大吞吐量处理,而且也是受google的论文启发实现的,所以key-value这种数据结构是比较适合google的一些业务开展,所以Hadoop就是一个处理特定方面问题的架构。还有,LZ现在做这个,希望多和LZ交流下~~~
1 楼 须等待 2013-11-13  
基本同意,不过就LZ总结的第二点,我认为Hadoop在这一点上是有价值的。
首先Hadoop是一个文件系统,本身就不是数据库,不能和RDBMS去做对比,其次,基于Hadoop的Hive与RDBMS的对比中,Hive关注的重点与传统的RDBMS不一样,RDBMS关注于线上的请求,要求响应是实时的,而Hive本身定位就是一个离线的数据分析系统,而就SQL的实现来说,本质上与RDBMS没有区别,只是一个基于的文件系统是本地的,一个是分布式的文件系统,论效率而言,没有可比性,但是论吞吐量和操作的方便度来说,Hive是有绝对优势的。如果没有Hive,大数据分析通过RDBMS来做的话,由于分库分表等逻辑存在,不写代码是不可能的。

另外,也有基于Hadoop的K-V数据库:HBase,性能有待测试

相关推荐

    Hadoop使用常见问题以及解决方法

    在 Hadoop 中,Shuffle Error 是一个常见的问题,主要是由于系统默认的文件打开数限制太小,导致程序无法正常运行。解决方法是修改 `/etc/security/limits.conf` 文件,增加文件打开数的限制,将 `nofile` 的值设置...

    hadoop常见问题及解决方法

    Hadoop是大数据处理的重要工具,但是在安装和使用Hadoop时,可能会出现一些常见的问题,这些问题可能会导致Hadoop无法正常工作,或者无法达到预期的性能。下面是Hadoop常见的问题及解决方法: 1、NameNode启动时...

    hadoop出错解决方法

    但是在使用 Hadoop 过程中,我们经常会遇到一些错误和问题,本文将为您提供一些常见的 Hadoop 故障解决方法。 一、Shuffle Error: Exceeded MAX_FAILED_UNIQUE_FETCHES; bailing-out 这个错误是由于系统默认的打开...

    hadoop常见问题及解决办法

    Hadoop常见问题及解决办法汇总 Hadoop是一个基于Apache的开源大数据处理框架,广泛应用于大数据处理、数据分析和机器学习等领域。...同时,需要注意的是,在解决问题时,需要小心地备份重要文件,以免造成数据丢失。

    hadoop集群遇到的问题及其解决方法

    ### Hadoop集群遇到的问题及其解决方法 #### 异常一:DataNode无法连接到NameNode **问题描述:** 在Hadoop集群部署过程中,经常会出现DataNode无法成功连接到NameNode的情况,导致集群无法正常启动。 **原因分析...

    上传文件到Hadoop失败的原因分析及解决方法.pdf

    Hadoop 文件上传失败原因分析及解决方法 本文主要讨论了在 Java Web 程序中上传文件到 Hadoop HDFS 文件系统中失败的原因分析及解决方法。通过对问题的分析和解决,可以总结出以下知识点: 1. Hadoop 文件上传失败...

    hadoop节点问题.docx

    无论是通过清理临时文件并重新格式化集群,还是通过手动修改节点ID,都能有效解决问题。这两种方法各有优缺点,选择哪种方式取决于具体情况和个人偏好。希望本文提供的指南能够帮助您快速诊断并解决Hadoop集群中的...

    Logstash6整合Hadoop-报错与解决方案.docx

    解决这个问题的方法是检查 Hadoop 集群的配置,确保 WEBHDFS 服务已经启动,并且 Logstash 的配置正确无误。 二、 Pipeline aborted due to error 报错 在 Logstash 中,Pipeline 是一个处理数据的流程,但是如果...

    hadoop2.7.3 Winutils.exe hadoop.dll

    在IT行业中,Hadoop是一个广泛使用的开源框架,主要用于大数据处理和分布式存储。...对于想要在Windows上探索Hadoop世界的人来说,深入理解这些组件及其工作原理将极大地提升其技术水平和解决问题的能力。

    Hadoop datanode启动失败:Hadoop安装目录权限的问题

    这一问题通常表现为,在尝试启动Hadoop集群时,Datanode无法正常启动,并且在访问NameNode的Web界面时发现缺少Datanode的相关信息。这种情况会严重影响Hadoop集群的可用性和数据处理能力。 #### 二、原因分析 根据...

    hadoop2.7.7对应的hadoop.dll,winutils.exe

    总结来说,`hadoop.dll`和`winutils.exe`是Hadoop在Windows环境中的两个关键组件,它们解决了在非Linux平台上运行Hadoop时遇到的兼容性问题。通过将这两个文件放入Hadoop的`bin`目录并正确配置环境变量,用户可以在...

    hadoop2.6.5中winutils+hadoop

    此外,Windows上的Hadoop安装和调试可能遇到更多问题,如文件权限问题、线程问题等,需要开发者具备一定的解决问题的能力。 总的来说,`winutils.exe`和`hadoop.dll`是Hadoop在Windows上运行的基石,它们使得开发者...

    hadoop 50070 无法访问问题解决汇总

    文章目录解决办法1:解决办法2:解决办法3:解决办法4:解决办法5: 解决办法1: 修改selinux [root@djt002 hadoop]# vi /etc/selinux/config 解决办法2: 查看你的$HADOOP_HOME/etc/hadoop下的core-site.xml和...

    hadoop环境缺少的hadoop.dll ,winutils.exe包

    本文将详细介绍这两个文件及其在Hadoop生态系统中的作用,以及如何解决它们缺失的问题。 首先,`hadoop.dll`是一个动态链接库文件,主要在Windows操作系统上用于支持Hadoop本地运行时环境。它包含了Hadoop在Windows...

    hadoop.dll & winutils.exe For hadoop-2.6.0

    同时,由于Hadoop的Windows支持有时可能存在兼容性问题或更新不及时,因此,对于那些无法连接到外网的用户,提供这样的预编译版本(如压缩包中的文件)确实能带来很大的帮助,避免了自行编译和解决依赖的困扰。...

    hadoop2.7.3+mahout0.9问题集

    7. **日志和调试**:在解决问题的过程中,查看Hadoop和Mahout的日志信息是非常重要的。通过Hadoop的YARN日志和Mahout的自定义日志,可以定位错误发生的具体位置,从而进行修复。 在解决这些问题时,以下步骤可能会...

    不同Hadoop版本winutils文件包

    标题中的“不同Hadoop版本winutils文件包”指的是在Windows环境下使用Hadoop时,需要的一个关键组件——winutils.exe。...对于大数据从业者和开发者而言,掌握这些知识对于提升工作效率和解决问题至关重要。

    hadoop.dll 资源包

    此外,了解Hadoop的基本概念,如HDFS(Hadoop Distributed File System)和MapReduce,以及YARN(Yet Another Resource Negotiator)的原理,也能帮助理解为什么这个dll文件如此重要,并有助于解决问题。 总的来说...

Global site tag (gtag.js) - Google Analytics