赞
踩
Hadoop起源于Apache Nutch项目,Apache Nutch 项目起源于Apache Lucene项目,这三个项目的创始人都是Doug Cutting。
2003年谷歌发表关于GFS(Google File System,Google文件系统)分布式存储系统的论文。
2004年:Doug Cutting和Mike Cafarella基于GFS论文实现Nutch的分布式文件系统NDFS。
2004年发表关于MapReduce分布式计算框架的论文。
2005年:Doug Cutting和Mike Cafarella基于MapReduce论文在Nutch上实现MapReduce系统。
2006年2月:MapReduce和HDFS(NDFS重新命名为HDFS)成为Lucene的一个子项目,称为Hadoop,Apache Hadoop项目正式启动。
2008年1月:Hadoop升级成为Apache顶级项目。此时,Hadoop发展到0.15.3版本。
广义上来说,Hadoop是指大数据的一个生态圈,包括很多软件框架。
Sqoop主要用于传统关系型数据库和Hadoop之间传输数据。
Flume是海量日志收集系统,提供对日志数据进行简单处理的能力,如过滤、格式转换等,能够将日志写往各种数据目标。
HDFS是Hadoop体系中数据存储管理的基础,它是一个分布式文件系统,具有高容错性,提供高吞吐率的数据访问,能够有效处理海量数据集。
HBase是一个建立在HDFS之上,面向列的针对结构化和半结构化数据的动态数据库。HBase提供了对大规模数据的随机、实时读写访问, HBase中保存的数据可以使用MapReduce来处理,它将数据存储和并行计算完美地结合在一起。
Kafka是一种高吞吐量的分布式消息系统,它主要用于处理活跃的流式数据。这些数据通常以日志的形式记录下来,然后每隔一段时间进行一次统计处理。YARN是通用资源管理系统,为上层应用提供统一资源管理调度。
MapReduce是面向大型数据处理的并行计算模型和方法,仅适合离线数据处理。
Spark提供一个通用并行计算框架用于处理各种有着不同性质(文本数据、图表数据等)的数据集和数据源(批量数据或实时的流数据)的大数据处理需求。
Hive是一种数据仓库技术,用于查询和管理存储在分布式环境下的大数据集,通常用于离线分析。
Mahout是一个开源的数据挖掘算法库,实现了一些可扩展的机器学习领域经典算法。
Storm是一个分布式的、容错的实时处理系统。可用于“流处理”之中,实时处理消息并更新数据库。Storm也可用于“连续计算”,对数据流做连续查询,在计算时就将结果以流的形式输出给用户。
Oozie是 Hadoop 平台的一种工作流调度引擎,用于协调多个Hadoop作业的执行。
Azkaban是一个批量工作流任务调度器,用于在一个工作流内以一个特定的顺序运行一组工作和流程。
ZooKeeper是一个分布式数据管理和协调框架,保证分布式环境中数据的一致性,是Hadoop组件的一个监管系统。
(1)Hadoop的默认模式,安装时不需要修改配置文件。
(2)Hadoop运行在一台计算机上,不需要启动HDFS和YARN。
(3)MapReduce运行处理数据时只有一个JAVA进程,使用本地文件系统进行数据的输入输出。
(4)用于对MapReduce程序的逻辑进行调试,确保程序的正确。
(1)Hadoop安装在一台计算机上,需要修改相应的配置文件,用一台计算机模拟多台主机的集群。
(2)需要启动HDFS和YARN,是相互独立的Java进程。
(3)MapReduce运行处理数据时是每个作业一个独立进程,输入输出使用分布式文件系统。
(4)用来进行学习和开发测试Hadoop程序的执行是否正确。
(1)在多台计算机上安装JDK和Hadoop,组成相互连通的集群,需要修改相应的配置文件。
(2)Hadoop的守护进程运行在由多台主机搭建的集群上。
真正的生产环境。
(1)扩容能力强:Hadoop是在可用的计算机集群间分配数据并完成计算任务,这些集群可以方便地扩展到数以千计的节点。
(2)成本低:通过普通廉价的计算机组成服务器集群来分发以及处理数据,相比使用大型机乃至超级计算机成本低很多。
(3)高效率:通过并发数据,Hadoop可以在节点之间动态并行处理数据,使得处理速度非常快。
(4)高可靠性:能自动维护数据的多份复制,并且在任务失败后能自动地重新部署计算任务。
HDFS(Hadoop Distributed File System),它是一个文件系统,用于存储文件,通过目录树来定位文件;其次,它是分布式的,由很多服务器联合起来实现其功能,集群中的服务器有各自的角色。适合一次写入,多次读出的场景,不支持文件修改,可以过来做数据分析。
(1)容错性高:主要有多个副本
(2)适合处理大数据:数据规模 可达到 PB级别,文件量能够处理百万这个量级
(3)可构建在廉价机器上
(1)数据访问有延时,做不到毫秒级别的
(2)大量小文件不能高效存储,NameNode会占用大量内存
(3) 可追加写入,不可随机修改,不支持并发写入(不支持多线程写入)
HDFS架构图
名称节点,HDFS的管理者。
(1)管理HDFS的名字空间,维护管理所有文件的元数据。
(2)管理DataNode上的数据块,决定文件数据块存储到哪个DataNode。
(3)处理客户端的读写请求。
(4)按用户确定的副本策略管理HDFS中数据的副本
负责存储数据。
(1)存储实际的数据块,每个HDFS数据块默认大小为128MB,存储在本地文件系统的单独文件中。
(2)处理客户端的读写请求,执行数据块的读和写。
(3)向 NameNode 定期汇报数据块信息,并定时向 NameNode 发送心跳信号保持联系。
(1)FSImage文件存储文件的元数据,HDFS运行时会将该文件加载到内存中。
(2)edits文件记录对文件的写操作(修改)。
(3)写文件操作只会对内存中的元数据进行修改,不会对FSImage文件进行修改。
用于合并元数据文件FSImage。
(1)将NameNode上的FSImage和edits文件复制到本地,并将两者合并生成新的FSImage文件,再将新的FSImage文件复制回NameNode。
(2)不是NameNode的备份,但可以帮助恢复NameNode,因为其上保存了大部分的元数据信息。
SecondaryNameNode,用于合并元数据文件FSImage。
(1)将NameNode上的FSImage和edits文件复制到本地,并将两者合并生成新的FSImage文件,再将新的FSImage文件复制回NameNode。
(2)不是NameNode的备份,但可以帮助恢复NameNode,因为其上保存了大部分的元数据信息。
就是客户端。
(1)文件切分。文件上传HDFS的时候,Client将文件切分成一个一个的Block,然后进行上传;
(2)与 NameNode 交互,获取文件的位置信息;
(3)与 DataNode 交互,读取或者写入数据;
(4) Client提供一些命令来管理 HDFS,比如 NaneNode 格式化;
(5) Client可以通过一些命令来访问 HDFS,比如对 HDFS 增删查改操作;
(1)适合处理大数据:HDFS能够处理TB级甚至PB级的数据,文件数量也可达百万以上。
(2)高容错性:自动保存数据的多个副本,当某一副本丢失,可以自动重备。
(3)低成本运行:HDFS可以运行在廉价的商用计算机上。通过多副本机制提高可靠性。
(1)不适合处理低延时的数据访问。
(2)不适合处理大量的小文件:小文件太多会消耗NameNode的内存。同时小文件的寻址时间超过读取时间,也违背了HDFS的设计目标。
(3)不支持并发写入和文件随机修改:HDFS的文件同时只能有一个用户进行写操作,也仅支持文件的数据追加。
MapReduce是一种用于处理大规模数据集的编程模型和处理框架,最初由Google开发,在后来由Apache Hadoop项目采用,并被广泛应用于分布式计算环境中。它的主要特点和运行架构如下:
总体而言,MapReduce通过将大规模数据处理任务分解为独立的Map和Reduce阶段,并允许这些阶段在分布式环境中并行运行,实现了高效的大规模数据处理。
快速:
易用:
通用:
随处运行:
代码简洁:
"冷备"、"温备"和"热备"是备份和恢复策略中常见的术语,它们描述了在不同情况下备份数据的状态以及备份过程的准备程度。这些术语主要用于描述系统或数据的备份和恢复策略。
总的来说,冷备、温备和热备是备份策略中的不同选择,其选择取决于对系统可用性、备份时间窗口以及备份数据的一致性要求等方面的考虑。
大数据是一个广泛的概念,涵盖了处理和分析大规模数据集的方法和技术。在大数据领域,数据可以分为结构化数据、半结构化数据和非结构化数据等几种类型。以下是大数据中常见的数据类型:
这些数据类型在大数据领域中常常同时存在,大数据技术和工具的发展旨在有效地处理和分析这些不同类型的数据。
结构化数据和非结构化数据是大数据中的两种主要类型,它们在数据组织和处理方式上有所不同。
结构化数据:结构化数据是按照固定模式和格式组织的数据,通常以表格形式存储在关系数据库或类似的数据存储系统中,具有明确定义的字段和数据类型。这使得结构化数据容易被查询、分析和处理。常见的结构化数据包括订单信息、客户信息、交易记录等。
例:一个电子商务网站的订单数据库就是典型的结构化数据。每个订单的信息通常包括订单号、订单日期、顾客姓名、商品名称、数量、价格等字段,这些信息被组织成表格形式,方便进行查询和分析。
非结构化数据:非结构化数据是指没有明确结构的数据,通常不适合用传统的表格或数据库形式进行存储和处理。这种类型的数据可能包括文本、图像、音频、视频等形式,不易用规则或模式进行描述和组织。非结构化数据的处理通常需要借助特定的技术和工具,如自然语言处理、图像识别等。
例:社交媒体上的用户发表的帖子、评论和图片就是典型的非结构化数据。这些数据没有固定的格式和字段,每条帖子或评论可能包含文字、图片、链接等多种内容形式,不适合直接存储在传统的关系数据库中。处理这种数据通常需要使用自然语言处理技术来分析文本内容,使用图像识别技术来识别图片中的信息
结构化数据和非结构化数据之间的区别主要体现在数据的组织形式、存储方式、处理方法和应用场景上。
1.组织形式:
结构化数据具有明确定义的结构,通常以表格形式存储在数据库中,每个数据项都有预定义的字段和数据类型。
非结构化数据没有明确的结构,可能以文本、图像、音频、视频等形式存在,不适合用表格形式进行存储和处理。
2.存储方式:
结构化数据通常存储在关系型数据库中,使用表格、行和列的结构来组织数据。
非结构化数据则可能存储在文件系统中,或者使用专门的非关系型数据库或数据湖进行存储。
3.处理方法:
结构化数据的处理通常采用SQL等结构化查询语言,可以通过预定义
的查询语句进行数据检索、分析和处理。
非结构化数据的处理可能涉及到自然语言处理、图像识别、音频处理等复杂技术,需要根据具体的数据类型采用不同的处理方法。
4.应用场景:
结构化数据通常用于传统的业务应用和数据分析,如企业资源规划(ERP)、客户关系管理(CRM)等。
非结构化数据则常用于新兴的应用场景,如社交媒体分析、文本挖掘、图像识别、语音识别等领域。
总的来说,结构化数据和非结构化数据之间的区别在于数据的组织形式、存储方式、处理方法和应用场景上的不同。了解这些区别有助于选择合适的工具和技术来处理和分析不同类型的数据。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。