本文来说下Hadoop的核心生态知识

文章目录

  • 概述
  • 分布式文件系统
  • 分布式计算框架
  • 优缺点

概述

导读:如今,一提到大数据技术,人们首先想到的是Hadoop,它俨然已成为大数据的代名词。然而,大数据技术在Hadoop出现之前很多年就出现了。但那时候,大数据只是谷歌、亚马逊等大公司才能开展起来的高端技术。正是Hadoop的出现,降低了分布式大数据的技术门槛,使得千千万万普通的公司也能开展大数据业务,进而促进大数据技术逐渐发展起来。

Hadoop是一个由Apache基金会开发的分布式系统基础架构。开发人员可以在不了解分布式底层细节的情况下开发分布式程序,充分利用集群的威力进行高速并行运算以及海量数据的分布式存储。Hadoop大数据技术架构如图1所示。

然而,Hadoop不是一个孤立的技术,而是一套完整的生态圈,如图2所示。在这个生态圈中,Hadoop最核心的组件就是分布式文件系统HDFS和分布式计算框架MapReduce。HDFS为海量的数据提供了存储,是整个大数据平台的基础,而MapReduce则为海量的数据提供了计算能力。在它们之上有各种大数据技术框架,包括数据仓库Hive、流式计算Storm、数据挖掘工具Mahout和分布式数据库HBase。此外,ZooKeeper为Hadoop集群提供了高可靠运行的框架,保证Hadoop集群在部分节点宕机的情况下依然可靠运行。Sqoop与Flume分别是结构化与非结构化数据采集工具,通过它们可以将海量数据抽取到Hadoop平台上,进行后续的大数据分析。


Cloudera与Hortonworks是大数据的集成工具,它们将大数据技术的各种组件集成在一起,简化安装、部署等工作,并提供统一的配置、管理、监控等功能。Oozie是一个业务编排工具,我们将复杂的大数据处理过程解耦成一个个小脚本,然后用Oozie组织在一起进行业务编排,定期执行与调度。


分布式文件系统

过去,我们用诸如DOS、Windows、Linux、UNIX等许多系统来在计算机上存储并管理各种文件。与它们不同的是,分布式文件系统是将文件散列地存储在多个服务器上,从而可以并行处理海量数据。

Hadoop的分布式文件系统HDFS如图3所示,它首先将服务器集群分为名称节点(NameNode)与数据节点(DataNode)。名称节点是控制节点,当需要存储数据时,名称节点将很大的数据文件拆分成一个个大小为128MB的小文件,然后散列存储在其下的很多数据节点中。当Hadoop需要处理这个数据文件时,实际上就是将其分布到各个数据节点上进行并行处理,使性能得到大幅提升。


同时,每个小文件在存储时,还会进行多节点复制(默认是3节点复制),一方面可以并行读取数据,另一方面可以保障数据的安全,即任何一个节点失效,数据都不会丢失。当一个节点宕机时,如果该节点的数据不足3份,就会立即发起数据复制,始终保持3节点的复制。正因为具有这样高可靠的文件存储,Hadoop的部署不需要备份,也不需要磁盘镜像,在Hadoop集群的各个节点中挂载大容量的磁盘并配置Raid0就可以了。


分布式计算框架

Hadoop的另一个关键组件是分布式计算框架MapReduce,它将海量数据的处理分布到许多数据节点中并行进行,从而提高系统的运行效率。

MapReduce计算词频的处理过程如图4所示。在这个过程中,首先输入要处理的数据文件,经过Splitting将其拆分到各个节点中,并在这些节点的本地执行Mapping,将其制作成一个Map。不同的任务可以设计不同的Map。譬如,现在的任务是计算词频,因此该Map的key是不同的词,value是1。这样,在后续的处理过程中,将相同词的1加在一起就是该词的词频了。

Mapping操作执行完以后,就开始Shuffling操作。它是整个执行过程中效率最差的部分,需要在各个节点间交换数据,将同一个词的数据放到同一个节点上。如何有效地降低交换的数据量成为优化性能的关键。接着,在每个节点的本地执行Reducing操作,将同一个词的这些1加在一起,就得到了词频。最后,将分布在各个节点的结果集中到一起,就可以输出了。

整个计算有6个处理过程,那么为什么它的名字叫MapReduce呢?因为其他处理过程都被框架封装了,开发人员只需要编写Map和Reduce过程就能完成各种各样的数据处理。这样,技术门槛降低了,大数据技术得以流行起来。


优缺点

与传统的数据库相比,MapReduce分布式计算虽然有无与伦比的性能优势,但并不适用于所有场景。MapReduce没有索引,它的每次计算都是“暴力全扫描”,即将整个文件的所有数据都扫描一遍。如果要分析的结果涉及该文件80%以上的数据,与关系型数据库相比,能获得非常优异的性能。如果只是为了查找该文件中的某几十条记录,那么它既耗费资源,性能也没有关系型数据库好。因此,MapReduce的分布式计算更适合在后台对批量数据进行离线计算,即一次性对海量数据进行分析、整理与运算。它并不适用于在前台面向终端用户的在线业务、事务处理与随机查询。

