hadoop的系统认知

简介: 我们生活在一个数据大爆炸的时代,数据飞快的增长,急需解决海量数据的存储和计算问题Hadoop适合海量数据 分布式存储 和 分布式计算Hadoop的作者是Doug Cutting,Hadoop这个名字是作者的孩子给他的毛绒象玩具起的名字

什么是Hadoop


我们生活在一个数据大爆炸的时代,数据飞快的增长,急需解决海量数据的存储和计算问题 Hadoop适合海量数据 分布式存储 和 分布式计算Hadoop的作者是Doug Cutting,Hadoop这个名字是作者的孩子给他的毛绒象玩具起的名字

Hadoop发行版介绍


目前Hadoop已经演变为大数据的代名词,形成了一套完善的大数据生态系统,所以针对Hadoop就出现了很多发行版Apache Hadoop:官方版本,开源 Cloudera Hadoop(CDH):商业版本,对官方版本做了一些优化,提供收费技术支持,提供界面操作,方便集群运维管理


HortonWorks(HDP):开源,提供界面操作,方便运维管理


注意:目前HDP已经被CDH收购,都是属于一个公司的产品

建议在实际工作中搭建大数据平台时选择 CDH或者HDP,方便运维管理

Hadoop版本演变历史


20210811115157747.png

Hadoop3.x的细节优化


  • u Java改为支持8及以上
  • u MR任务级本地优化
  • u HDFS支持纠删码
  • u 多重服务默认端口变更
  • u HDFS支持多NameNode2.

Hadoop三大核心组件介绍


  • u HDFS负责海量数据的 分布式存储
  • u MapReduce是一个计算模型,负责海量数据的 分布式计算
  • u YARN主要负责 集群资源的管理和调度

Hadoop集群安装部署


伪分布式分布式20210811115434391.png

为了保证操作安全,不在hadoop上字节操作。

20210811223146973.png

HDFS介绍


2021081122332524.png

HDFS(HadoopDistributed File System)


HDFS是一种允许文件通过网络在多台主机上分享的文件系统可以让多台机器上的多个用户分享文件和存储空间


分布式文件管理系统有很多,HDFS只是其中一种实现


注意:HDFS不适合存储小文件


HDFS的全称是Hadoop Distributed File System ,Hadoop的 分布式 文件 系统


它是一种允许文件通过网络在多台主机上分享的文件系统,可以让多台机器上的多个用户分享文件和存储空间


其实分布式文件管理系统有很多,HDFS只是其中一种实现而已  还有 GFS(谷歌的)、TFS(淘宝的)、S3(亚马逊的)


为什么会有多种分布式文件系统呢?这样不是重复造轮子吗?


因为不同的分布式文件系统的特点是不一样的,HDFS是一种适合大文件存储的分布式文件系统,不适合小文件存储,什么叫小文件,例如,几KB,几M的文件都可以认为是小文件

HDFS的Shell介绍


2021081113544645.png

使用hadoop bin目录的hdfs命令,后面指定dfs,表示是操作分布式文件系统的,这些属于固定格式。


在PATH中配置了hadoop的bin目录,可以直接使用hdfs就可以了

20210811135611549.png

这里的xxx是一个占位符,具体我们想对hdfs做什么操作,就可以在这里指定对应的命令了大多数hdfs 的命令和对应的Linux命令类似


HDFS的schema是hdfs,authority是集群中namenode所在节点的ip和对应的端口号,把ip换成主机名  也是一样的,path是我们要操作的文件路径信息


其实后面这一长串内容就是core-site.xml配置文件中fs.defaultFS属性的值,这个代表的是HDFS的地址。

<configuration>
 <property>
        <name>fs.defaultFS</name>
        <value>hdfs://hadoop100:9000</value>
    </property>
    <property>
        <name>hadoop.tmp.dir</name>
        <value>/data/hadoop_repo</value>
   </property>
</configuration>

