热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Hadoop核心生态

本文来说下Hadoop的核心生态知识文章目录概述分布式文件系统分布式计算框架优缺点概述导读:如今,一提到大数据技术,人们首先想到的是Had

本文来说下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来历Hadoop的思想来源于Google在做搜索引擎的时候出现一个很大的问题就是这么多网页我如何才能以最快的速度来搜索到,由于这个问题Google发明 ... [详细]
  • PHP组合工具以及开发所需的工具
    本文介绍了PHP开发中常用的组合工具和开发所需的工具。对于数据分析软件,包括Excel、hihidata、SPSS、SAS、MARLAB、Eview以及各种BI与报表工具等。同时还介绍了PHP开发所需的PHP MySQL Apache集成环境,包括推荐的AppServ等版本。 ... [详细]
  • 我们在之前的文章中已经初步介绍了Cloudera。hadoop基础----hadoop实战(零)-----hadoop的平台版本选择从版本选择这篇文章中我们了解到除了hadoop官方版本外很多 ... [详细]
  • 大数据学习入门难,给初学者支招 ... [详细]
  • 2018年人工智能大数据的爆发,学Java还是Python?
    本文介绍了2018年人工智能大数据的爆发以及学习Java和Python的相关知识。在人工智能和大数据时代,Java和Python这两门编程语言都很优秀且火爆。选择学习哪门语言要根据个人兴趣爱好来决定。Python是一门拥有简洁语法的高级编程语言,容易上手。其特色之一是强制使用空白符作为语句缩进,使得新手可以快速上手。目前,Python在人工智能领域有着广泛的应用。如果对Java、Python或大数据感兴趣,欢迎加入qq群458345782。 ... [详细]
  • Windows下配置PHP5.6的方法及注意事项
    本文介绍了在Windows系统下配置PHP5.6的步骤及注意事项,包括下载PHP5.6、解压并配置IIS、添加模块映射、测试等。同时提供了一些常见问题的解决方法,如下载缺失的msvcr110.dll文件等。通过本文的指导,读者可以轻松地在Windows系统下配置PHP5.6,并解决一些常见的配置问题。 ... [详细]
  • 本文介绍了在Win10上安装WinPythonHadoop的详细步骤,包括安装Python环境、安装JDK8、安装pyspark、安装Hadoop和Spark、设置环境变量、下载winutils.exe等。同时提醒注意Hadoop版本与pyspark版本的一致性,并建议重启电脑以确保安装成功。 ... [详细]
  • 一句话解决高并发的核心原则
    本文介绍了解决高并发的核心原则,即将用户访问请求尽量往前推,避免访问CDN、静态服务器、动态服务器、数据库和存储,从而实现高性能、高并发、高可扩展的网站架构。同时提到了Google的成功案例,以及适用于千万级别PV站和亿级PV网站的架构层次。 ... [详细]
  • Sleuth+zipkin链路追踪SpringCloud微服务的解决方案
    在庞大的微服务群中,随着业务扩展,微服务个数增多,系统调用链路复杂化。Sleuth+zipkin是解决SpringCloud微服务定位和追踪的方案。通过TraceId将不同服务调用的日志串联起来,实现请求链路跟踪。通过Feign调用和Request传递TraceId,将整个调用链路的服务日志归组合并,提供定位和追踪的功能。 ... [详细]
  • 本文总结了初学者在使用dubbo设计架构过程中遇到的问题,并提供了相应的解决方法。问题包括传输字节流限制、分布式事务、序列化、多点部署、zk端口冲突、服务失败请求3次机制以及启动时检查。通过解决这些问题,初学者能够更好地理解和应用dubbo设计架构。 ... [详细]
  • 14亿人的大项目,腾讯云数据库拿下!
    全国人 ... [详细]
  •   数据挖掘作为近年来新兴的一门计算机边缘学科,其在国内外引起了越来越多的关注。并且随着数据挖掘技术的不断改进和数据挖掘工具的不断完善,数据挖掘必将在各行各业中得到广泛的应用。   ... [详细]
  • Java开发实战讲解!字节跳动三场技术面+HR面
    二、回顾整理阿里面试题基本就这样了,还有一些零星的问题想不起来了,答案也整理出来了。自我介绍JVM如何加载一个类的过程,双亲委派模型中有 ... [详细]
  • 本文_大数据之非常详细Sqoop安装和基本操作
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了大数据之非常详细Sqoop安装和基本操作相关的知识,希望对你有一定的参考价值。大数据大数据之 ... [详细]
  • Hadoop——Hive简介和环境配置
    一、Hive的简介和配置1.简介Hive是构建在Hadoop之上的数据操作平台lHive是一个SQL解析引擎,它将SQL转译成MapReduce作业,并 ... [详细]
author-avatar
大道废_796
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有