博客 Hadoop框架及HDFS详细概述

Hadoop框架及HDFS详细概述

   数栈君   发表于 2025-01-23 11:03  204  0

一、Hadoop

1、分布式和集群

    分布式: 分布式的主要工作是分解任务,将职能拆解,多个人在一起做不同的事
    集群: 集群主要是将同一个业务,部署在多个服务器上 ,多个人在一起做同样的事

http://dtstack-static.oss-cn-hangzhou.aliyuncs.com/2021bbs/files_user1/article/c04e527074d4e71db65f1993496bcdfe..png



2、Hadoop框架

2.1 概述

Hadoop简介:是Apache旗下的一个用Java语言实现开源软件框架,是一个存储和计算大规模数据的软件平台。
Hadoop起源: Doug Cutting 创建的,最早起源一个Nutch项目。
三驾马车: 谷歌的三遍论文加速了hadoop的研发
Hadoop框架意义: 作为大数据解决方案,越来越多的企业将Hadoop 技术作为进入大数据领域的必备技术。

狭义上来说:Hadoop指Apache这款开源框架,它的核心组件有:HDFS,MR,YANR
广义上来说:Hadoop通常是指一个更广泛的概念——Hadoop生态圈

Hadoop发行版本: 分为开源社区版和商业版。
开源社区版:指由Apache软件基金会维护的版本,是官方维护的版本体系,版本丰富,兼容性稍差。
商业版:指由第三方商业公司在社区版Hadoop基础上进行了一些修改、整合以及各个服务组件兼容性测试而发行的版本,如: clouderaCDH等。

2.2 版本更新

1.x版本系列: hadoop的第二代开源版本,该版本基本已被淘汰        
hadoop组成: HDFS(存储)和MapReduce(计算和资源调度)

2.x版本系列: 架构产生重大变化,引入了Yarn平台等许多新特性
hadoop组成: HDFS(存储)和MapReduce(计算)和YARN(资源调度)

3.x版本系列: 因为2版本的jdk1.7不更新,基于jdk1.8升级产生3版本
hadoop组成: HDFS(存储)和MapReduce(计算)和YARN(资源调度)

2.3 Hadoop架构详解

简单聊下hadoop架构?

当前版本hadoop组成: HDFS , MapReduce ,YARN

HDFS: 分布式文件存储系统,Hadoop Distributed File System,负责海量数据存储
元数据: 描述数据的数据。你的简历就是元数据,你的人就是具体的数据
NameNode: HDFS中的主节点(Master),主要负责管理集群中众多的从节点以及元数据,不负责真正数据的存储
SecondaryNameNode: 主要负责辅助NameNode进行元数据的存储。如果NameNode是CEO,那么SecondaryNameNode就是秘书。
DataNode: 主要负责真正数据的存储

YARN: 作业调度和集群资源管理的组件。负责资源调度工作
ResourceManager: 接收用户的计算任务,并且负责给任务进行资源分配
NodeManager: 负责执行主节点分配的任务,也就是给MapReduce计算程序提供资源
现实生活例子: ResourceManager对应医生,NodeManager拿药的护士

MapReduce: 分布式计算框架,负责对海量数据进行处理
如何计算: 核心思想是分而治之,Map阶段负责任务的拆解,Reduce阶段负责数据的合并计算
MR(MapReduce)程序: 可以使用Java/Python去调用方法/函数来实现具体的海量数据分析功能

MapReduce计算需要的数据和产生的结果需要HDFS来进行存储
MapReduce的运行需要由Yarn集群来提供资源调度。

2.4 官方示例

在Hadoop的安装包中,官方提供了MapReduce程序的示例examples,以便快速上手体验MapReduce。该示例是使用java语言编写的,被打包成为了一个jar文件。

官方示例jar路径: /export/server/hadoop-3.3.0/share/hadoop/mapreduce

2.4.1 圆周率练习

http://dtstack-static.oss-cn-hangzhou.aliyuncs.com/2021bbs/files_user1/article/5927de5ac8e84c0b42798bc6604053af..png



