有奖征文 | 火山引擎开发者社区联合 InfoQ 写作社区第四届征文大赛来袭! 了解详情
写点什么

Hadoop,开发者纠结的十件事

  • 2014-10-27
  • 本文字数:1967 字

    阅读完需:约 6 分钟

开源数据处理平台 Hadoop 在大数据时代的今天有着非常广泛的应用。著名的大象图标遍布各行各业,从医疗记录到银行交易,从车票预定到房屋租赁,乃至很多科学数据处理,都可以见到 Hadoop 的身影。

在 Hadoop 生态繁荣的背后,是开发者们夜以继日的开发与支持。而在用户得益甚至赞赏这些应用的时候,开发者们却不得不面对 Hadoop 平台中一些可用性较差的地方。本文列举了网络上一些关于 Hadoop 的缺点,供大家探讨,部分观点来自 InfoWorld 及开发者博客。

1、 平台尚未成熟

虽然用途广泛,但不得不承认的是,Hadoop 目前仍在开发阶段。很多数据结构都不全,比如 Hadoop 一直不支持原生 datatime 数据类型,最近才在时间序列数据开发者的强烈建议下下引入此数据类型。其次,技术支持并不到位,无论是 Google 还是 Stack Overflow 上寻找的答案,都不足以解决开发者遇到的问题。

2、 数据模式模糊不清

Hadoop 目前对模式(Schema)的描述并不清晰,很多开发者在撰写 Pig 脚本的过程中,会花费超过 50% 的时间在调试对 Schema 的支持上。

3、 Pig 和 Hive 无法互通

Hive 和 Pig 用起来完全是两个东西。熟悉 SQL 的开发者可以在 Hive 中使用类似的脚本,但是在 Pig 中却不得不重新学习其语法。在 Pig 中无法使用 Hive 的 UDFS,也无法使用 HCatalog 访问 Pig 的 Hive 表。反过来,无法在 Hive 中使用 Pig 的 UDFS。这让开发者在两者切换使用的过程中颇为纠结,需要耗费精力重新撰写脚本来完成已有的工作。

4、 HDFS 存储共享函数库

鉴于 Hadoop 的复用机制,一旦开发者将 Pig 脚本保存于 HDFS,那么 Hadoop 将自动认为所有的 JAR 包的存储方式都应如此。通常情况下,这样的做法并无问题,但是有时候,当一个项目需要维护大量共享库的时候,这就变得非常复杂。而且,大部分时间 JAR 包通常都在安装客户端的时候一并安装过,Hadoop 这种存储方式使得 JAR 包多次存储。据悉,脚本存储的问题 Pig 新版本已修正,但是共享函数库存储的问题却仍然存在。

5、 报错信息不完整

这几乎是 Hadoop 系列工具的通病,经常在出了问题的时候,返回一个“运行失败,无更多错误信息”这样的报错提示,使得开发者无法进行更进一步的错误调试。还有,Hadoop 经常会抛出一些无法找到指针的异常(NPE),而这些问题则是由文件解析之类的操作造成,并不能属于 NPE 范畴。另外,由于采用 UDFS,导致很多报错最终以 udf 执行错误的样子呈现给开发者,而它们可能仅仅是语法错误或者类型错误。

6、 不兼容的安全机制

开发者经常会听到这样的说法:“已经有足够多的案例证明,想要保证 Hadoop 的安全性,建议使用 Kerberos,LDAP 直白易用。”但是现状就是,Hadoop 平台并未对此有友好的集成:没有 SAML、没有 OAuth,也没有很好的安全验证机制(开发者只能时不时的无奈面对再一次出现的登录窗口)。更有意思的是,Hadoop 平台中很多组件都自己支持 LDAP,且彼此不考虑兼容性。

7、 难以开发的 LDAP 连接器

对开发者来讲,用 Java 成功完成一个能用的 LDAP 连接器,至少需要修改上百次代码。而反过来看看完成的代码,连接器的功能还不完善。实际上,开发者们能感觉出 Knox 有点像一时冲动的产物。毕竟用 Apache 配置 mod_rewrite 模块就能完成的事情,非要用 Java 再写一遍,的确是让开发者头痛的事情。

8、 难以扩展的 Hive 表管理

如果开发者使用 Hive 进行表管理的话,在 Hive 执行了 drop 表命令后,会自动将表删除。但是如果这个表是外部的话,则不会自动删除。为什么 Hive 不能将这两个表同样对待呢?此外,既然 Hive 现在有向 RDBMS 发展的趋势,为什么不增加 Update 和 Delete?

9、 不兼容的 Namenode

Hadoop 的很多组件,如 Oozie、Knox 等,都不遵循新的 Namenode HA。开发者可以做一个 HA Hadoop,前提是他完全不想使用其他组件。

10、 出错的文档

