
文章作者:哥不是小萝莉
编辑整理:Hoh Xil
内容来源:作者授权
出品社群:DataFun
注:欢迎转载,转载请注明出处
1. 前言
在大资料时代,Hadoop 有着得天独厚的优势。然而,每个企业的技术储备和需求特点不同,他们希望从海量的客户资料中挖掘真正的商业价值,像 Google 、Facebook 、Twitter 等这样的企业更是 Hadoop 的最早获益者。那么,今天我们就来聊一聊,万亿资料下 Hadoop 的核心竞争力。
2. 什么是 Hadoop ?
在了解 Hadoop 之前,不得不说的一个名词—— “ 大资料 ” 。大资料是时代发展和技术进步的产物,大资料的特征如下:
庞大的资料容量结构化、半结构化、非结构化的资料型别高效的处理速度高质量的资料

Hadoop 由 Apache 基金会孵化并开源的分散式系统,使用者可以在不了解分散式底层设计的情况下,开发分散式应用程序,充分利用丛集的优势来进行高速的运算和储存。自从 Hadoop 作为 Apache 基金会开源专案释出以来,它一直备受青睐,这得益于 Hadoop 的可扩充套件性、低成本、灵活的处理模式等特点。
3. 万亿资料下的难点?
资料量达到万亿规模,这已经是一个很庞大的资料量了。这里难点我们可以分为两种情况,一种是原理上不知道怎么处理,没有具体的实施方案,这个属于技术难题。另一种,虽然有具体的实施方案,也明白其中的原理,但是资料规模太过庞大,这个属于工程上的难点。
资料规模庞大带来的难点主要体现在分散式的要求,因为单个节点不足以在有效的成本和规定的时间内处理完所有的资料。简而言之:
并行化问题:处理资料的应用程序要改造成适合并行的方式;资源分配管理问题:如何有效的管理提交任务的资源,内存、网络、磁盘等;容错问题:随着机器数量的增加,可靠性如何保证,例如部分机器硬件出错导致不可用,最终结果的完整性和正确性如何保证。4. Hadoop 的组成部分有哪些?能做什么?
截止至本篇文章,Hadoop 社群释出了 Hadoop-3.2.0 版本,其核心组成部分包含:基础公共库 ( Common ) 、分散式档案储存系统 ( HDFS ) 、分散式计算框架 ( MapReduce ) 、分散式资源排程与管理系统 ( YARN ) 、分散式物件储存框架 ( OZone ) 、机器学习引擎 ( Submarine ) 。

4.1 Hadoop Common
Hadoop Common 属于基础公共库,它是 Hadoop 最底层的一个模组,为 Hadoop 各个子专案提供各种工具,例如配置档案、操作日志等。
4.2 Hadoop Distributed File System
Hadoop Distributed File System 简称 HDFS,它是 Hadoop 的一个分散式档案系统,类似于 Amazon 的 S3 系统,Google 的 GFS 系统。
HDFS 可以处理分布在丛集中的大档案,它通过将档案分成资料块来完成此操作。同时,我们可以并行访问分散式资料 ( 例如,在进行资料处理时 ) ,各个资料节点进行资料互动形成资料块的副本。

4.3 Hadoop YARN
YARN 是 Hadoop 的一个分散式资源管理框架,可以为上层应用提供统一的资源管理与排程。通过引入 YARN,Hadoop 丛集在资源利用率、资源统一管理、资料共享等方面带来了巨大的好处。

