初始hadoop之hadoop读写备份以及持久化

初识大数据:
在计算机刚刚出世的时候,其目的帮助人们解决大型数据的计算量的问题,计算机将大型数据的计算能力提高了很多倍,解决了人们对于数据的处理能力的瓶颈,可是,随着社会信息化的发展,网络将人们的生活提升到一个更加快速的级别,尤其产生的问题就是人们在日常生活中产生的信息数据越来越多,现有计算机设备的能力很难处理这些数据,或者能处理但是需要非常长的处理时间,而在这个信息化社会,时间就是金钱,过长的处理时间就会影响公司或者企业的战略活动甚至是个人的生活安排,因此,大数据的概念应时代潮流产生了。
大数据的定义:
大数据就是在一定时间内无法使用现有的常规工具对数据的内容进行相应的获取、管理和分析的数据集合。与之对应的就是大数据技术,其是指在各种类型的数据中快速挖掘有价值信息的能力,包括并行数据库、云计算、分布式文件系统、数据挖掘等
 2012年美国开始着手大数据的研究工作,奥巴马更是投入两亿美金在大数据的开发中,他强调大数据会是未来的石油,足以体现大数据在未来的地位
大数据的特点:
在大数据的发展过程中IBM提出大数据的5V特点:Volume(大量)、Velocity(高速)、Variety(多样)、Value(低价值密度)、Veracity(真实性),而总结后大数据会有以下几个特种:
1、信息量特别的巨大:根据百度和谷歌等公司的统计,他们的网站每天会产生PB级的数据量,而人类生产所有的印刷材料的数据量仅仅200PB
2、数据类型多样:随着现代社会的发展,数据类型不仅仅是文档材料,还包括图片、视频、购物信息、地理位置等等
3、处理速度快,当今世界是一个快速发展的社会,时间就是金钱,数据处理就是要在最快的时间内从各种类型的数据中快速获得高价值的信息
4、价值密度低:大量的数据以及数据的多样化,随之带来的问题就是数据的价值密度低,可能很多的数据中真正有价值的只有那么几条数据而已
大数据的作用:
有人把数据比喻成煤矿,不同的煤炭有不同的开采成本和使用价值,而数据就像是这些煤炭一样,如何获取其价值的最大化成为能否赢得竞争的关键,就像阿里巴巴创始人马云说的:未来的时代将不是IT时代,而是DT(Data Technology)的时代,足以说明大数据的重要性。而大数据带来的价值主要体现在以下几个方面:
第一、对大数据的处理分析正成为新一代信息技术融合应用的结点。
移动互联网、物联网、社交网络、数字家庭、电子商务等是新一代信息技术的应用形态,这些应用不断产生大数据。云计算为这些海量、多样化的大数据提供存储和运算平台。通过对不同来源数据的管理、处理、分析与优化,将结果反馈到上述应用中,将创造出巨大的经济和社会价值。
大数据具有催生社会变革的能量。但释放这种能量,需要严谨的数据治理、富有洞见的数据分析和激发管理创新的环境(Ramayya Krishnan,卡内基·梅隆大学海因兹学院院长)。
第二、大数据是信息产业持续高速增长的新引擎。
面向大数据市场的新技术、新产品新服务、新业态会不断涌现。在硬件与集成设备领域,大数据将对芯片、存储产业产生重要影响,还将催生一体化数据存储处理服务器、内存计算等市场。在软件与服务领域,大数据将引发数据快速处理分析、数据挖掘技术和软件产品的发展。
第三、大数据利用将成为提高核心竞争力的关键因素。
 对大数据的分析可以使零售商实时掌握市场动态并迅速做出应对;可以为商家制定更加精准有效的营销策略提供决策支持;可以帮助企业为消费者提供更加及时和个性化的服务;在医疗领域,可提高诊断准确性和药物有效性;在公共事业领域,大数据也开始发挥促进经济发展、维护社会稳定等方面的重要作用。