[root@node1 ~]# cd /export/server/hadoop-3.3.0/share/hadoop/mapreduce
[root@node1 mapreduce]# hadoop jar hadoop-mapreduce-examples-3.3.0.jar pi 10 50
...
Job Finished in 29.04 seconds
Estimated value of Pi is 3.16000000000000000000

2.4.2 词频统计

需求:

    WordCount算是大数据统计分析领域的经典需求了,相当于编程语言的HelloWorld。统计文本数据中,
    相同单词出现的总次数。用SQL的角度来理解的话,相当于根据单词进行group by分组,相同的单词
    分为一组,然后每个组内进行count聚合统计。
    已知hdfs中word.txt文件内容如下,计算每个单词出现的次数

步骤:

1.HDFS根目录中创建input目录,存储word.txt文件
可以在window本地提前创建word.txt文件存储,内容如下:

zhangsan lisi wangwu zhangsan
zhaoliu lisi wangwu zhaoliu
xiaohong xiaoming hanmeimei lilei
zhaoliu lilei hanmeimei lilei

http://dtstack-static.oss-cn-hangzhou.aliyuncs.com/2021bbs/files_user1/article/88eaf012e65de05cc303f0270ff824ff..png


http://dtstack-static.oss-cn-hangzhou.aliyuncs.com/2021bbs/files_user1/article/abaf6c45e221ea86f73dd069b8f94ef5..png


2.在shell命令行中执行如下命令

[root@node1 ~]# cd /export/server/hadoop-3.3.0/share/hadoop/mapreduce
[root@node1 mapreduce]# hadoop jar hadoop-mapreduce-examples-3.3.0.jar wordcount /input /output

注意: /input 和 /output间有空格


3.去HDFS中查看是否生成output目录
注意: output输出目录,在执行第2步命令后会自动生成,如果提前手动创建或者已经存在,就会报以下错误:

org.apache.hadoop.mapred.FileAlreadyExistsException: Output directory hdfs://node1.itcast.cn:8020/output already exists

4.进入output目录查看part-r-00000文件,结果如下:

hanmeimei	2
lilei 3
lisi 2
wangwu 2
xiaohong 1
xiaoming 1
zhangsan 2
zhaoliu 3

3、Hadoop的HDFS

3.1 特点

HDFS文件系统可存储超大文件,时效性稍差。
HDFS具有硬件故障检测和自动快速恢复功能。
HDFS为数据存储提供很强的扩展能力。
HDFS存储一般为一次写入,多次读取,只支持追加写入,不支持随机修改。
HDFS可在普通廉价的机器上运行。
文件存储到HDFS上面可能会被进行切分,一个块的大小最大是128MB。一个块的副本数是3

3.2 架构

http://dtstack-static.oss-cn-hangzhou.aliyuncs.com/2021bbs/files_user1/article/b84a1572e1495c42f77de722f3c6b4a3..png




1- Client: 客户端
文件的上传和下载是由客户端发送请求给到NameNode
还要负责文件的切分;文件上传到HDFS的时候,客户端需要将文件分成一个一个的block,然后进行存储
另外还提供了一些HDFS操作命令,用来操作和访问HDFS

2- NameNode
就是Master主角色。它是一个管理者的角色
处理客户端发送过来的文件的上传/下载请求
管理HDFS元数据(文件路径、文件大小、文件的名称、文件的操作权限、文件被切分之后的block信息...)
配置3副本的策略

3- DataNode
就是Slave从角色。NameNode下达命令,DataNode执行具体的实际的操作。是真正干活的
存储实际的数据块block
负责文件的读写请求
定时向NameNode汇报block信息,心跳机制

4- SecondaryNameNode
并非 NameNode 的热备。当NameNode 挂掉的时候,它并不能马上替换 NameNode 并提供服务。
辅助 NameNode,分担其工作量。
在紧急情况下,可辅助恢复 NameNode。


3.3 副本

block: HDFS被设计成能够在一个大集群中跨机器可靠地存储超大文件。它将每个文件存储成一系列的数据块,这个数据块被称为block,除了最后一个,所有的数据块都是同样大小的。

block: 默认是128MB。副本数是3

hdfs默认文件: https://hadoop.apache.org/docs/r3.3.4/hadoop-project-dist/hadoop-hdfs/hdfs-default.xml

