写点什么

云小课 | MRS 基础入门之 HDFS 组件介绍

发布于: 16 小时前

​​摘要:HDFS 是 MapReduce 服务中的基础文件系统,全称为 Hadoop 的分布式文件系统(Hadoop Distributed File System),可支持实现大规模数据可靠的分布式读写。


本文分享自华为云社区《【云小课】EI第21课 MRS基础入门之HDFS组件介绍》,原文作者:Hi,EI 。



​HDFS 针对的使用场景是数据读写具有“一次写,多次读”的特征,而数据“写”操作是顺序写,也就是在文件创建时的写入或者在现有文件之后的添加操作。HDFS 保证一个文件在一个时刻只被一个调用者执行写操作,而可以被多个调用者执行读操作。

HDFS 结构


HDFS 是一个 Master/Slave 的架构,主要包含主、备 NameNode 和多个 DataNode 角色。在 Master 上运行 NameNode,而在每一个 Slave 上运行 DataNode,ZKFC 需要和 NameNode 一起运行。


NameNode 和 DataNode 之间的通信都是建立在 TCP/IP 的基础之上的。NameNode、DataNode、ZKFC 和 JournalNode 能部署在运行 Linux 的服务器上。


图 1-1 HA HDFS 结构

图 1-1 中各模块的功能说明如表 1-1 所示。


表 1-1 模块说明


HA 即为 High Availability,用于解决 NameNode 单点故障问题,该特性通过主备的方式为主 NameNode 提供一个备用者,一旦主 NameNode 出现故障,可以迅速切换至备 NameNode,从而不间断对外提供服务。


在一个典型 HDFS HA 场景中,通常由两个 NameNode 组成,一个处于 Active 状态,另一个处于 Standby 状态。


为了能实现 Active 和 Standby 两个 NameNode 的元数据信息同步,需提供一个共享存储系统。本版本提供基于 QJM(Quorum Journal Manager)的 HA 解决方案,如图 1-2 所示。主备 NameNode 之间通过一组 JournalNode 同步元数据信息。


通常配置奇数个(2N+1 个)JournalNode,且最少要运行 3 个 JournalNode。这样,一条元数据更新消息只要有 N+1 个 JournalNode 写入成功就认为数据写入成功,此时最多容忍 N 个 JournalNode 写入失败。比如,3 个 JournalNode 时,最多允许 1 个 JournalNode 写入失败,5 个 JournalNode 时,最多允许 2 个 JournalNode 写入失败。


由于 JournalNode 是一个轻量级的守护进程,可以与 Hadoop 其它服务共用机器。建议将 JournalNode 部署在控制节点上,以避免数据节点在进行大数据量传输时引起 JournalNode 写入失败。


图 1-2 基于 QJM 的 HDFS 架构

HDFS 原理


MRS 使用 HDFS 的副本机制来保证数据的可靠性,HDFS 中每保存一个文件则自动生成 1 个备份文件,即共 2 个副本。HDFS 副本数可通过“dfs.replication”参数查询。


l  当 MRS 集群中 Core 节点规格选择为非本地盘(hdd)时,若集群中只有一个 Core 节点,则 HDFS 默认副本数为 1。若集群中 Core 节点数大于等于 2,则 HDFS 默认副本数为 2。


l  当 MRS 集群中 Core 节点规格选择为本地盘(hdd)时,若集群中只有一个 Core 节点,则 HDFS 默认副本数为 1。若集群中有两个 Core 节点,则 HDFS 默认副本数为 2。若集群中 Core 节点数大于等于 3,则 HDFS 默认副本数为 3。


图 1-3 HDFS 架构

MRS 服务的 HDFS 组件支持以下部分特性:


l  HDFS 组件支持纠删码,使得数据冗余减少到 50%,且可靠性更高,并引入条带化的块存储结构,最大化的利用现有集群单节点多磁盘的能力,使得数据写入性能在引入编码过程后,仍和原来多副本冗余的性能接近。


l  支持 HDFS 组件上节点均衡调度和单节点内的磁盘均衡调度,有助于扩容节点或扩容磁盘后的 HDFS 存储性能提升。