第四、大数据时代科学研究的方法手段将发生重大改变
但是,任何事物都是双刃剑,大数据在经济发展中的意义并不能取代一切对于社会问题的理性思考,科学发展的逻辑不能被数据所替代。
大数据的发展趋势:
趋势一:数据的资源化
大数据会成为企业和社会关注的重点,成为人们争相抢夺的战略资源
趋势二:与云计算的深度结合
因为数据的大量产生,传统的设备很难实现对于如此庞大数据量的处理,而云计算为他数据提供了弹性可拓展的基础设备,时产生大数据的平台之一,而后期物联网、移动互联等技术会相继融合进来
趋势三:科学理论的突破
与社会发展相同,随着大数据的发展,会有相关的理论和技术产生和消亡,大数据很可能会推动新一轮技术革命
趋势四:数据科学和数据联盟的成立
就像计算机被当作一门单独的课程被设立一样,未来大数据的相关技术也会成为一个独立的可能体系在社会和雪香进行相应的设立和推广
趋势五:数据泄露泛滥
随着数据量的额变大,人们开始越来越关注数据的安全性问题,而每年各大公司都会产生各种各样的数据泄露问题
趋势六:数据管理成为核心竞争力
当数据开始影响人们的生活和企业的运营的收,对于数据的管理成为重中之重,数据资产的管理效果将会直接影响企业的财务表现
趋势七:数据质量是BI(商业智能)成功的关键
大数据的特性决定了其在数据质量上有一定的局限性,数据源的多样性可能会带来很多的低质量数据,想要从这大量的数据中获得利润和发展趋势,就要从中提取有用信息进行分析
趋势八:数据生态系统复合化程度加强
大数据的世界不只是一个单一的、巨大的计算机网络,而是一个由大量活动构件与多元参与者元素所构成的生态系统,而今,这样一套数据生态系统的基本雏形已经形成,接下来的发展就是系统内部的角色细分并对系统结构进行相应的调整,从而使得数据生态系统的符合话程度逐渐增强

大数据之Hadoop
在大数据的发展过程中,出现了一批专门应用与大数据的处理分析工具,如Hadoop,Hbase,Hive,Spark等,我们先从最基础的Hadoop开始进行介绍
Hadoop是apache基金会下所开发的分布式基础架构,实现了一个分布式文件系统(HDFS),HDFS拥有高容错性、高可靠性、高扩展性、高效性、低成本的特性,可以让用户在不了解相关的底层源码的情况下,在廉价的机器上搭配一台完整的服务器进行分布式程序开发,利用集群的高速运算和存储处理自己的业务。
一个应用程序无非就是计算和存储两个部分,Hadoop也不例外,他的两大核心设计就是HDFS和MapReduce两个组建,HDFS实现了Hadoop的海量数据的存储,而MapReduce则为存储的海量数据提供了计算
核心架构:
在Hadoop官方网站上对于Hadoop项目的构成有详细的讲解,主要包括
Hadoop Common:支持其他Hadoop模块的常用实用程序。
Hadoop分布式文件系统(HDFS™):一种分布式文件系统,可提供对应用程序数据的高吞吐量访问。
Hadoop YARN:作业调度和集群资源管理的框架。
Hadoop MapReduce:基于YARN的系统,用于并行处理大型数据集。

Apache的其他Hadoop相关项目包括:
Ambari™:基于Web的工具,用于配置,管理和监控Apache Hadoop集群,包括对Hadoop HDFS,Hadoop MapReduce,Hive,HCatalog,HBase,ZooKeeper,Oozie,Pig和Sqoop的支持。Ambari还提供了一个用于查看群集运行状况的仪表板,例如热图,以及可视化查看MapReduce,Pig和Hive应用程序的功能,以及以用户友好的方式诊断其性能特征的功能。
Avro™:数据序列化系统。
Cassandra™:可扩展的多主数据库,没有单点故障。
Chukwa™:用于管理大型分布式系统的数据收集系统。
HBase™:可扩展的分布式数据库,支持大型表的结构化数据存储。
Hive™:一种数据仓库基础架构,提供数据汇总和即席查询。
Mahout™:可扩展的机器学习和数据挖掘库。
Pig™:用于并行计算的高级数据流语言和执行框架。
Spark™:用于Hadoop数据的快速通用计算引擎。Spark提供了一种简单而富有表现力的编程模型,支持广泛的应用程序,包括ETL,机器学习,流处理和图形计算。
Tez™:基于Hadoop YARN构建的通用数据流编程框架,它提供了一个功能强大且灵活的引擎,可以执行任意DAG任务来处理批量和交互式用例的数据。Tez正在被Hadoop生态系统中的Hive™,Pig™和其他框架以及其他商业软件(例如ETL工具)采用,以取代Hadoop™MapReduce作为底层执行引擎。
ZooKeeper™:用于分布式应用程序的高性能协调服务

