直面Hadoop MapReduce问题与复杂性

简介:
文章讲的是 直面Hadoop MapReduce问题与复杂性作为最具代表性的大数据技术之一,Hadoop对那些准备探索业务影响力数据的IT部门非常有吸引力。Hadoop的分布式处理方法更适合处理海量非结构化数据,但是Hadoop及其相关的MapReduce编程模型并不是万灵药,MapReduce和Hadoop的问题时刻影响着大数据新手们。

  部署Hadoop的用户可能遇到的问题包括复杂性、性能和系统管理。但是,人们对它的关注仍在不断提高。MarketAnalysis.com估计,Hadoop MapReduce市场将以每年58%的速度增长,到2018年前达到22亿美元。Hadoop(最初由雅虎开发)生态系统包含的工具非常多,而且仍在不断增加。但是,找到合适的团队成员并不是一件容易的事。

  数据仓库咨询公司Caserta Concepts的总裁Joe Caserta说:“当我们谈到Hadoop时,它实际上只是一种分布式文件系统。所有分布式系统都有一些工具,只有这些工具才能操作分布式数据系统的数据。它们包括Hive查询工具,可以模拟结构化数据;Pig,它实际上是一个操作Hadoop数据的ETL语言。”

  对于许多人而言,Hadoop的复杂性源于Java开发。

  Java是一个广泛流行的语言,它常用于面向应用的开发,而非面向数据的开发。这只是Hadoop新手面对的许多“环境转变”问题之一。

  即使是精通于SQL的Java开发者,他们使用Hadoop也有许多挑战。因为除了使用一些相关工具,否则Hadoop无法使用SQL。

  咨询与应用监控软件开发商Errplane的创始人 Paul Dix说:“Hadoop有一个工具可以帮助实现这种环境转变,那就是Hive。这个工具很有效,但是它实现的转变并不完美。”

  根据Dix的观点,就算同时具备Java技能和SQL工具,也无法保证一定能玩转Hadoop。一位资深Java开发者也可能无法部署谷歌提出的 MapReduce模型(通常与Hadoop相关联)。MapReduce会提取Hadoop处理过的数据,得到更容易使用的数据子集。

  MapReduce:唾手可得的Hadoop产品

  Dix说:“大多数Java开发者面对的问题是,他们如何使数据处理符合MapReduce范式。他们必须学习如何编写与Hadoop对应的MapReduce代码。他们必须学习正确理解问题的结构。”

  Dix自己以前就是一位谷歌实习软件工程师,他指出,许多谷歌开发者的第一个任务就是学习如何编写与Hadoop对应的MapReduce代码,计算出文本文件的单词数。

  对于Hadoop开发团队而言,寻找一个好的起点是很关键的。一个可参考的开发启动项目是:将日志文件保存到Hadoop集群中,然后使用MapReduce处理所得到的数据,例如访问某个网页的特定访客数据、响应时间或Web应用抛出的错误数量。

  轻松实现Hadoop

  MapReduce并不是唯一方法。Adobe公司的高级软件架构经理Paul Mackles说:“有许多方法可以不需要编写MapReduce程序而直接实现Hadoop。”他指的是Hive,但Hive也有一定的复杂性。

  Hive将类SQL语句转换为MapReduce程序,但是由于采用了其他查询系统,所以转换过程通常需要大量的调优。Mackles在本月的TDWI BI Executive Summit 2013大会上指出,数据联合“并不是它的强项”。Mackles指出,由于其他一些原因,其性能也存在问题,因为Hive只支持批处理,而且与MapReduce一起运行会在处理任务时增加启动开销,而且在任务执行时会增加后续处理的负载。

  Hadoop还有一些固有的操作方式。Hadoop文件系统并不兼容Posix,所以挂载文件系统的方法并不为人熟知。他指出,Hadoop将文件划分为多个可管理单元,以支持并行处理,但是开发或运营团队成员有时候必须“考虑如何分割和压缩文件”。

  Mackles指出,如果想要开始学习Hadoop,最好先挑选一些较简单、易完成的项目。Mackles将一些停车文件、Hive聚合和实验作为Hadoop的“轻松用例”,同时指出那些要求快速实现性能的操作应用不适合作为第一次尝试。

  Mackles列举了很多Hadoop的实用工具,包括YARN、Impala、HCatalog等。用Mackles的话说就是“它们代表了趋向实时的重大转变。”这些工具都很有帮助,但是在实践中了解这么多Hadoop新工具本身还具有一定难度。


