大数据分析时代:Hadoop MapReduce

2019-03-28 14:13|来源: 网络

  当Yahoo宣布成立新公司Hortonworks接手Hadoop服务之后,业内的目光再次集中到这家大型互联网公司,而这一次的关键字是“大数据”。

  在波士顿举行的Enzee Univers 2011大会上,厂商、分析师以及咨询师认为目前大数据技术已经在企业软件中占据了一席之地。无论目前结构化数据还是非结构化数据,它们在深度与广度上都飞速地增长着,企业能否有效管理并挖掘利用这些数据将决定信息化建设的发展走势。

  Hadoop MapReduce:企业数据仓库的替代品?

  针对大数据领域,其实有很多技术提供商都参与了Yahoo的项目。Apache Hadoop是一个开源项目,Yahoo就是其中最大的贡献者;Google MapReduce是Hadoop架构的一个主要在组件,开发出的软件可以用来分析大数据集,它在目前的火爆程度已经无需赘言;Cloudera是Hadoop最早的技术支持、服务和软件提供商,它今后将直接与Yahoo的Hortonworks展开竞争。此外,EMC还推出了付费的Hadoop产品并基于MapR Technologies公司的技术。

  据Yahoo前任首席数据官Usama Fayyad的说法,在一些场景中MapReduce和Hadoop可以良好地协同,为大型计算任务提供网格支持,而并不是所有。有些情况下,它们并不是必须品,但现在许多企业都在过度地追捧使用MapReduce和Hadoop,这将造成不良的影响。其中一位参会人员Shawn Rogers也表示,目前Hadoop过分部署的问题已经逐渐浮出水面:“新技术的出现就像玩具公司推出新产品一样,我们总会第一时间把它买回家,现在是时候反思一下Hadoop的弊端了。”

  Forrester机构的高级分析师James Kobielus表示,其实部署Hadoop并不是完全必要的。具有shared-nothing并行处理架构的企业数据仓库平台完全可以支持数据库内分析(in-database analytics)和高性能数据管理。Kobielus在他即将发表的报告中,向早期Hadoop实施者提出了一份调查,询问他们针对PB级别数据仓库是否首先考虑试错法(tried-and-true approach)。

  Kobielus说:“根据案例调查显示,许多企业都会利用Teradata或者Oracle的产品作为EDW。但是他们也会在Hadoop上构建大数据项目,其中原因很多,比如通过使用Apache Hadoop,他们能够避于支付大量的软件许可费用,还可以根据变更的需求更改原代码从而得到更高的灵活性,此外全球的Hadoop社区也不断涌现出惊艳的创新。”

  Kobielus也同意前两位的观点,并不是所有的认为都需要用到Hadoop和MapReduce,尽管Hadoop将逐渐成为出类拔萃的分析平台,但它目前与企业数据仓库相比,在实时集成以及健壮的高可用性方面都存在这一定的缺陷。

  尽管Hadoop存在一定缺陷是不争的事实,但还是有许多企业用户已经将Hadoop软件纳入了他们的数据管理系统工具中。Intuit公司的数据仓库架构师Arup Ray向我们介绍,他的公司在进行即席分析(ad hoc analysis)时,已经将Hadoop当做ETL引擎了。此外,Intuit还使用了Netezza的技术进行部分分析工作。

  相反地,像T-Mobile这样的大型电信运营商还是拒绝使用Hadoop技术,它们的网络系统主管Christine Twiford说:“针对是否使用Hadoop我们也进行了讨论,但最后我们还是选择使用Netezza产品,我认为它以及完全能满足我们的需求了。”据介绍,T-Mobile早在五年前就更换了Oracle应用,转而使用Netezza的产品,在数据加载速度上提高了50%。

  尽管如此,关于Hadoop和MapReduce的讨论还是连绵不绝,而像T-Mobile这样的公司也不止一家。在TechTarget最新的一份IT调查报告中显示,只有1%的用户表示他们的数据仓库架构中使用了Hadoop技术,13%的用户表示在2012年有使用Hadoop的意向。结果与Gartner的报告相吻合。

  目前技术产品推广的力度很大,而且大数据分析软件的竞争也空前的激烈。最新的IBM Netezza Capacity Appliance在上周的会议中正式问世,它具有在几分钟之内分析10 PB数据的能力,它也是Netezza被IBM收购之后推出的第一款设备。虽然IBM官方并没有明确指出,但我们都知道新设备是瞄准了大数据领域。

  开源能否引领新浪潮?

  Forrester机构的Kobielus指出,像Hadoop和R语言这样的开源工具已经成功开启了大数据分析之门。而Rogers则认为开源虽然在这一方面起到了非常积极的作用,但是它们是以一种不太成熟的方式进入市场的。就拿Hadoop、Pentaho和Jaspersoft举例,与传统的私有产品相比,开源技术的发展步伐更慢一些。虽然它是探索前沿的一个非常好的方式,但是开源的精神能否跟上主流的需求这是一个问题。