Client 应用提交任务到 YARN ,流程如下:
1. Client 传送请求给 RM
2. ResourceManager ( 简称 RM ) 返回 ApplicationId 给 Client
3. Client 传送 ApplicationId 、QueueName 、使用者等资讯给 RM
4. RM 寻找合适的 Container ,并将 Client 提交的资讯给 NodeManager ( 简称 NM )
5. 然后在 NM 中启动 AM ,RM 给 AM 分配最大最小资源
6. AM 从 RM 那里获取的可使用资源来申请一些 Container
7. Job 在 Container 中执行,由 AM 返回任务进度,任务执行完成后,AM 向 RM 传送结束任务资讯然后退出
4.4 Hadoop MapReduce
MapReduce 是 Hadoop 的一个分散式计算框架,用来处理海量资料。同时,还可以使用 MapReduce 框架来实现一些算法,例如统计单词频率、资料去重、排序、分组等。
4.5 Hadoop OZone
Ozone 是 Hadoop 的可扩充套件、冗余和分散式物件储存。除了扩充套件到数十亿不同大小的物件外,OZone 还能在 Kubernetes 和 YARN 等容器环境中有效发挥作用。
可扩充套件性:OZone设计之初能够扩充套件到数百亿个档案和资料块,并且在将来会扩充套件到更多;一致性:OZone是一个强一致性物件储存,它所使用的协议是类似于RAFT来实现的;云集成:OZone设计之初能够与YARN和Kubernetes整合使用;安全性:OZone能够与Kerberos整合,用于控制访问许可权,并支援TDE和线上加密;多协议支援:OZone能够支援不同的协议,例如S3、HDFS;高可用:OZone是一个多副本系统,用于保证资料高可用性。4.6 Hadoop Submarine
Submarine 是一个允许基础设施工程师 / 资料科学家在资源管理平台 ( 如 YARN ) 上执行深度学习应用程序 ( Tensorflow ,Pytorch 等 ) 的专案。
在已有丛集执行:Submarine 支援在 YARN 、Kubernetes 或者其他类似的排程框架中使用;支援多种框架:Submarine 支援多种机器学习框架,例如 TensorFlow 、Pytorch 、MxNet 等;覆盖整个ML:Submarine 不仅仅是一个机器学习引擎,它涵盖了整个机器学习过程,例如算法开发、模型批量训练、模型增量训练、模型线上服务和模型管理。5. Hadoop 的核心竞争力在哪?
Hadoop 如此受人喜欢,很大程度上取决于使用者对大资料储存、管理和分析需求的迫切。大资料是目前很多企业面临的一个挑战,由于资料量的庞大、资料型别的复杂 ,特别是非结构化或者半结构化的资料远远多于结构化的资料,一些传统的基于关系型数据库的储存和分析难以满足时,且关系型数据库巨大成本压力也是很多企业考虑的问题,而 Hadoop 给人们提供了解决大资料问题的技术手段。
大资料时代需要 Hadoop ,那么 Hadoop 的核心竞争力在哪呢?
5.1 降低大资料成本
Hadoop 使企业可以高效的管理资料,以降低资料成本,其中包含业务成本、硬件成本、人工成本、储存成本等。通过易用性、权威性、时效性等特性,Hadoop 还可以帮助使用者增加资料价值。目前 Hadoop 社群的支援,以及各大 Hadoop 厂商的支援,使得 Hadoop 从一个单独的开源软件逐步演变成一个具有一定规模的生态系统,这些厂商包含 Cloudera 、MapR 、Hortonworks 等,他们在这一生态系统中扮演着不同的角色,例如有系统厂商、监控服务商、资料分析商等。
而使用者可以从这些厂商中提供的系统来简化 Hadoop 的学习成本,快速构建符合自身要求的大资料平台,同时合理利用厂商提供的附属元件来开发出高效、易用的的大资料应用。
5.2 成熟的 Hadoop 生态圈
Hadoop 不是一个 “ 孤岛 ” 系统,它拥有成熟的 Hadoop 生态圈。

利用 Hadoop 生态圈设计满足自身需求的方案,需要考虑一些关键要素:
1. 从需求的最终结果开始分析,而不是从可用的工具开始。例如,可用性、一致性等;
2. 对资料处理时效性的评估,例如离线任务 ( MapReduce 、Hive ) 、实时任务 ( Flink、Spark Streaming );
3. 尽可能使用成熟的方案。
案例一:获取最后一小时的热门连结
将热门连结集中收集,使用 Flume 将连结传送到 Kafka ,然后使用 Flink 或者 Spark Streaming 计算引擎在1小时的视窗内分析资料,最后将计算后的结果写入到 HBase 进行储存。

案例二:为使用者推荐电影
这是一个实时场景,使用者喜欢电影,那么使用者应立即看到相关电影。
解决思路:每次使用者给出评级时,计算建议都是包含权重的,因此我们应该定期根据现有使用者行为计算建议。根据对使用者行为的理解,可以为给定使用者预测所有电影的推荐,然后对其进行排序,并过滤使用者已经开过的内容。
元件选取:数据库可以使用 NoSQL 数据库,例如 HBase 。来储存使用者评级。计算引擎方面可以选择 Flink 或者 Spark ML 通过 Oozie 定时排程来重新计算使用者电影推荐。然后,使用 Flume 和 Spark Streaming 用于流式传输和处理实时使用者行为。
工作流程:Web 服务器将使用者评级传送给 Flume ,后者将其传递给 Spark Streaming ,然后将结果储存到 HBase 中。接着,使用 Oozie 定时排程执行 Spark ML 应用来重新计算电影推荐并将结果储存到 HBase 中。

6. 是否一定要选择 Hadoop ?
与传统数据库系统相比较,开源的 Hadoop 有自己的优势。尤其是 Hadoop 既能处理关系型数据库中的结构化资料,也能处理视讯、音讯、图片等非结构化资料。并且 Hadoop 还能够根据资料的规模和问题的复杂度轻松的扩充套件。那是不是一定要用 Hadoop ?
每个企业都有自己的特殊需求,都有自己的技能栈,如果已经购买了成熟的数据库产品,没有必要舍弃这些产品,要确保对 Hadoop 足够的了解,不要盲目的 “ 跟风 ” 。
然而,Hadoop 是解决大资料的一种技术手段,这个是一个趋势,例如 Hadoop 与 AI 、IoT 等领域的结合使用。了解和掌握 Hadoop 是有所必要的,可以从一些小的专案尝试积累更多经验。

7. 结束语
这篇文章就和大家分享到这里,如果大家在研究学习的过程当中有什么问题,可以传送邮件给我,我会尽我所能为您解答,与君共勉!
作者介绍:
哥不是小萝莉,知名博主,著有《 Kafka 并不难学 》和《 Hadoop 大资料探勘从入门到进阶实战 》。
作者部落格:
https://www.cnblogs.com/smartloli/
邮箱:[email protected]
Hadoop 一书,连结:
https://item.jd.com/12371763.html
Kafka 一书,连结:
https://item.jd.com/12455361.html
——END——





