HDFS的常见Shell操作


  1. -ls:查询指定路径信息
  2. -get:下载文件到本地
  3. -put:从本地上传文件
  4. -mkdir [-p]:创建文件夹
  5. -cat:查看HDFS文件内容
  6. -rm [-r]:删除文件/文件夹

20210814224047906.png

统计HDFS指定目录下文件的个数和每个文件的大小:

HDFS体系结构


  • HDFS支持主从结构,主节点称为 NameNode ,支持多个从节点称为 DataNode ,支持多个
  • HDFS中还包含一个 SecondaryNameNode 进程

20210811223421479.png

NameNode介绍


NameNode是整个文件系统的管理节点

它主要维护着整个文件系统的文件目录树,文件/目录的信息

每个文件对应的数据块列表,并且还负责接收用户操作请求

20210811225755729.png

这几个文件在core-site.xml中

20210811224320474.png

20210811224202750.png

fsimage 中的数据


维护了整个文件的数据详细信息,数据存储在哪个block 哪个node

20210811224502703.png

edits中的数据


这个是当前正在上传的信息存储在edits,类似于事务,只有上传到hdfs成功后,会将数据存储在fsimage。


通过hdfs ove -i edits_****  -o edits_***.xml  将二进制文件转为xml来查看.

20210811225101653.png

20210811225155730.png

secondaryName会将edits内容合并到fsimages,这部分是由框架实现的,我们不需要考虑。

seen_txid中的数据


保存的是edits后面的编号,这个编号是连续的。如果有丢失namenode启动报错,如果强制启动则会丢失数据。

20210811225504732.png

VERSION中的数据


20210811225645930.png

SecondaryNameNode介绍


主要负责定期的把edits文件中的内容合并到fsimage中


这个合并操作 为checkpoint,在合的时候会对edits中的内容进行转换,生成新的内容保存到fsimage文件中


注意:在NameNode的HA架构中没有SecondaryNameNode进程,文件合并操作会由standby NameNode负责实现

DataNode介绍


提供真实文件数据的存储服务


1. block2

HDFS会按照固定的大小,顺序对文件进行划分并编号,划分好的每一个块称一个Block,HDFS默认Block大小是 128MB


HDFS中,如果一个文件小于一个数据块的大小,那么并不会占用整个数据块的存储空间是存储在哪里呢?

20210811230118651.png

这个目录的文件必须通过namenode上传,如果你上传一个文件是不会识别的。

2.  Replication:多副本机制,HDFS默认副本数量为3

通过dfs.replication属性控制

20210811230423866.png

hdfs put时可以指定副本数量2021081123043872.png

20210811230014606.png

NameNode总结


NameNode维护了两份关系

第一份关系:File与Block list的关系 ,对应的关系信息存储在fsimage和edits文件中(当NameNode启动的时候会把文件中的元数据信息加载到内存中) ,这也是文件越多集群启动越慢。

第二份关系:DataNode与Block的关系 (当DataNode启动时会把当前节点上的Block信息和节点信息上报给NameNode)

每个文件的metadata占用150字节,和文件大小无关。

当文件过多时,metadata会非常大.

为什么不建议随便格式化hdfs?


version中存储了一个clusterid,如果格式化hdfs后,namenode的clusterId会变化,而datanode的clusterId不变,这会导致集群启动失败。

20210811225645930.png

HDFS的回收站


HDFS为每个用户创建一个回收站目录:/user/用户名/.Trash/

例如删除一个文件,如果没有设置回收站策略会直接提示deleted.

20210814224104628.png

回收站中的数 都会有一个默认保存周期,过期未恢复则会被HDFS自动彻底删除

注意:HDFS的回收站默认是没有开启的,需要修改core-site.xml中的 fs.trash.interval 属性

设定回收站时间

20210814224526504.png

永久删除,跳过回收站,类似于windows  shift+delete

如果文件过大也会直接删除.  windows也是类似.

HDFS的安全模式