更多关于 Hadoop 的架构和详细原理介绍,请参见:http://hadoop.apache.org/

HDFS 文件基础操作


在 MRS 集群中,您可以通过管理控制台、客户端命令以及 API 接口等多种方式进行 HDFS 文件的操作。


MRS 集群的创建您可参考创建集群


l  通过 MRS 管理控制台查看 HDFS 文件信息


在 MRS 管理控制台,点击集群名称进入到 MRS 集群详情页面,单击“文件管理”。


在文件管理页面,即可查看 HDFS 文件列表,并可以执行文件删除、文件夹增删以及与 OBS 服务数据的导入。



​l  通过集群客户端查看 HDFS 文件信息


a.        登录 MRS 集群的 FusionInsightManager 页面(如果没有弹性 IP,需提前购买弹性 IP),新建一个用户 hdfstest,绑定用户组 supergroup,绑定角色 System_administrator(集群未开启 Kerberos 认证可跳过)。



​b.        下载并安装集群全量客户端,例如客户端安装目录为“/opt/client”,相关操作可参考安装客户端


c.        为客户端节点绑定一个弹性 IP,然后使用 root 用户登录主 Master 节点,并进入客户端所在目录并认证用户。


cd /opt/clientsource bigdata_envkinit hdfstest
复制代码


​d.        使用 hdfs 命令进行 HDFS 文件相关操作。

例如:

i.         创建文件夹:

hdfs dfs -mkdir /tmp/testdir

ii.       查看文件夹:

hdfs dfs -ls /tmp


Found 11 items drwx------   - hdfs       hadoop          0 2021-05-20 11:20 /tmp/.testHDFS drwxrwxrwx   - mapred     hadoop          0 2021-05-10 10:33 /tmp/hadoop-yarn drwxrwxrwx   - hive       hadoop          0 2021-05-10 10:43 /tmp/hive drwxrwx---   - hive       hive            0 2021-05-18 16:21 /tmp/hive-scratch drwxrwxrwt   - yarn       hadoop          0 2021-05-17 11:30 /tmp/logs drwx------   - hive       hadoop          0 2021-05-20 11:20 /tmp/monitor drwxrwxrwx   - spark2x    hadoop          0 2021-05-10 10:45 /tmp/spark2x drwxrwxrwx   - spark2x    hadoop          0 2021-05-10 10:44 /tmp/sparkhive-scratch drwxr-xr-x   - hetuserver hadoop          0 2021-05-17 11:32 /tmp/state-store-launcher drwxr-xr-x   - hdfstest   hadoop          0 2021-05-20 11:20 /tmp/testdir drwxrwxrwx   - hive       hadoop          0 2021-05-10 10:43 /tmp/tmp-hive-insert-flag
复制代码


iii.        上传本地文件至 HDFS:

hdfs dfs -put /tmp/test.txt /tmp/testdir  (/tmp/test.txt 提前准备)

执行 hdfs dfs -ls /tmp/testdir 命令检查文件是否存在。


Found 1 items -rw-r--r--   3 hdfstest hadoop         49 2021-05-20 11:21 /tmp/testdir/test.txt
复制代码


​iv.         下载 HDFS 文件到本地:

hdfs dfs -get /tmp/testdir/test.txt /opt


l  通过 API 接口访问 HDFS 文件


HDFS 支持使用 Java 语言进行程序开发,使用 API 接口访问 HDFS 文件系统,从而实现大数据业务应用。

具体的 API 接口内容请参考HDFSJava API

关于 HDFS 应用开发及相关样例代码介绍,请参考《HDFS开发指南》


更多华为云 MapReduce(MRS)服务功能介绍及详情,请戳这里了解。


点击关注,第一时间了解华为云新鲜技术~

发布于: 16 小时前阅读数: 2
用户头像

提供全面深入的云计算技术干货 2020.07.14 加入

华为云开发者社区,提供全面深入的云计算前景分析、丰富的技术干货、程序样例,分享华为云前沿资讯动态,方便开发者快速成长与发展,欢迎提问、互动,多方位了解云计算! 传送门:https://bbs.huaweicloud.com/

评论

发布
暂无评论
云小课 | MRS基础入门之HDFS组件介绍