Hadoop够用吗?会有组件能从蝌蚪变成青蛙?

Posted 中智观察

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Hadoop够用吗?会有组件能从蝌蚪变成青蛙?相关的知识,希望对你有一定的参考价值。


--------



Gartner认为,Hadoop到达生产成熟期前即被淘汰。在《2017年数据管理技术成熟度曲线》中指出,尽管企业对大数据解决方案的需求在不断增长,但对Hadoop的需求并没有像预期那样加速,企业对Hadoop的热情很低。


另一方面,Hadoop核心组件——MapReduce、Hive和HDFS与边缘组件的边界正在变得越来越清晰,Spark、Flink正在逐渐成长,生态渐渐庞大。可供选择的组件越来越多,企业对于如何选择毫无头绪。


那么,Hadoop够用吗?会有组件能成为蝌蚪变成青蛙?


Hadoop的基础组件


Hadoop已经存在于很多企业的大数据架构中,每天都会有成千上万的任务运行在Hadoop之上,这其中不乏核心任务。既然我们对庞大的Hadoop生态的命运摇摆不定,不如先来看看Hadoop各大组件的生存现状,一旦这些组件逐渐被外来者替换,整个生态自然无法称之为“Hadoop生态”。



分布式文件系统HDFS: 如果您希望有4000多台电脑处理您的数据,那么最好将数据分发给4000多台电脑。HDFS可以帮助您做到这一点。HDFS 有几个可以移动的部件,包括Datanodes存储数据、Namenode 跟踪存储的位置。还有其他部件,但这些已经足以开始了。


编程框架MapReduce:一个面向 Hadoop的编程模型。有两个阶段,毫不意外,它们分别被称为Map和Reduce。如果希望留下深刻的印象,那么Map和Reduce阶段之间有一个随机排序。JobTracke管理MapReduce作业的4000 多个组件。TaskTracker从JobTracker接受订单。如果您喜欢Java,那么用Java 编写代码。如果您喜欢SQL 或Java以外的其他语言,可以使用一个名为Hadoop Streaming的实用程序。


Hive 和 Hue: 如果您喜欢 SQL,会很高兴听到可以编写 SQL,并使用 Hive 将其转换为一个MapReduce作业。您不会得到一个完整的 ANSI-SQL 环境,但的确得到了4000 注释和多PB级的可扩展性。Hue 您提供了一个基于浏览器的图形界面,可以完成您的 Hive 工作。


HBase:一个超级可扩展的键值存储。它的工作原理非常像持久的散列映射(对于 Python 爱好者,可以认为是词典)。尽管其名称是 HBase,但它并不是一个关系数据库。


Zookeeper:用于管理集群的同步性。您不需要为 Zookeeper 做很多事情,但它在为您努力工作。如果您认为自己需要编写一个使用 Zookeeper 的程序,您要么非常非常聪明,并且可能是 Apache 项目的一个委员会,要么终将会有过得非常糟糕的一天。


专家认为,目前Hadoop生态历史悠久且成熟,基本可以满足企业的需求。


问题在哪儿?


Hadoop最大的优势就是可处理的数据量庞大且运行稳定。在节点资源不增加的情况下,Hadoop的运行速度虽然不占优势,但却是十分稳定的。在海量数据处理方面,Hadoop依旧是目前为止可以找到的最合适的解决方案。


既是优势也是劣势,Hadoop在批处理方面的强大无法掩盖其在实时处理以及流处理方面的缺憾。作为后来者的Spark和Flink正是弥补了Hadoop的这些劣势,才在大数据市场分得了一方天下。


而且企业没有必要将运行良好的整个底层架构替换掉。但是,Hadoop生态中各个组件的可替换性还是很高的,Hadoop生态的概念被慢慢淡化是有可能的。比如,不少企业会在机器学习任务中使用Spark或者Tensorflow,甚至尝试类似Flink这样的新技术。


最有可能成为青蛙的小蝌蚪?


1. Spark


在内存中运行速度比Hadoop快100倍,在磁盘上运行速度快10倍。众所周知,Spark在数量只有十分之一的机器上,对100TB数据进行排序的速度比Hadoop MapReduce快3倍。此外,Spark在机器学习应用中的速度同样更快,例如Naive Bayes和k-means。原因如下:


每次运行MapReduce任务时,Spark都不会受到输入输出的限制。事实证明,应用程序的速度要快得多。


Spark的DAG可以在各个步骤之间进行优化。Hadoop在MapReduce步骤之间没有任何周期性连接,这意味着在该级别不会发生性能调整。


曾经看过一个非常有趣的比喻,Hadoop是一家大型包工队,可以组织一大堆人合作(HDFS)搬砖盖房(用MapReduce),但是速度比较慢。


Spark是另一家包工队,虽然成立得晚一些,但是他们搬砖很快很灵活,可以实时交互地盖房子,比Hadoop快得多。


2. Apache Flink


这两年逐渐火了起来,那么 Flink 和现在流行的 Spark 到底有什么异同呢,本文为你简要对比一下。


Flink 是一个面向分布式数据流处理和批量数据处理的开源计算平台。和 Spark 类似,两者都希望提供一个统一功能的计算平台给用户,都在尝试建立一个统一的平台以运行批量,流式,交互式,图处理,机器学习等应用。


