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

目录
相关文章
|
5月前
|
分布式计算 Hadoop Java
65 Hadoop工作流调度系统
65 Hadoop工作流调度系统
68 0
|
16天前
|
分布式计算 资源调度 监控
Hadoop生态系统深度剖析:面试经验与必备知识点解析
本文深入探讨了Hadoop生态系统的面试重点,涵盖Hadoop架构、HDFS、YARN和MapReduce。了解Hadoop的主从架构、HDFS的读写流程及高级特性,YARN的资源管理与调度,以及MapReduce编程模型。通过代码示例,如HDFS文件操作和WordCount程序,帮助读者巩固理解。此外,文章强调在面试中应结合个人经验、行业动态和技术进展展示技术实力。
|
3月前
|
分布式计算 资源调度 Hadoop
在Linux系统上安装Hadoop的详细步骤
【1月更文挑战第4天】在Linux系统上安装Hadoop的详细步骤
426 0
|
8月前
|
分布式计算 Hadoop
win系统hadoop启动时RM uses DefaultResourceCalculator问题解决
org.apache.hadoop.yarn.exceptions.YarnRuntimeException: RM uses DefaultResourceCalculator which used only memory as resource-type but invalid resource-types specified 错误
|
4月前
|
分布式计算 网络协议 Hadoop
大数据成长之路------hadoop集群的部署 配置系统网络(静态) 新增集群(三台)
大数据成长之路------hadoop集群的部署 配置系统网络(静态) 新增集群(三台)
27 0
|
4月前
|
分布式计算 资源调度 大数据
【大数据技术Hadoop+Spark】Spark架构、原理、优势、生态系统等讲解(图文解释)
【大数据技术Hadoop+Spark】Spark架构、原理、优势、生态系统等讲解(图文解释)
208 0
|
7月前
|
存储 分布式计算 资源调度
Hadoop生态系统特点
Hadoop生态系统特点
49 0
|
9月前
|
数据采集 分布式计算 监控
Hadoop生态系统中的数据质量与数据治理:Apache Atlas和Apache Falcon的作用
Hadoop生态系统中的数据质量与数据治理:Apache Atlas和Apache Falcon的作用
|
9月前
|
数据采集 存储 分布式计算
Hadoop生态系统中的数据质量与数据治理:Apache Atlas和Apache Falcon的作用
Hadoop生态系统中的数据质量与数据治理:Apache Atlas和Apache Falcon的作用
|
9月前
|
分布式计算 Ubuntu Hadoop
Hadoop生态系统中的云计算与容器化技术:Apache Mesos和Docker的应用
Hadoop生态系统中的云计算与容器化技术:Apache Mesos和Docker的应用

相关实验场景

更多