相关问答

更多
  • 您可以使用Yarn(MRv2)编译为MRv1编写的程序,而无需修改任何单行的源代码。 它完全兼容源代码。 这是纱线示例: http : //wiki.apache.org/hadoop/WordCount 这是Map Red 1示例: https : //hadoop.apache.org/docs/r1.2.1/mapred_tutorial.html#Example%3A+WordCount+v1.0 API级别需要注意的一些明显差异: - 新API使用接口上的抽象类 - mapreduce包是不同的 ...
  • 本教程提到: 下载Hadoop-core-1.2.1.jar,用于编译和执行MapReduce程序。 访问以下链接http://mvnrepository.com/artifact/org.apache.hadoop/hadoop-core/1.2.1下载jar。 所以在这里你可以找到不同版本的所有罐子 This tutorial mentions : Download Hadoop-core-1.2.1.jar, which is used to compile and execute the MapRe ...
  • 似乎你忘记了一个组合器的重要属性: 键/值的输入类型和键/值的输出类型需要相同。 你不能接受一个Text/DoubleWritable并返回一个Text/Text 。 我建议你使用Text而不是DoubleWritable ,并在Combiner进行适当的解析。 It seems that you forgot about important property of a combiner: the input types for the key/value and the output types of t ...
  • 本书Hadoop:权威指南是一个很好的开始。 介绍性的章节应该对你非常有用,以确定MapReduce的用处以及何时使用它。 更高级的章节比字数有更多更实际的例子。 如果你想更深入地研究,你可能想用MapReduce来检查数据密集型文本处理 。 这肯定有很多“真实世界”用例,但听起来你并不感兴趣做文本处理。 举个例子,要实现的主要内容是: 映射阶段主要用于解析,转换数据和过滤数据。 考虑记录,无共享的方法来记录处理。 在字数统计中,这是解析该行并分离出单词。 缩小阶段全部关于聚合:计数,平均,最小/最大等。在 ...
  • 这个问题的根本原因是,您没有使用Hadoop调用所需的确切Signature来调用reduce() 。 签名应如下( 此处参考) protected void reduce(KEYIN key, Iterable values, org.apache.hadoop.mapreduce.Reducer.Context context) throws IOException, InterruptedException 由于您的reduce()与Signature ...
  • 有关mongodb锁定的详细信息,请参阅并发页面。 对于您的情况,map-reduce命令在相关集合运行时对其进行读写锁定。 map-reduce命令的部分可以是并发的,但在一般情况下,它在运行时被锁定。 See the concurrency page for details on mongodb locking. For your case, the map-reduce command takes a read and write lock for the relevant collections w ...
  • 如果原始数据保存在HBase中,则可以设计密钥,以便按时间对行进行排序。 然后,您可以使用开始行扫描表格,该开始行定义为您昨天扫描的最后一行+ 1.您也可以从日期开始键。 由于行按键排序,您可以轻松地从所需日期的第一行开始,然后在第二天停止。 如果您将行创建为: long currentTimeMS = System.currentTimeMillis(); long currentDay = currentTimeMS / (1000 * 60 * 60 * 60 * 24); Put put = new ...
  • 这是安全的,因为Spark不使用MapReduce作为处理引擎,但它直接与YARN交互以提交操作。 因此,当您使用Spark时,没有安排MapReduce作业,但您有一个Spark应用程序和Spark作业。 It's safe because Spark doesn't use MapReduce as processing engine, but it interacts directly with YARN to submit operations. Thus, when you use Spark, ...
  • 您不应该从示例中修改SumReducer,而应该完全创建一个与单词计数程序输出无关的新作业。 Mapper需要输出频率作为键,输出整数1作为值。 您可以编写自己的减速器,也可以使用与示例中使用的减速器相同的减速器。 Instead of modifying SumReducer from example, you should create new job altogether that works off of output of word count program. Your Mapper will ...
  • Mapper接口按以下顺序需要4个类型参数:Map输入键,Map输入值,Map输出键和Map输出值。 在您的情况下,由于您正在处理4个整数,其中3个构成您的值,1个是您的密钥,因此使用IntWritable作为Map输入键并且应该使用Text而错误。 此外,您在MapClass定义中指定的类型与传递给Map函数的类型不匹配。 鉴于您正在处理文本文件,您的MapClass应定义如下: public static class MapClass extends MapReduceBase implements M ...