HDFS实验二:部署HDFS/学习搭建HDFS

news/2025/1/16 3:32:16/

 一、HDFS实验:部署HDFS指导

2.1 实验目的

1. 理解HDFS存在的原因;

2. 理解HDFS体系架构;

3. 理解master/slave架构;

4. 理解为何配置文件里只需指定主服务、无需指定从服务;

5. 理解为何需要客户端节点;

6. 学会逐一启动HDFS和统一启动HDFS;

7. 学会在HDFS中上传文件。

2.2 实验要求

要求实验结束时,已构建出以下HDFS集群:

1. master上部署主服务NameNode;

2. Slave1、2、3上部署从服务DataNode;

3. client上部署HDFS客户端。

待集群搭建好后,还需在client上进行下述操作:

1. 在HDFS里新建目录;

2. 将client上某文件上传至HDFS里刚才新建的目录。

2.3 实验原理

2.3.1 分布式文件系统

分布式文件系统(Distributed File System)是指文件系统管理的物理存储资源不一定直接连接在本地节点上,而是通过计算机网络与节点相连。该系统架构于网络之上,势必会引入网络编程的复杂性,因此分布式文件系统比普通磁盘文件系统更为复杂。

2.3.2 HDFS

HDFS(Hadoop Distributed File System)为大数据平台其它所有组件提供了基本的存储功能。它具有高容错、高可靠、可扩展、高吞吐率等特征,为大数据存储和处理提供了强大的底层存储架构。

HDFS是一个主/从(master/slave)体系结构,从最终用户的角度来看,它就像传统的文件系统,可通过目录路径对文件执行CRUD操作。由于其分布式存储的性质,HDFS集群拥有一个NameNode和一些DataNodes,NameNode管理文件系统的元数据,DataNode存储实际的数据。

HDFS开放文件系统的命名空间以便用户以文件形式存储数据,秉承“一次写入、多次读取”的原则。客户端通过NameNode和DataNodes的交互访问文件系统,联系NameNode以获取文件的元数据,而真正的文件I/O操作是直接和DataNode进行交互的。

2.3.3 HDFS基本命令

HDFS基本命令格式如下:

hadoop fs -cmd args

其中,cmd为具体的操作,args为参数。

部分HDFS命令示例如下:

hadoop fs -mkdir /user/trunk          #建立目录/user/trunk
hadoop fs -ls /user                  #查看/user目录下的目录和文件
hadoop fs -lsr /user                 #递归查看/user目录下的目录和文件
hadoop fs -put test.txt /user/trunk      #上传test.txt文件至/user/trunk
hadoop fs -get /user/trunk/test.txt      #获取/user/trunk/test.txt文件
hadoop fs -cat /user/trunk/test.txt      #查看/user/trunk/test.txt文件内容
hadoop fs -tail /user/trunk/test.txt      #查看/user/trunk/test.txt文件的最后1000行
hadoop fs -rm /user/trunk/test.txt       #删除/user/trunk/test.txt文件
hadoop fs -help ls                   #查看ls命令的帮助文档

2.3.4 HDFS适用场景

HDFS 提供高吞吐量应用程序数据访问功能,适合带有大型数据集的应用程序,以下是一些常用的应用场景:

数据密集型并行计算:数据量极大,但是计算相对简单的并行处理,如大规模Web信息搜索;

计算密集型并行计算:数据量相对不是很大,但是计算较为复杂的并行计算,如3D建模与渲染、气象预报和科学计算;

数据密集与计算密集混合型的并行计算,如3D电影的渲染。

HDFS在使用过程中有以下限制:

HDFS不适合大量小文件的存储,因NameNode将文件系统的元数据存放在内存中,因此存储的文件数目受限于NameNode的内存大小;

HDFS适用于高吞吐量,而不适合低时间延迟的访问;

流式读取的方式,不适合多用户写入一个文件(一个文件同时只能被一个客户端写),以及任意位置写入(不支持随机写);

HDFS更加适合写入一次,读取多次的应用场景。

2.4 实验步骤

部署HDFS主要步骤如下:

1. 配置Hadoop的安装环境;

2. 配置Hadoop的配置文件;

3. 启动HDFS服务;

4. 验证HDFS服务可用。

2.4.1 在master服务器上确定存在hadoop安装目录

[root@master ~]# ls  /usr/cstor/hadoop

显示结果如图2-1所示:

图2-1 确认hadoop安装目录

2.4.2 确认集群服务器之间可SSH免密登录

使用ssh工具登录到每一台服务器,执行命令ssh 主机名,确认每台集群服务器均可SSH免密登录。若无法SSH免密登录,请参照实验一的1.4.4节进行配置。

2.4.3 修改HDFS配置文件

(1)设置JDK安装目录

编辑文件“/usr/cstor/hadoop/etc/hadoop/hadoop-env.sh”,找到如下一行:

export JAVA_HOME=${JAVA_HOME}

将这行内容修改为:

export JAVA_HOME=/usr/local/jdk1.7.0_79/

这里的“/usr/local/jdk1.7.0_79/”就是JDK安装位置,如果不同,请根据实际情况更改。

(2)指定HDFS主节点

编辑文件“/usr/cstor/hadoop/etc/hadoop/core-site.xml”,将如下内容嵌入此文件里最后两行的<configuration></configuration>标签之间:

<property><name>hadoop.tmp.dir</name><value>/usr/cstor/hadoop/cloud</value>
</property>
<property><name>fs.defaultFS</name><value>hdfs://master:8020</value>
</property>

(3)拷贝集群配置至其它服务器