作者:曾少宁 译   

来源:IT168

原文链接:直面Hadoop MapReduce问题与复杂性

相关文章
|
5月前
|
分布式计算 资源调度 Hadoop
大数据-80 Spark 简要概述 系统架构 部署模式 与Hadoop MapReduce对比
大数据-80 Spark 简要概述 系统架构 部署模式 与Hadoop MapReduce对比
133 2
|
3月前
|
数据采集 分布式计算 Hadoop
使用Hadoop MapReduce进行大规模数据爬取
使用Hadoop MapReduce进行大规模数据爬取
|
5月前
|
分布式计算 资源调度 Hadoop
Hadoop-10-HDFS集群 Java实现MapReduce WordCount计算 Hadoop序列化 编写Mapper和Reducer和Driver 附带POM 详细代码 图文等内容
Hadoop-10-HDFS集群 Java实现MapReduce WordCount计算 Hadoop序列化 编写Mapper和Reducer和Driver 附带POM 详细代码 图文等内容
172 3
|
5月前
|
分布式计算 资源调度 数据可视化
Hadoop-06-Hadoop集群 历史服务器配置 超详细 执行任务记录 JobHistoryServer MapReduce执行记录 日志聚合结果可视化查看
Hadoop-06-Hadoop集群 历史服务器配置 超详细 执行任务记录 JobHistoryServer MapReduce执行记录 日志聚合结果可视化查看
88 1
|
5月前
|
分布式计算 资源调度 Hadoop
Hadoop-05-Hadoop集群 集群WordCount 超详细 真正的分布式计算 上传HDFS MapReduce计算 YRAN查看任务 上传计算下载查看
Hadoop-05-Hadoop集群 集群WordCount 超详细 真正的分布式计算 上传HDFS MapReduce计算 YRAN查看任务 上传计算下载查看
98 1
|
5月前
|
SQL 分布式计算 关系型数据库
Hadoop-24 Sqoop迁移 MySQL到Hive 与 Hive到MySQL SQL生成数据 HDFS集群 Sqoop import jdbc ETL MapReduce
Hadoop-24 Sqoop迁移 MySQL到Hive 与 Hive到MySQL SQL生成数据 HDFS集群 Sqoop import jdbc ETL MapReduce
190 0
|
5月前
|
SQL 分布式计算 关系型数据库
Hadoop-23 Sqoop 数据MySQL到HDFS(部分) SQL生成数据 HDFS集群 Sqoop import jdbc ETL MapReduce
Hadoop-23 Sqoop 数据MySQL到HDFS(部分) SQL生成数据 HDFS集群 Sqoop import jdbc ETL MapReduce
79 0
|
5月前
|
SQL 分布式计算 关系型数据库
Hadoop-22 Sqoop 数据MySQL到HDFS(全量) SQL生成数据 HDFS集群 Sqoop import jdbc ETL MapReduce
Hadoop-22 Sqoop 数据MySQL到HDFS(全量) SQL生成数据 HDFS集群 Sqoop import jdbc ETL MapReduce
118 0
|
7月前
|
缓存 分布式计算 算法
优化Hadoop MapReduce性能的最佳实践
【8月更文第28天】Hadoop MapReduce是一个用于处理大规模数据集的软件框架,适用于分布式计算环境。虽然MapReduce框架本身具有很好的可扩展性和容错性,但在某些情况下,任务执行可能会因为各种原因导致性能瓶颈。本文将探讨如何通过调整配置参数和优化算法逻辑来提高MapReduce任务的效率。
911 0
|
9月前
|
分布式计算 Hadoop Java
Hadoop MapReduce编程
该教程指导编写Hadoop MapReduce程序处理天气数据。任务包括计算每个城市ID的最高、最低气温、气温出现次数和平均气温。在读取数据时需忽略表头,且数据应为整数。教程中提供了环境变量设置、Java编译、jar包创建及MapReduce执行的步骤说明,但假设读者已具备基础操作技能。此外,还提到一个扩展练习,通过分区功能将具有相同尾数的数字分组到不同文件。
90 1

热门文章

最新文章

相关实验场景

更多