导航菜单

2019 年,Hadoop还是数据处理的可选方案吗?

皇冠体育注册

目前,云驱动的数据处理和分析正在上升。在本文中,我们将分析Apache Hadoop在2019年是否仍然是一种选择。

从我第一次使用Apache Hadoop生态系统开始,围绕“大数据”和“机器学习”这两个术语已经变得非常不同。在本文中,让我们分析一下自那时以来发生的事情以及它与2019年高效的托管云服务的比较。

e326ade5551d442485c942b7b46d68d1

历史回顾

Apache Hadoop是一个开源框架,基于谷歌2003年白皮书“MapReduce:大数据的简化数据处理”(点击获取)于2006年发布,提供“可靠,可扩展的分布式计算”。接下来,更多出现了更多工具(如雅虎猪),Hortonworks,Cloudera和MapR的主要发行版已经发布,性能数据不断更新(2008/2009),Apache Hive在2010年实现了类似SQL的支持。像YARN这样的资源调节器已经有了也变得流行(2012/2013)。

大概在2014/2015年,Hadoop有很多其他平台所不具备的优势 - 开源,突破了基于Java的Map/Reduce程序的限制,支持Batch和Real-time应用程序,能运行在所有能找到的旧硬件上,可以在本机运行,我可以在Hortonworks的HDP,Cloudera的CDH或者MapR上作为企业级解决方案运行。它使公司能够收集,存储和分析任何数据,并在公司的主要生产环境中被大量使用。

很多其他工具也支持该框架下面的表格给出了本文会提到的组件列表的基本信息。

5ec853b37ba84131b9e2daddd8461b95

不过任何事物都不可能没有缺点如大部分开源软件一样,尤其是模块化地运行在几百个甚至成千上万台机器上是一个很大的挑战。配置,性能优化,工具选择,维护,运维和开发都需要有资深专家的指导,来让Haoop可以平稳运行,因为一个错误的配置都会严重降低整个系统的性能。同时,这种粒度控制的级别可以和工具的灵活度和适应性级别不匹配。

新兴的云市场

09325b8b644e478299f4cac7e73d754e

https://xkcd.com/1117/,CC BY-NC 2.5

XX然而,在过去的十几年中,越来越多的公司从主要的云服务,如 AWS、Google Cloud 和 Microsoft Azure 获利。这有很多好处 如大量减少了本地基础设施和管理的需求,提供灵活扩展的内存( 从几个 GB 到 TB)、存储和 CPU,按使用付费的灵活计价模型,开箱即用的机器学习模型,可以和其他非“大数据”工具进行集成。

公司可以不再维护昂贵的内部裸机柜,它可能一天中有 80% 处于空闲状态,而在调度批处理运行时又导致资源受限和瓶颈,这取决于公司拥有的有领域专家或外部支持的工具,它们为大量的作业保留资源,这些作业可以在几秒或几分钟内处理 TB 数量级的数据,仅需花费几美元。

因此问题出现了 从那时起,Hadoop 发生了什么 现在是否还需要它?

生态系统的整体变化情况

在深入到各个组件之前,我们从先简要讨论下发生了什么。

2019 年早期,两大提供商(Hortonworks 和 Cloudera)宣布了两个公司大规模的合并。这次合并对于所有熟悉这项技术的软件工程师来说很有意义 两个公司都工作在几乎一样的技术栈上,都深入到开源软件,都通过便捷的管理和众多可用工具来提供对 Hapoop 栈的支持或托管。Cloudera 侧重于机器学习,而 Hortonwork 侧重于数据获取和聚合,并提供大力协作的可能性。他们在新闻稿中谈到,在过去 12 月有 7.6 亿美元的收益和 5 亿美元的现金,无负债。

xxxx这次合并的战略目标是专注于云(有一种说法是“云,无处不在”)然而,它是一种基于开源技术的云。该公司的目标是让Hadoop和(F)OSS(见上文)的用户受益,就像公共云提供商一样。

这不是一个新的发展。 Hortonwork在2018年7月的3.0版本中包含了对所有云服务(不是严格的HDFS)的存储支持。

