一、前言
前面通过大数据技术基础实验的学习,我们学会了如何使用Xshell连接学校虚拟机并且学会如何配置各虚拟机之间的SSH免密登录,然后还练习了有关Linux的一些基础命令。
本期内容,我们将学习大数据组件其中一个组件——HDFS的环境搭建,这是后面进行各种实验操作的基础。
然后本期实验我们将使用MobaXterm软件进行终端远程连接操作,大部分的都使用的是Xshell操作,这次我们试一下新软件进行操作,你可以直接点击上方软件名称跳转到它的官网下载,在这里我就不对它进行介绍了,顺便说一句,官网下载的是英文版,如果有需要中文版的朋友留下你们的邮箱,我可以发给你们。
这里我已经连接好了学校的三台虚拟机,接下来我们开始实验吧!
二、实验要求
实验结束时,已构建出以下HDFS集群:
- master上部署主服务NameNode
- Slave1、2上部署从服务DataNode
- master上部署HDFS客户端
待集群搭建好后,还需在master上进行下述操作:
- 在HDFS里新建目录
- 将master上某文件上传至HDFS里刚才新建的目录
三、实验原理
1、什么是HDFS?
HDFS(Hadoop Distributed File System)为大数据平台其它所有组件提供了基本的存储功能。它具有高容错、高可靠、可扩展、高吞吐率等特征,为大数据存储和处理提供了强大的底层存储架构。
HDFS是一个主/从(master/slave)体系结构,从最终用户的角度来看,它就像传统的文件系统,可通过目录路径对文件执行CRUD操作。由于其分布式存储的性质,HDFS集群拥有一个NameNode和一些DataNodes,NameNode管理文件系统的元数据,DataNode存储实际的数据。
2、HDFS的体系结构
HDFS采用了典型的Master/Slave系统架构一个HDFS集群通常包含一个NameNode节点和若干个DataNodes节点,一个文件被分成了一个或多个数据块,并存储在一组DataNode上,DataNode节点可分布在不同的机架。NameNode执行文件系统的名字空间打开、关闭、重命名文件或目录等操作,同时负责管理数据块到具体DataNode节点的映射。在NameNode的统一调度下,DataNode复制处理文件系统客户端的读写请求,完成数据库的创建、删除和复制。
3、HDFS基本命令
HDFS基本命令格式:hadoop fs -cmd args,其中,cmd为具体的操作,args为参数。
部分HDFS命令示例如下:
hadoop fs -mkdir /user/trunk #建立目录/user/trunkhadoop fs -ls /user #查看/user目录下的目录和文件hadoop fs -lsr /user #递归查看/user目录下的目录和文件hadoop fs -put test.txt /user/trunk #上传test.txt文件至/user/trunkhadoop 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 -helpls#查看ls命令的帮助文档
四、实验步骤
1、完成集群各服务器之间的ssh免密登录配置
第一个步骤我就不再演示了,不会的朋友可以移步到我之前的博客,里面有详细的配置步骤,链接我就放在下面了:
我放一下截图:
2、在master服务器上确定存在hadoop安装目录
在master服务器终端输入命令:
ls /usr/cstor/hadoop
3、修改HDFS配置文件
(1)设置JDK安装目录
输入命令:
vim /usr/cstor/hadoop/etc/hadoop/hadoop-env.sh
打开hadoop-env.sh文件并进行编辑修改,添加JDK的安装路径。
(2)指定HDFS主节点
输入命令:
vim /usr/cstor/hadoop/etc/hadoop/core-site.xml
打开core-site.xml文件并进行编辑,将如下内容嵌入此文件里最后两行的标签之间:
<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拷贝到其他服务器上。
[2020122145 root@master ~]# cat ~/data/2/machinesslave1 slave2 slave3 client [2020122145 root@master ~]# for x in `cat ~/data/2/machines` ; do echo $x ; scp -r /usr/cstor/hadoop/etc $x:/usr/cstor/hadoop ; done;slave1 Warning: Permanently added 'slave1' (ECDSA) to the list of known hosts. capacity-scheduler.xml 100% 44364.6MB/s 00:00 configuration.xsl 100% 1335277.1KB/s 00:00 container-executor.cfg 100% 318500.2KB/s 00:00 hadoop-env.cmd 100% 36704.6MB/s 00:00 hadoop-metrics.properties 100% 24901.1MB/s 00:00 hadoop-metrics2.properties 100% 25984.7MB/s 00:00 hadoop-policy.xml 100% 968310.6MB/s 00:00 hdfs-site.xml 100% 7751.7MB/s 00:00 httpfs-env.sh 100% 14492.6MB/s 00:00 httpfs-log4j.properties 100% 16573.2MB/s 00:00 httpfs-signature.secret 100% 2147.0KB/s 00:00 httpfs-site.xml 100% 6201.4MB/s 00:00 kms-acls.xml 100% 35185.8MB/s 00:00 kms-env.sh 100% 15273.0MB/s 00:00 kms-log4j.properties 100% 16313.2MB/s 00:00 kms-site.xml 100% 55117.7MB/s 00:00 log4j.properties 100% 11KB 13.9MB/s 00:00 mapred-env.cmd 100% 9511.8MB/s 00:00 mapred-env.sh 100% 13832.8MB/s 00:00 mapred-queues.xml.template 100% 41136.9MB/s 00:00 mapred-site.xml.template 100% 7581.4MB/s 00:00 slaves 100% 1023.1KB/s 00:00 ssl-client.xml.example 100% 23164.5MB/s 00:00 ssl-server.xml.example 100% 22684.4MB/s 00:00 yarn-env.cmd 100% 22503.9MB/s 00:00 yarn-env.sh 100% 45677.6MB/s 00:00 yarn-site.xml 100% 6901.5MB/s 00:00 hadoop-env.sh 100% 42357.2MB/s 00:00 core-site.xml 100% 9551.6MB/s 00:00 slave2 Warning: Permanently added 'slave2' (ECDSA) to the list of known hosts. capacity-scheduler.xml 100% 44365.9MB/s 00:00 configuration.xsl 100% 1335408.2KB/s 00:00 container-executor.cfg 100% 318872.8KB/s 00:00 hadoop-env.cmd 100% 36706.1MB/s 00:00 hadoop-metrics.properties 100% 24901.0MB/s 00:00 hadoop-metrics2.properties 100% 25986.1MB/s 00:00 hadoop-policy.xml 100% 968313.8MB/s 00:00 hdfs-site.xml 100% 7752.0MB/s 00:00 httpfs-env.sh 100% 14493.6MB/s 00:00 httpfs-log4j.properties 100% 16574.2MB/s 00:00 httpfs-signature.secret 100% 2158.4KB/s 00:00 httpfs-site.xml 100% 6201.7MB/s 00:00 kms-acls.xml 100% 35187.8MB/s 00:00 kms-env.sh 100% 15273.8MB/s 00:00 kms-log4j.properties 100% 16314.2MB/s 00:00 kms-site.xml 100% 551110.8MB/s 00:00 log4j.properties 100% 11KB 16.5MB/s 00:00 mapred-env.cmd 100% 9512.5MB/s 00:00 mapred-env.sh 100% 13833.6MB/s 00:00 mapred-queues.xml.template 100% 41138.6MB/s 00:00 mapred-site.xml.template 100% 7582.1MB/s 00:00 slaves 100% 1029.7KB/s 00:00 ssl-client.xml.example 100% 23165.6MB/s 00:00 ssl-server.xml.example 100% 22685.6MB/s 00:00 yarn-env.cmd 100% 22505.5MB/s 00:00 yarn-env.sh 100% 45679.1MB/s 00:00 yarn-site.xml 100% 6901.9MB/s 00:00 hadoop-env.sh 100% 42357.1MB/s 00:00 core-site.xml 100% 9551.7MB/s 00:00 slave3 ssh: Could not resolve hostname slave3: Name or service not known lost connection client ssh: Could not resolve hostname client: Name or service not known lost connection [2020122145 root@master ~]#
4、启动HDFS
(1)首先在master服务器上格式化主节点,输入命令:
hdfs namenode -format
(2)然后配置slaves文件,将localhost修改为slave1和slave2。
输入命令:
vi /usr/cstor/hadoop/etc/hadoop/slaves
进入slavers文件修改成如下:
(3)统一启动HDFS
输入命令:
cd /usr/cstor/hadoop
进去hadoop文件然后执行如下命令启动HDFS:
sbin/start-dfs.sh
5、通过查看进程的方式验证HDFS启动成功
分别在master、slave1~2三台机器上执行如下命令,查看HDFS服务是否已启动。
jps
jps是查看java进程的命令。
如果三台虚拟机分别出现上面结果就说明HDFS服务启动成功了。
6、 使用master上传文件
从master服务器向HDFS上传文件。
输入如下命令:
hadoop fs -put ~/data/2/machines /
然后我们执行命令查看文件是否上传成功:
hadoop fs -ls /
可以看出,我们上传成功了。
五、最后我想说
到这里,我们已经完成了本次实验了,希望大家都能顺利地成功完成本次实验目标并从中学到很多知识。
学校提供的大数据实验平台上面有很多实验,我们的课程肯定不会全部都做完只会做其中的一部分,我后续也会尽可能抽出时间把所有有关大数据的实验都做一遍。
谢谢阅读,期待得到你们的支持!