集群刚启动时HDFS会进入安全模式,此时无法执行写操作

查看安全模式:hdfs dfsadmin -safemode get

离开安全模式:hdfs dfsadmin -safemode leave

20210814224722150.png

定时上传数据到hdfs


20210814225939982.png

20210814225912317.png

HDFS的高可用(HA)


HDFS的HA,表示一个集群中存在多个NameNode,只有一个NameNode是 Active 状态,其它的是 Standby 状态


ActiveNameNode(ANN)负责所有客户端的操作,StandbyNameNode(SNN)用来同步ANN的状态信息,以提供快速故障恢复能力

20210814230516732.png

HDFS的高扩展(Federation)


如果namenode上的metadata过大,高可用不能解决内存不足的问题.

Federation可解决单一命名空间的一些问题,提供以下特性


  1. HDFS集群扩展性
  2. 性能更高效
  3. 良好的隔离性

20210814230812455.png

目录
相关文章
|
分布式计算 Hadoop Java
65 Hadoop工作流调度系统
65 Hadoop工作流调度系统
128 0
|
6月前
|
分布式计算 Hadoop 数据挖掘
Hadoop生态系统介绍(一)
Hadoop生态系统介绍(一)
126 4
|
6月前
|
分布式计算 Hadoop 分布式数据库
Hadoop生态系统介绍(二)大数据技术Hadoop入门理论系列之一----hadoop生态圈介绍
Hadoop生态系统介绍(二)大数据技术Hadoop入门理论系列之一----hadoop生态圈介绍
191 2
|
4月前
|
存储 SQL 分布式计算
Hadoop生态系统概述:构建大数据处理与分析的基石
【8月更文挑战第25天】Hadoop生态系统为大数据处理和分析提供了强大的基础设施和工具集。通过不断扩展和优化其组件和功能,Hadoop将继续在大数据时代发挥重要作用。
|
4月前
|
存储 分布式计算 资源调度
Hadoop生态系统概览:从HDFS到Spark
【8月更文第28天】Hadoop是一个开源软件框架,用于分布式存储和处理大规模数据集。它由多个组件构成,旨在提供高可靠性、高可扩展性和成本效益的数据处理解决方案。本文将介绍Hadoop的核心组件,包括HDFS、MapReduce、YARN,并探讨它们如何与现代大数据处理工具如Spark集成。
361 0
|
5月前
|
分布式计算 Hadoop Linux
Hadoop检查本地文件系统:
【7月更文挑战第24天】
55 6
|
5月前
|
分布式计算 Hadoop
|
5月前
|
存储 分布式计算 Hadoop
阿里巴巴飞天大数据架构体系与Hadoop生态系统的深度融合:构建高效、可扩展的数据处理平台
技术持续创新:随着新技术的不断涌现和应用场景的复杂化,阿里巴巴将继续投入研发力量推动技术创新和升级换代。 生态系统更加完善:Hadoop生态系统将继续扩展和完善,为用户提供更多元化、更灵活的数据处理工具和服务。
|
6月前
|
存储 SQL 分布式计算
Hadoop 生态系统
【6月更文挑战第20天】Hadoop 生态系统
68 3
|
6月前
|
存储 分布式计算 Hadoop
Hadoop生态系统详解:HDFS与MapReduce编程
Apache Hadoop是大数据处理的关键,其核心包括HDFS(分布式文件系统)和MapReduce(并行计算框架)。HDFS为大数据存储提供高容错性和高吞吐量,采用主从结构,通过数据复制保证可靠性。MapReduce将任务分解为Map和Reduce阶段,适合大规模数据集的处理。通过代码示例展示了如何使用MapReduce实现Word Count功能。HDFS和MapReduce的结合,加上YARN的资源管理,构成处理和分析大数据的强大力量。了解和掌握这些基础对于有效管理大数据至关重要。【6月更文挑战第12天】
278 0

相关实验场景

更多