与此同时,竞争对手MapR(专注于专有解决方案)于2019年5月宣布裁员,并最终宣布有意在2019年6月出售该公司。该公司正在努力实现其业务模式的货币化以及积极推动原生云运营的努力。

在此期间,公共云市场只有一个方向:Skywards。 AWS,GCP和Azure的盈利能力占其各自公司利润的很大一部分。似乎每个新会议都将展示各自技术领域的领先技术,很少有公司会依赖其本地数据中心。

小发猫仍然认为Hadoop很有价值。

从那以后开源世界发生了什么?

以上介绍肯定不会激发我们的信心。我们还应该看看过去几年发生的事情。云服务提供商提供从数据采集到机器学习和分析的优秀且易于使用的产品。(F)OSS领域也在不断发展。

Hadoop概述

Hadoop 3.0增加了许多功能。

YARN现在支持Docker容器,TensorFlow的GPU调度,更高级的调度功能以及跨平台的AWS S3本机支持。

这些变化让组织可以改变Hadoop集群的运行方式,放弃在YARN上运行绝大部分批处理作业,分隔本地ML作业的传统方法,转而采用更现代化的基于容器的方法,利用GPU驱动的机器学习,并把云服务提供商集成到“混合”或原生云模型中。

HBase的

Apache HBase是我既爱又恨的事物之一它很快,很强大,一旦理解了其基础知识,也很简单,但是一旦规模大了,它也是一头需要驯服的野兽。

建议改为:与Spark类似,Hbase的主要版本也提升到了2.x,但其变化没有Hive等面向终端用户的工具那么明显.HBase(开箱即用)提供基于Ruby的shell和针对不同语言的API,它很少作为单独的工具使用 Apache Phoenix是个特别的例外,本文不会涉及。

项目主页提供了2.0.5,2.1.5,2.2.0版本的发布说明,项目的JIRA中也有提供。

这样说可能会让一些人感觉不愉快 Hbase是一个遵循UNIX思想的项目做一件事并做其它相对很多其它项目来说,这些年它的改进并不明显。看看相关的工具,库和框架能让你有更好的总体了解。

谷歌的BigTable和Hbase可以互操作,作为一个原生云托管服务,它可以和现有的所有HBase项一起使用。

蜂房

XXHive兼容性通常与Hadoop版本相关。 Hive 3.x和Hadoop 3.x,Hive 2.x和Hadoop 2.x,依此类推。

Hive专注于3.x版本的分支,已经从一个非常有限的,运行缓慢的Map-Reduce驱动的SQL层转变为一个功能强大的分析框架,用于低延迟的内存驱动器。

Hive的LLAP(低延迟分析处理)技术首先在Hive 2.0中引入,提供与其名称相同的功能。它在YARN上运行一个守护进程来协调作业的运行,以便守护进程安排小的运行,并且成熟的YARN作业将切换具有更多资源的作业。这种方法允许更快的查询,同时仍允许用户选择运行需要访问大量数据的许多作业,从而接近Postgres等大型RDMBS集群的功能。

a0bf0335fedc4704a634190a5b8007e1

此外,它还完全支持ACID事务,这是Hive数据的一个很好的新功能。较旧版本的Hive依赖于不可变数据,只能使用INSERT OVERWRITE或CTAS语句进行更新。

ACID遇到了自己的挑战和局限,使得Hive和传统的RDMBS或Google的BigQuery(有限的更新支持)越来越相似。

Sqoop

Sqoop是一个功能强大的工具,允许您从不同的RDMB类型获取数据到Hadoop。这似乎是一项不重要的任务,通常由Informatica或Pentaho ETL完成。

与HBase一样,它主要是内部改进的。您可以参考刚刚与HDP 3.1一起发布的1.4.7的发行说明。

特别是,大多数云服务提供商缺乏比较工具。 Sqoop与数据库交互,无论是通过增量集成还是完全加载,还是通过自定义SQL,然后将数据存储在HDFS(如果需要,还有Hive)上。通过这种方式,从尚未分析或ETL加载的操作源系统获取数据是直接且简单的。实际上,AWS EMR支持使用Sqoop将数据加载到S3中。