在知道了Hadoop集群的项目构成之后我们便开始挨个项目进行说明
Hadoop-----HDFS
1、因为HDFS实例是一个分布式的处理机制,所以可能包括成千上万台服务器计算机,每一个计算机存储文件的一部分,但是,因为各种各样的原因,每一个计算机都有可能在使用过程中出现各种问题,比如断电等,所有这就意味着在这么多的服务器中总有几个是处在无法使用的状态,因此检测故障并能快速的回复保证计算的正常进行是HDFS的核心架构目标
2、HDFS的设计主要是用于批处理而不是通常的用户的交互式的通用应用程序,数据访问的高吞吐量是重点,所以posix放松了对于HDFS的监管,可以通过流式处理的方式对于文件系统中的数据进行相应的处理。
3、因为要处理的数据量特别巨大,单一的服务器根本不可能完成这一任务,所有,HDFS被调整为支持大文件,将一个大的文件分解成多个一样大小的小文件然后分散到各个集群的节点上进行计算
4、为了简化数据的一致性问题以及实现高吞吐量的数据访问,HDFS提供了一个一次写入多次读取的文件访问模型,当文件写入HDFS之后,可以被多次读取进行计算,但是,在一次写入之后除了追加和截断之外,不能再次写入,但是可以通过append方法在文件的末尾进行追加,典型的就是MapReduce应用程序
5、在应用程序请求计算的时候,如果将数据向计算移动的话,因为数据量太大会造成大量的网络延迟以及时间的浪费,并且会消耗大量的资源,但是,如果计算向数据移动,因为计算的应用程序占用的内存很小,在进行传输的过程中不会消耗太多的资源而且传输速度很快,不会产生网络拥塞并提高了系统的整体吞吐量
6、HDFS的设计便于在软件和硬件两个平台进行移植
基于以上6点,也会发现HDFS不适合应用在要求低延迟的数据访问、存储大量的小文件、多用户写入、任意修改文件的场景,因为这几个场景不仅仅不会体现其在数据处理方面的超强的能力,相反还会成为一个拖累,处理能力还不如普通的处理方式
HDFS具有主从架构,集群由一个NameNode和多个DataNodes构成,以及辅助节点Secondary Namenode
NameNode对集群中的文件系统命名空间的主服务器和客户端对于文件的访问组成。存储DataNode中块的管理信息(块管理
通过处理注册和定期心跳来提供Datanode集群成员资格。
进程阻止报告并维护块的位置。
支持块相关操作,如创建,删除,修改和获取块位置。
管理副本放置,阻止复制下的块的复制,并删除过度复制的块。

DataNodes管理节点的存储,每一个DataNode的上有多个block块构成,传入系统的大文件就被存储在着一个个的block块(默认大小为64MB)中并定期的向NameNode发送block块的列表信息(
1、可以存储大于磁盘容量的文件,将块存储在不同的磁盘上,提高了集群磁盘的利用率。
2、将传入的文件转化成块存储,可以实现元数据和块的分离,用一个单独的节点存储块的地址信息等,便于管理。
数据块适合用于数据备份进而提供数据容错能力和提高可用性

Secondary Namenode:辅助NameNode进行fsimage和edit.log的合并,减轻namenode的压力

联邦:
为了横向扩展名称服务,将多个NameNode进行联合,DataNode用作所有的NameNode的存储,向所有的NameNode进行注册,并且datanodes除了定期的发送心跳和阻止报告之外也要处理来自Name Node的命令
Hadoop(2)
Hadoop底层封装的的是HDFS和MapReduce两种框架
在Hdfs中采用的是主从结构(Madter-slaver)就像领导和员工一样,领导负责整个公司的管理工作,而员工就负责向领导汇报工作以及完成领导分发的任务
在HDFS中,NameNode(Master)就负责对整个集群中节点的管理以及维护文件系统树以及文件目录。而DataNode分布在不同的机架上,就像是员工分布在公司别的不同部门一样,在客户端或者领导NameNode的调度下,存储并检索数据块,并定期向NameNode发送所存储的数据块的列表,报告自己的情况,可以让NameNode随时掌握整个集群的资源情况。
概念解释

机架:HDFS集群主要是由分布在不同机架上的多个机架的DataNode组成的,相同机架上的机器之间通过TCP协议进行相应的连接(7077端口),不同机架上的节点通过交换机进行通信,HDFS会通过机架感知策略感知每一个DataNode所属的机架,使用副本放置策略来改进数据的可靠性、可用性和网络带宽的利用率
机架感知策咯:在源码中就是通过判断机架中各个节点与NameNode节点的距离进行判断
分别为0(同一个节点的不同块上)、1(同一个机架的不同节点上)、3(同一个机房的不同机架上)、4(不同的机房)
副本放置策略:为了防止数据意外丢失,就像我们会对手机中的数据在电脑上进行备份一样,我们也会在节点上对数据进行一个备份,默认的是3个备份,
第一个block副本放在和client所在的node里(如果client不在集群范围内,则这第一个node是随机选取的,当然系统会尝试不选择哪些太满或者太忙的node)。
第二个副本放置在与第一个节点不同的机架中的node中(随机选择)。
第三个副本和第二个在同一个机架,随机放在不同的node中。
如果还有更多的副本就随机放在集群的node里
通过这一策略,当发生意外断电等情况的时候还在其余的机架或者几点上进行了数据的存储,可以去其他的数据放置处重新获得数据进行计算,尽量的减少了数据丢失的可能
心跳:在Hdfs中,节点之间通过TCP协议进行通信,DataNode每3s向NameNode发送一个心跳,每10次心跳之后向NameNode发送一个数据块报告自己的信息,通过这些信息,NameNode能够在发生意外之后可以重新创建元数据,并确保每个数据块有足够的副本
元数据:存储在NameNode中,是文件系统中的文件和目录的属性信息,当NameNode启动的时候会创建fsimage和edit.log两个文件(fsimage存储的是文件metadata信息,不包括文件块的位置信息(位置信息是NameNode存放在内存中),edit文件存放是的文件系统的所有更新操作的路径,他们两个都是经过序列化的,当NameNode失败之后,文件metadata信息可以加载fsimage到内存中,在editlog中应用相应的操作)当遇到checkpoint进行触发后,secondaryNameNode会定时的将fsimage和editlog进行合并更新,NameNode就可以随时掌握集群的状态信息,
Client:就是客户端。
文件切分。文件上传 HDFS 的时候,Client 将文件切分成 一个一个的Block,然后进行存储。
与 NameNode 交互,获取文件的位置信息。
与 DataNode 交互,读取或者写入数据。
Client 提供一些命令来管理 HDFS,比如启动或者关闭HDFS。
Client 可以通过一些命令来访问 HDFS。
HDFS读写操作:
1、读操作:
在这里插入图片描述
1、client向namenode请求下载文件
2、Namenode会判断client是否有权向,如果有权限的话会将datanode的元数据信息返回给client
3、Client按照距离和顺序去读取datanode中的block,当datanode发生异常的话会进行记录并上传给datanode节点,剩余的数据读取会略过这个节点bi
4、读取block之后通过append将block整合成一个完整的文件进行使用

读文件的方法:
1、HDFS API
2、HDFS Client Cmd:
Hdfs dfs -get [ignorecrc] [-crc]

2、写操作:
在这里插入图片描述
1、client向namenode发送请求,请求上传文件
2、Namenode会检查常见的文件是否存在以及client是否有操作权限并对client进行响应
3、当客户端开始上传文件的时候会将文件写个成多个packet并在内部已dataqueue的形式进行管理,并向namenode申请blocks进行存储
4、namenode获取适合存储的datanode列表,并根据replicationi进行列表大小的设定
5、建立传输通道将packet写入到datanode当中,在第一个datanode存储packet之后,通过管道将其传送给下一个datanode直到最后一个datanode
6、最后一个datanode存储成功后会返回一个ack packet队列,在pipeline中返回到客户端,当ack成功返回客户端之后,相应的packet会从dataqueue中删除
7、依次进行,直至所有的数据传输完毕

发布了37 篇原创文章 · 获赞 0 · 访问量 420

猜你喜欢

转载自blog.csdn.net/weixin_42864905/article/details/82978809