摘要: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 中各模块的性能阐明如表 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 写入失败。
HDFS 原理
MRS 应用 HDFS 的正本机制来保证数据的可靠性,HDFS 中每保留一个文件则主动生成 1 个备份文件,即共 2 个正本。HDFS 正本数可通过“dfs.replication”参数查问。
- 当 MRS 集群中 Core 节点规格抉择为非本地盘(hdd)时,若集群中只有一个 Core 节点,则 HDFS 默认正本数为 1。若集群中 Core 节点数大于等于 2,则 HDFS 默认正本数为 2。
- 当 MRS 集群中 Core 节点规格抉择为本地盘(hdd)时,若集群中只有一个 Core 节点,则 HDFS 默认正本数为 1。若集群中有两个 Core 节点,则 HDFS 默认正本数为 2。若集群中 Core 节点数大于等于 3,则 HDFS 默认正本数为 3。
MRS 服务的 HDFS 组件反对以下局部个性:
- HDFS 组件反对纠删码,使得数据冗余缩小到 50%,且可靠性更高,并引入条带化的块存储构造,最大化的利用现有集群单节点多磁盘的能力,使得数据写入性能在引入编码过程后,仍和原来多正本冗余的性能靠近。
- 反对 HDFS 组件上节点平衡调度和单节点内的磁盘平衡调度,有助于扩容节点或扩容磁盘后的 HDFS 存储性能晋升。
更多对于 Hadoop 的架构和具体原理介绍,请参见:http://hadoop.apache.org/。
HDFS 文件根底操作
在 MRS 集群中,您能够通过治理控制台、客户端命令以及 API 接口等多种形式进行 HDFS 文件的操作。
MRS 集群的创立您可参考创立集群。
1、通过 MRS 治理控制台查看 HDFS 文件信息
在 MRS 治理控制台,点击集群名称进入到 MRS 集群详情页面,单击“文件治理”。
在文件治理页面,即可查看 HDFS 文件列表,并能够执行文件删除、文件夹增删以及与 OBS 服务数据的导入导入。
2、通过集群客户端查看 HDFS 文件信息
a. 登录 MRS 集群的 FusionInsight Manager 页面(如果没有弹性 IP,需提前购买弹性 IP),新建一个用户 hdfstest,绑定用户组 supergroup,绑定角色 System_administrator(集群未开启 Kerberos 认证可跳过)。
b. 下载并装置集群全量客户端,例如客户端装置目录为“/opt/client”,相干操作可参考装置客户端。
c. 为客户端节点绑定一个弹性 IP,而后应用 root 用户登录主 Master 节点,并进入客户端所在目录并认证用户。
cd /opt/client
source bigdata_env
kinit hbasetest(集群未开启 Kerberos 认证可跳过)
d. 应用 hdfs 命令进行 HDFS 文件相干操作。
例如:
- 创立文件夹:
hdfs dfs -mkdir /tmp/testdir
- 查看文件夹:
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
- 上传本地文件至 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
- 下载 HDFS 文件到本地:
hdfs dfs -get /tmp/testdir/test.txt /opt
3、通过 API 接口拜访 HDFS 文件
HDFS 反对应用 Java 语言进行程序开发,应用 API 接口拜访 HDFS 文件系统,从而实现大数据业务利用。
具体的 API 接口内容请参考 HDFS Java API。
对于 HDFS 利用开发及相干样例代码介绍,请参考《HDFS 开发指南》。
更多华为云 MapReduce(MRS)服务性能介绍及详情,请戳 这里 理解。
点击关注,第一工夫理解华为云陈腐技术~