这也是有争议的,我愿意研究其他FOSS工具,比如存储组件(S3,GCS等),它们提供与大型托管,类似SQL的云服务类似的功能。

火花

Apache Spark(现在与Hadoop结合使用并不是非常紧张,将来也是如此)。从版本1.6x到2.x,有一个主要的版本更改可以修改API并引入许多新功能。

2.x and subsequent versions provide more comprehensive SQL support for different platforms, greatly improving the performance of SQL on DataFrames/DataSets (2-10 times), and more for the underlying file format (ORC, Parquet). Support, 2.1 version provides local support for Kafka, 2.2 upstream data processing is more advanced and reliable, supports Kubernetes, updated History server, 2.3 version added new data source API (such as local read CSV file), 2.4 version supports machine Advanced execution modes, advanced functions, etc. in learning/"deep learning".

Spark can be used in Java, Scala, Python, and R to provide support for a wide range of popular languages for organizations with SMEs.

Moreover, after the Spark framework is stripped from Hadoop, it can be used on AWS EMR, Google Cloud Dataproc, and Azure HDInsights, and developers can directly migrate existing Spark applications directly to the cloud of fully managed services.

This allows companies to not only reuse existing IP, but also provide relative independence to individual external service providers. Although I have highly valued GCP in a previously published article, this independence can be a strategic advantage.

c817d58af1ed4513a3690b8b816c9599

TEZ

Apache TEZ allows Hive and PIG to run DAGs instead of running M/R jobs. Although it's a Hadoop-specific component, it's still worth a closer look.

xxChanges to TEZ are sometimes accessible to users, such as the new TEZ interface on version 0.9.0, but most are internally modified to get better performance and scalability than the previous version. Its biggest advantage is the additional performance and monitoring capabilities for M/R jobs.

What is the conclusion?

We spent a long time talking about the development of Hadoop and related tools. But what does this mean?

One thing is clear. Running an open source technology stack on a bare metal in a data center has its drawbacks and advantages. You have your own data, your own technology stack, and the ability to submit code to this ecosystem to contribute to open source. You also have the ability to do the required functions without having to rely on third parties.

This independence from cloud service providers gives companies the autonomy to their data so they don't have to be limited by bandwidth and regulations (ie, their own software, without "non-compliance" issues).

Hadoop's new features and stability enhancements make it easier and more powerful to use platforms and tools (including all that we didn't cover in this article). The development of the ML world, especially Spark (ML) and YARN, laid the foundation for more logical analysis, less aggregation, and traditional database modeling.

Cloud-driven data processing and analytics have steadily increased, and Hadoop's focus has dropped. It may make people think that this is a "black and white" state. is either on the cloud or locally.

xx我不同意这种观点。混合方法为我们带来了两全其美。我们可以维护一个本地Hadoop实例并将其提交给,例如,托管机器学习服务,例如BigQuery上的Google Cloud AutoML,它可以携带一些没有个人身份验证信息的数据。

4e5d757fcf06414498030f6662e02a1d

我们还可以将现有的Hadoop工作负载迁移到云(例如EMR或Dataproc),以利用云的可扩展性和成本优势来开发可以跨不同云服务移植的软件。

我可以看到Cloudera/Hortonwork的使用方式与上面的第二种方法相同。利用FOSS并使用公共云服务提供的大量专有技术和高效解决方案。

在某些情况下,如果没有成熟的多年迁移经验,将遗留系统迁移到云是不可行的。例如,具有管理企业日常运营20或30年(或更早)历史的数据库系统。但是,结合用户自定义软件和开源软件的优点,根据企业的实际情况进行剪裁是非常有价值的。

最后,根据实际情况, Hadoop肯定不会死,但亚马逊,谷歌和微软的持续投资可能会在未来发生变化。

作者:Christian Hollinger:撰写了大量大数据,云,分析和UNIX相关文章,他是Google Clound,Hadoop,Apache Storm,Heron,HBase,Kafka,Spark等所有相关数据需求的高级顾问。了解对Kerberos知之甚少。

原文:https://chollinger.com/blog/a-look-at-apache-hadoop-in-2019/