Hadoop 的文档存在很多问题,开发者经常会发现文档的示例代码中有问题,有一些文档本身都没有遵循 Hadoop 的模式设计。鉴于这些文档在互联网上流传广泛,应该有相当一批人学习并尝试,因此都会遇到并纠结于这些错误。实际上,有些错误是完全可以避免的,只要文档的撰写人在完成文档的同时,自己动手运行一下示例代码。比如 Oozie 文档中充斥着大量过去版本的样例代码,开发者遇到错误的时候,很可能不是自己程序写错了,而是由于 Oozie 版本更替而导致之前教程中的函数不兼容造成,比如协议问题、模式有效性问题等等。有人形容 Oozie,称其类似 Ant 和 Maven,只是没有任何调试手段,而且代码非常善变。

此外,在 Hadoop 平台的适用范围方面,它对实时数据访问支持并不好,也无法高效存储大量小文件,而且目前尚不支持多用户。


感谢郭蕾对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ )或者腾讯微博( @InfoQ )关注我们,并与我们的编辑和其他读者朋友交流。

2014-10-27 08:153522
用户头像

发布了 268 篇内容, 共 116.2 次阅读, 收获喜欢 24 次。

关注

评论

发布
暂无评论
发现更多内容

图像的滤波与图像增强的Matlab实现

timerring

数字图像处理

2022 IoTDB Summit:IoTDB PMC侯昊男《Apache IoTDB首创时序顺乱序分离存储引擎 IoTLSM》

Apache IoTDB

数据库 IoTDB

2022 IoTDB Summit:IoTDB PMC 田原《大规模并行处理与边缘计算在 Apache IoTDB 中的实践》

Apache IoTDB

数据库 IoTDB

开源如何推动云计算的发展与创新 | 雨林开源行

开源雨林

开源 kubenetes OpenStack

软件测试 | pytest测试框架

测吧(北京)科技有限公司

测试

软件测试 | YAML是什么?

测吧(北京)科技有限公司

测试

Clean Start与Session Expiry Interval - MQTT 5.0新特性

EMQ映云科技

物联网 IoT mqtt 客户端 企业号 3 月 PK 榜

ChatGPT Turbo API 18元/100万个单词

kcodez

openai ChatGPT

软件测试 | parametrize实现参数化

测吧(北京)科技有限公司

测试

2022 IoTDB Summit:IoTDB PMC 曹高飞《Apache IoTDB 秒级扩容能力与存算分离实践》

Apache IoTDB

数据库 IoTDB

【我在京东做研发】揭秘支撑京东万人规模技术人员协作的行云DevOps平台

京东科技开发者

零基础如何学习Web 安全,如何让普通人快速入门网络安全?

网络安全学海

黑客 网络安全 信息安全 渗透测试 WEB安全

在文心一言出生地,百度悄悄燃烧AI小宇宙

白洞计划

百度 文心一言

会声会影2023中文最新版消息

茶色酒

会声会影2023

人工智能+低代码,打通AI落地的最后“一公里”

明道云

研讨会回顾 | Perforce版本控制工具Helix Core入华十年,携手龙智赋能企业大规模研发

龙智—DevSecOps解决方案

版本控制 数字资产 游戏开发 数字资产管理 芯片研发

从智能进化模型看用友BIP的AI平台化能力

用友BIP

人工智能 用友 数智化 用友BIP

MongoDB写入数据策略

NineData

nosql mongodb Journaling 写入策略 读策略

Portraiture4中文免费ps滤镜磨皮插件

茶色酒

Portraiture3

FL Studio2023免费中文版数字音频工作站软件

茶色酒

FL Studio2023

老铁们看过来!2023首场昇腾AI开发者创享日来到“东北黑土地”沈阳

科技热闻

架构实战营模块1第3课 - 什么是面向复杂度架构设计

净意

在深圳龙岗,看见空间智能化的潮水涌动

脑极体

全屋智能

2022 IoTDB Summit:Apache IoTDB PMC 张金瑞《为物联网场景优化的时序数据库共识协议》

Apache IoTDB

大数据 IoTDB

高性能存储SIG月度动态:ANCK 5.10正式支持ublk、erofs容器镜像按需读时延优化60%

OpenAnolis小助手

操作系统 高性能存储 龙蜥社区 sig

Hypium框架使能ArkTS应用高效测试

HarmonyOS开发者

HarmonyOS

LeetCode题解:2373. 矩阵中的局部最大值,遍历,详细注释

Lee Chen

JavaScript LeetCode

新必应(New Bing)申请出错终极方案

kcodez

微软 ChatGPT New Bing

ChatGPT开放API,上来就干到最低价,可以人手一个ChatGPT了

引迈信息

低代码 快速开发 openai ChatGPT

ClickHouse 与 Amazon S3 结合?一起来探索其中奥秘

亚马逊云科技 (Amazon Web Services)

JDK 环境配置

流火

Java centos jdk window

Hadoop,开发者纠结的十件事_语言 & 开发_张天雷_InfoQ精选文章