注意:
1- HDFS的相关配置,在企业中一般使用默认
2- 但是这些参数也是可以调整。会根据数据的重要程度进行调整。如果数据的价值太低,可以调低副本数;如果数据的价值高,可以调高副本数

http://dtstack-static.oss-cn-hangzhou.aliyuncs.com/2021bbs/files_user1/article/58021069a445cbd76a3519b0abf4401a..png

3.4 shell命令

***注意: 可以输入hdfs dfs查看HDFS支持的shell命令有那些

hdfs的shell命令概念: 安装好hadoop环境之后,可以执行类似于Linux的shell命令对文件的操作,如ls、mkdir、rm等,对hdfs文件系统进行操作查看,创建,删除等。

hdfs的shell命令格式1: hadoop fs -命令 参数
hdfs的shell命令格式2: hdfs dfs -命令 参数

hdfs的家目录默认: /user/root 如果在使用命令操作的时候没有加根目录/,默认访问的是此家目录/user/root

查看目录下内容: hdfs dfs -ls 目录的绝对路径。注意没有-l -a选项
创建目录: hdfs dfs -mkdir 目录的绝对路径
创建文件: hdfs dfs -touch 文件的绝对路径
移动目录/文件: hdfs dfs -mv 要移动的目录或者文件的绝对路径 目标位置绝对路径
复制目录/文件: hdfs dfs -cp 要复制的目录或者文件的绝对路径 目标位置绝对路径
删除目录/文件: hdfs dfs -rm [-r] 要删除的目录或者文件的绝对路径
查看文件的内容: hdfs dfs -cat 要查看的文件的绝对路径 注意: 除了cat还有head,tail也能查看
查看hdfs其他shell命令帮助: hdfs dfs --help
注意: hdfs有相对路径,如果操作目录或者文件的时候没有以根目录/开头,就是相对路径,默认操作的是/user/root

把本地文件内容追加到hdfs指定文件中: hdfs dfs -appendToFile 本地文件路径 hdfs文件绝对路径

注意: window中使用页面可以完成window本地和hdfs的上传下载,当然linux中使用命令也可以完成文件的上传和下载
linux本地上传文件到hdfs中: hdfs dfs -put linux本地要上传的目录或者文件路径 hdfs中目标位置绝对路径
hdfs中下载文件到liunx本地: hdfs dfs -get hdfs中要下载的目录或者文件的绝对路径 linux本地目标位置路径


路径 hdfs文件绝对路径

注意: window中使用页面可以完成window本地和hdfs的上传下载,当然linux中使用命令也可以完成文件的上传和下载
linux本地上传文件到hdfs中: hdfs dfs -put linux本地要上传的目录或者文件路径 hdfs中目标位置绝对路径
hdfs中下载文件到liunx本地: hdfs dfs -get hdfs中要下载的目录或者文件的绝对路径 linux本地目标位置路径

http://dtstack-static.oss-cn-hangzhou.aliyuncs.com/2021bbs/files_user1/article/4d9b08fa5d1ff20bb79220c1b7eee702..png



本文系转载,版权归原作者所有,如若侵权请联系我们进行删除!

《数据资产管理白皮书》下载地址:https://www.dtstack.com/resources/1073/?src=bbs

《行业指标体系白皮书》下载地址:https://www.dtstack.com/resources/1057/?src=bbs

《数据治理行业实践白皮书》下载地址:https://www.dtstack.com/resources/1001/?src=bbs

《数栈V6.0产品白皮书》下载地址:https://www.dtstack.com/resources/1004/?src=bbs

想了解或咨询更多有关袋鼠云大数据产品、行业解决方案、客户案例的朋友,浏览袋鼠云官网:https://www.dtstack.com/?src=bbs

同时,欢迎对大数据开源项目有兴趣的同学加入「袋鼠云开源框架钉钉技术群」,交流最新开源技术信息,群号码:30537511,项目地址:https://github.com/DTStack

0条评论
社区公告
  • 大数据领域最专业的产品&技术交流社区,专注于探讨与分享大数据领域有趣又火热的信息,专业又专注的数据人园地

最新活动更多
微信扫码获取数字化转型资料
钉钉扫码加入技术交流群