虽然目标非常类似,但是 Flink 在实现上和 Spark 存在着很大的区别,Flink 从另一个视角看待流处理和批处理,将二者统一起来:Flink 是完全支持流处理,也就是说作为流处理看待时输入数据流是无界的;批处理被作为一种特殊的流处理,只是它的输入数据流被定义为有界的。


下面从框架、SQL 支持、性能等几方面来对比两者的区别:


框架:Flink 和 Spark 都是基于内存计算、支持实时/批处理等多种计算模式的统一框架,但Flink 的设计理念是 Stream as Platform,而 Spark 的设计理念是 Batch as Platform。


流计算:Spark 基于小批量处理,把 Streaming 看成是更快的批处理,支持秒级计算,在流计算方面延时较大。而 Flink 基于每个事件处理,是真正的流式计算,跟 Storm 的性能差不多,支持毫秒级计算。


SQL支持:Spark 提供 SparkSQL,Flink 通过 Table API 提供 SQL 交互支持。两者相比,Spark 对 SQL 支持更好,而且 Spark 支持对 SQL 的优化和扩展等,相关社区非常活跃。而 Flink 在 SQL 支持方面还有很大提升空间。


性能:在大家都关心的计算性能方面,两者都有较好的表现,但 Flink 支持增量迭代等特性,因此 Flink 具有更好的性能表现。


社区活跃度:Spark 社区非常活跃,生态系统越来越完善。而 Flink 社区活跃度相对较低,但相信随着 Flink 应用越来越广泛,这一现象会得到改变。


3. Elasticsearch


Hadoop 是出色的批量处理系统,但是要想提供实时结果则颇具挑战。为了实现真正的交互式数据探索,您可以使用 ES-Hadoop 将 Hadoop 数据索引到 Elastic Stack,以充分利用快速的 Elasticsearch 引擎和美观的 Kibana 进行可视化。


有了 ES-Hadoop,您可以轻松构建动态的嵌入式搜索应用来处理您的 Hadoop 数据,或者使用全文本、空间地理查询和聚合,执行深度的低延时分析。从产品推荐到基因组测序,ES-Hadoop 开启了广泛而全新的应用领域。


Elasticsearch是一家提供大数据实时搜索和分析服务的创业公司,也是基于Apache Lucene的开源搜索引擎,使用Java开发,应用了RESTful架构,能够分布式搜索与索引不同格式的文件。帮助企业从结构化或非结构化的大型分布式数据库中实时地提取需要的信息来进行分析,为企业提供一种简单的方式,来分析PB级信息,并将结果实时传递给企业供他们做出及时、明智和可行的决策。


ElasticSearch经常用来与Apache Solr相比较,它拥有下面几个显著的特点:提供了可扩展的搜索解决方案,能够接近实时进行搜索,支持多租户环境,在服务器崩溃时可以轻松恢复索引,使用JSON和Java API,自动索引JSON文件,每个索引都可以自定义设置,可以使用基于Lucene的查询语句进行搜索。


4. TensorFlow


谷歌基于DistBelief进行研发的第二代人工智能学习系统,其命名来源于本身的运行原理。Tensor(张量)意味着N维数组,Flow(流)意味着基于数据流图的计算,TensorFlow为张量从流图的一端流动到另一端计算过程。TensorFlow是将复杂的数据结构传输至人工智能神经网中进行分析和处理过程的系统。


TensorFlow可被用于语音识别或图像识别等多项机器学习和深度学习领域,对2011年开发的深度学习基础架构DistBelief进行了各方面的改进,它可在小到一部智能手机、大到数千台数据中心服务器的各种设备上运行。TensorFlow将完全开源,任何人都可以用。


TensorFlow是一个使用数据流图进行数值计算的开放源代码软件库。图中的节点代表数学运算,而图中的边则代表在这些节点之间传递的多维数组(张量)。借助这种灵活的架构,您可以通过一个 API 将计算工作部署到桌面设备、服务器或移动设备中的一个或多个 CPU 或 GPU。TensorFlow 最初是由 Google Brain 团队(隶属于 Google 机器智能研究部门)中的研究人员和工程师开发的,旨在用于进行机器学习和深度神经网络研究。但该系统具有很好的通用性,还可以应用于众多其他领域。


TensorFlow 1.7.0 RC0 发布,带来多项优化和改进。有很多新特性和改进内容,感兴趣的可以查阅相关资料。

作者简介


刘学习

前15年,专注于服务器、存储以及云计算

后5年,爱上基础软件、管理软件,以及国产化系统

冀望与企业一起成长,与产业一起发展!


微信:Fiyinghare

邮箱:lxx@soft6.com


以上是关于Hadoop够用吗?会有组件能从蝌蚪变成青蛙?的主要内容,如果未能解决你的问题,请参考以下文章

pygame游戏_小蝌蚪吃蚊子幼虫成长

Hadoop组件之-HDFS(HA实现细节)

Hadoop组件之-HDFS(HA实现细节)

hadoop HA 详解

Hadoop之hdfs

使用Nginx+Lua代理Hadoop HA