在master机上执行下列命令,将配置好的hadoop拷贝至slaveX、client。

[root@master ~]# cat  ~/data/2/machines
slave1
salve2
slave3
client
[root@master ~]# for  x  in  `cat  ~/data/2/machines` ; do  echo  $x ; scp  -r  /usr/cstor/hadoop/etc  $x:/usr/cstor/hadoop  ; done;

2.4.4 启动HDFS

在master服务器上格式化主节点:

[root@master ~]# hdfs  namenode  -format

配置slaves文件,将localhost修改为slave1~3:

[root@master ~]# vi /usr/cstor/hadoop/etc/hadoop/slaves
slave1
slave2
slave3

统一启动HDFS:

[root@master ~]#cd /usr/cstor/hadoop
[root@master hadoop]# sbin/start-dfs.sh 

2.4.5 通过查看进程的方式验证HDFS启动成功

分别在master、slave1~3四台机器上执行如下命令,查看HDFS服务是否已启动。

[root@master sbin]#  jps                                         #jps查看java进程

若启动成功,在master上会看到类似的如下信息:

6208 NameNode
6862 Jps
6462 SecondaryNameNode   

而在slave1、slave2、slave3上会看到类似的如下信息:

6208 DataNode
6862 Jps

2.4.6 使用client上传文件

从client服务器向HDFS上传文件。

[root@client ~]# hadoop fs -put  ~/data/2/machines / 

执行命令:hadoop fs -ls /,查看文件是否上传成功。

如图2-2所示:

图2-2 查看文件是否上传成功

二、具体实操:

步骤1:配置集群ssh免密

  1. 1.先进行网络映射配置
  1. 2.其次在master上生成秘钥
  1. 3.把生成的公钥发送到包括master在内的所有服务器上

步骤2:修改HDFS配置

  1. 1.先在Hadoop-env.sh文件中修改 jdk为绝对路径
  2. 2.在core-site.xml中指定HDFS的主节点(键值对的形式)
  3. 3.拷贝该配置到集群其他子集上,首先查看你的集群所有子集

步骤3:启动HDFS

1.在master服务器上格式化主节点;

2.其次配置slaves文件,将localhost修改为slave1~3;   
3.最后在hadoop安装目录下统一启动HDFS;
4.用jps 命令在各个子集检验是否启动节点成功;

步骤4:上传文件至HDFS

  1. hdfs配置成功后可以在client上向HDFS上传文件:(把根目录下/data/2/machines文件上传到HDFS)

 


http://www.ppmy.cn/news/350196.html

相关文章

论文浅尝 | ERNIE-ViL:从场景图中获取结构化知识来学习视觉语言联合表示

笔记整理&#xff1a;朱珈徵&#xff0c;天津大学硕士 链接&#xff1a;https://www.aaai.org/AAAI21Papers/AAAI-6208.YuFei.pdf 动机 现有的视觉语言预训练方法试图通过在大的图像文本数据集上的视觉基础任务来学习联合表示&#xff0c;包括基于随机掩码子词的掩码语言建模、…

CRE6281B

概述 CRE6281BS6 为高性能多模式 PWM 反激式控制器。该产品方便用户以较少的外围元器件、较低的系统成本设计出高性能的交直流转换开关电源。CRE6281BS6 提供了极为全面和性能优异的智能化保护功能&#xff0c;包括逐周期过流保护、过载保护、软启动、芯片过温保护、VDD 欠压锁…

【JavaScript 逆向】极验四代无感验证码逆向分析

前言 四代无感验证码相较于滑块验证码区别就是没有底图&#xff0c;一键通过模式&#xff0c;所以不需要轨迹以及计算缺口距离&#xff0c;步骤更少&#xff0c;四代滑块可以阅读&#xff1a;【JavaScript 逆向】极验四代滑块验证码逆向分析 声明 本文章中所有内容仅供学习交…

c语言打力扣第89场双周赛第一题和315场周赛第一、二题(c语言)

目录 一、6208.有效时间的数目(简单题) (c语言暴力解法) 二、6204.于对应负数同时存在的最大正整数(简单题)(c语言求解) 三、6205.反转之后不同正数的数目(中等题)(c语言求解) 总结 一、6208.有效时间的数目(简单题) (c语言暴力解法) 89场双周赛第一题&#xff1a; int co…

MW6208U盘量产问题

micov(迈科微) MW6208量产问题 1. 要先检查芯片类型&#xff0c;可用Chip Genius 工具。 2. 但有时候检测出来的芯片类型是不对的&#xff0c;就比如我今天修的这个U 盘&#xff0c;芯片是 MXT8208 &#xff0c;但是我上网下载了这个量产工具却出现如下情况。这…

六级备考6天|CET-6|听力第五六讲|6月11日|19:44~20:07

目录 第五讲 第六讲 第五讲 第六讲 ​​​​​​​

【appium】appium自动化入门之API(上)

这个系列预计会讲启动APP—元素定位—初步使用—API命令详解 本系列没提过的知识点也不用急&#xff0c;大家可以点击文末小卡片进群来一起交流 目录 第 2 章 初步使用 2.1 启动 app&#xff08;淘宝&#xff09; 前言 2.1.1 下载 aapt 2.1.2 获取 apk 包名 2.1.3 获取 launch…

win11系统更新 键盘失灵

系统更新重启后usb键盘突然无法识别 更新键盘驱动和重装芯片组驱动都尝试过无效&#xff0c;遂怀疑是这次更新有问题。 找了好久发现罪魁祸首就是这个libusb的驱动&#xff0c;在设备管理器里面将它卸载后键盘恢复正常