在大数据时代,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 CommonHadoop Common属于基础公共库,它是Hadoop最底层的一个模块,为Hadoop各个子项目提供各种工具,例如配置文件、操作日志等。
4.2 Hadoop Distributed File SystemHadoop Distributed File System简称HDFS,它是Hadoop的一个分布式文件系统,类似于Amazon的S3系统,Google的GFS系统。
HDFS可以处理分布在集群中的大文件,它通过将文件分成数据块来完成此操作。同时,我们可以并行访问分布式数据(例如,在进行数据处理时),各个数据节点进行数据交互形成数据块的副本。
4.3 Hadoop YARN
YARN是Hadoop的一个分布式资源管理框架,可以为上层应用提供统一的资源管理与调度。通过引入YARN,Hadoop集群在资源利用率、资源统一管理、数据共享等方面带来了巨大的好处。
Client应用提交任务到YARN,流程如下:
Client发送请求给RM
ResourceManager(简称RM)返回ApplicationId给Client
Client发送ApplicationId、QueueName、用户等信息给RM
RM寻找合适的Container,并将Client提交的信息给NodeManager(简称NM)
然后在NM中启动AM,RM给AM分配最大最小资源
AM从RM那里获取的可使用资源来申请一些Container
Job在Container中执行,由AM返回任务进度,任务执行完成后,AM向RM发送结束任务信息然后退出
4.4 Hadoop MapReduceMapReduce是Hadoop的一个分布式计算框架,用来处理海量数据。同时,还可以使用MapReduce框架来实现一些算法,例如统计单词频率、数据去重、排序、分组等。
4.5 Hadoop OZoneOzone是Hadoop的可扩展、冗余和分布式对象存储。除了扩展到数十亿不同大小的对象外,OZone还能在Kubernetes和YARN等容器环境中有效发挥作用。
可扩展性:OZone设计之初能够扩展到数百亿个文件和数据块,并且在将来会扩展到更多;
一致性:OZone是一个强一致性对象存储,它所使用的协议是类似于RAFT来实现的;
云集成:OZone设计之初能够与YARN和Kubernetes集成使用;
安全性:OZone能够与Kerberos集成,用于控制访问权限,并支持TDE和线上加密;
多协议支持:OZone能够支持不同的协议,例如S3、HDFS;
高可用:OZone是一个多副本系统,用于保证数据高可用性。
4.6 Hadoop SubmarineSubmarine是一个允许基础设施工程师/数据科学家在资源管理平台(如YARN)上运行深度学习应用程序(Tensorflow,Pytorch等)的项目。
在已有集群运行:Submarine支持在YARN、Kubernetes或者其他类似的调度框架中使用;
支持多种框架:Submarine支持多种机器学习框架,例如TensorFlow、Pytorch、MxNet等;