同时,MapReduce更适合对大数据文件的处理,而不适合对海量小文件的处理。因此,当要处理海量的用户文档、图片、数据文件时,应当将其整合成一个大文件(序列文件),然后交给MapReduce处理。唯有这样才能充分发挥MapReduce的性能。

Hadoop核心生态相关推荐

  1. Hadoop核心介绍课程笔记

    Hadoop历史 雏形开始于2002年的Apache的Nutch,Nutch是一个开源Java 实现的搜索引擎.它提供了我们运行自己的搜索引擎所需的全部工具.包括全文搜索和Web爬虫. 随后在2003 ...

  2. Hadoop核心架构HDFS+MapReduce+Hbase+Hive内部机理详解

    编者按:HDFS和MapReduce是Hadoop的两大核心,除此之外Hbase.Hive这两个核心工具也随着Hadoop发展变得越来越重要.本文作者张震的博文<Thinking in BigD ...

  3. hadoop---(1)hadoop核心知识点总结

    hadoop核心知识点总结 1.  安装hadoop需要配置的hadoop中的配置文件有哪些? hadoop-env.sh yarn-env.sh core-site.xml hdfs-site.xm ...

  4. Hadoop核心之MapReduce架构设计

    Hadoop主要由两大部分组成,一个是分布式文件系统即HDFS,另一个是分布式计算框架MapReduce. 关于HDFS详细介绍请参考:[Hadoop核心之HDFS 架构设计] 本篇重点介绍分布式计算 ...

  5. 喜讯!湖南云畅网络科技有限公司成为百度核心生态伙伴! 共建智慧交通新生态

    **喜讯!云畅成为百度核心生态伙伴! 共建智慧交通新生态** 2021年4月21日,百度智能交通合作伙伴大会在长沙召开,湖南云畅网络科技有限公司与北京百度智行科技有限公司签署战略合作协议,正式成为百度 ...

  6. 大数据开发基础入门与项目实战(三)Hadoop核心及生态圈技术栈之2.HDFS分布式文件系统

    文章目录 前言 1.HDFS特点 2.命令行和API操作HDFS (1)Shell命令行客户端 (2)API客户端连接HDFS的两种方式 (3)API客户端上传下载文件 (4)API客户端文件详情及文 ...

  7. Hadoop——2、hadoop起源于生态

    Hadoop --2.hadoop起源于生态

  8. 中国核心生态区类型及土地利用数据有哪些,如何进行获取

    全国生态功能区划是在全国生态调查的基础上,分析区域生态特征.生态系统服务功能与生态敏感性空间分异规律,确定不同地域单元的主导生态功能,制定全国生态功能区划,对贯彻落实科学发展观,牢固树立生态文明观念, ...

  9. Thinking in BigData(八)大数据Hadoop核心架构HDFS+MapReduce+Hbase+Hive内部机理详解

          纯干货:Hadoop核心架构HDFS+MapReduce+Hbase+Hive内部机理详解. 通过这一阶段的调研总结,从内部机理的角度详细分析,HDFS.MapReduce.Hbase.H ...

最新文章

  1. 属性配置文件详解(2)(十七)
  2. matlab系统的根轨迹,实验五 利用MATLAB绘制系统根轨迹
  3. Python源码剖析学习二
  4. [图解]在输入框和文本框中获取和设置光标位置,以及选中文本和获取选中文本值的方法 --- 详解,兼容所有浏览器。...
  5. spring boot 热更新,热部署
  6. 多线程安全小结-可见性(内存屏障,共享变量副本)、原子性、有序性(编译器优化、cpu流水线乱序)
  7. oracle忽略损坏表空间,Oracle表空间文件损坏后的排查及解决
  8. CSS Grid中的陷阱和绊脚石
  9. 面向对象之自动生成助记码
  10. 非线性系统的理论和方法,神经网络的非线性
  11. KETTLE使用教程
  12. 精力充沛是一种自我管理能力
  13. eclipse快捷键总结
  14. sam格式的结构和意义_SAM文件是什么
  15. Hystrix 使用
  16. 获取网易云音乐封面图片
  17. 股票K线统计,各个分钟线,日线,周线统计,sql示例
  18. C++——素数(质数)专题训练4
  19. Maven 中跳过单元测试方法
  20. iOS AFN框架(二)的使用和有关序列化器的问题--缓存机制------

热门文章

  1. ASP.NET登录控件login。
  2. Django的 select_related 和 prefetch_related 函数对 QuerySet 查询的优化(三)
  3. iOS事件拦截(实现触摸任意位置隐藏指定view)
  4. go依赖管理-govendor
  5. strong vs copy
  6. Windows 编程[10] - WM_LBUTTONDOWN、WM_LBUTTONUP 和 WM_MOUSEMOVE 消息
  7. Exchange Server 2010 SP3部署
  8. SQL Server-SQL事务处理(Stransaction)
  9. java程序设置软件界面(jFrame)的最小大小
  10. 不输入密码执行sudo命令方法介绍