![Hadoop+Spark大数据技术(微课版)](https://wfqqreader-1252317822.image.myqcloud.com/cover/911/53255911/b_53255911.jpg)
1.4.3 Hadoop伪分布式模式的配置
Hadoop可以在单个节点(一台机器)上以伪分布式模式运行,同一个节点既作为NameNode,又作为DataNode,读取的是HDFS的文件。
1.配置相关文件
需要配置相关文件,才能够使Hadoop在伪分布式模式下运行。Hadoop的配置文件位于/usr/local/hadoop/etc/hadoop中,进行伪分布式模式的配置时,需要修改两个配置文件,即core-site.xml和hdfs-site.xml。
可以使用Vim编辑器打开core-site.xml文件:
![](https://epubservercos.yuewen.com/34C2C0/31729190603279406/epubprivate/OEBPS/Images/58327_22_03.jpg?sign=1739577895-LZDqguNIog2H58I2yRpMuajZjnuOaD4s-0-b7364e60da8ae1e814be2bb2fdea2e5b)
core-site.xml文件的初始内容如下:
![](https://epubservercos.yuewen.com/34C2C0/31729190603279406/epubprivate/OEBPS/Images/58327_22_04.jpg?sign=1739577895-V33IRzIKmX8Np1WClQViCXXt21c8CoKJ-0-095295dd6f5c0c51d5abd163daedc6dc)
core-site.xml文件修改后的内容如下:
![](https://epubservercos.yuewen.com/34C2C0/31729190603279406/epubprivate/OEBPS/Images/58327_22_05.jpg?sign=1739577895-R72zKiFNSTA0OcgQO5ivsL8ynF8qPNCL-0-286cbcf66376a4a291cfcc8fe50994c3)
在上面的配置文件中,hadoop.tmp.dir用于保存临时文件。fs.defaultFS用于设置访问HDFS的地址,其中9000是端口号。
此外,需要修改配置文件hdfs-site.xml,该文件修改后的内容如下:
![](https://epubservercos.yuewen.com/34C2C0/31729190603279406/epubprivate/OEBPS/Images/58327_22_06.jpg?sign=1739577895-rz6wP9281jbJACn6IbwkN9VfRNoJtYj6-0-5d3d381f23c80ee7732cf9cd482e202c)
![](https://epubservercos.yuewen.com/34C2C0/31729190603279406/epubprivate/OEBPS/Images/58327_23_01.jpg?sign=1739577895-QZ9vr2Vs692rJ93NK7uw7GiqYB6Yythd-0-2803ef070bbc6146fe5a5bb01ef09477)
在hdfs-site.xml文件中,dfs.replication用于指定副本的数量,这是因为HDFS出于可靠性和可用性的考虑,进行冗余存储,以便某个节点发生故障时,能够使用冗余数据继续进行处理。但由于这里采用伪分布式模式,总共只有一个节点,所以,只可能有一个副本,因此将dfs.replication的值设置为1。dfs.namenode.name.dir用于设置NameNode的元数据的保存目录。dfs.datanode.data.dir用于设置DataNode的数据保存目录。
注意:Hadoop的运行模式(即单机模式或伪分布式模式)是由配置文件决定的,启动Hadoop时会读取配置文件,然后根据配置文件决定运行在什么模式下。因此,如果需要从伪分布式模式切换回单机模式,只需要删除core-site.xml中的配置项即可。
2.NameNode格式化
修改配置文件以后,还要执行NameNode格式化,命令如下:
![](https://epubservercos.yuewen.com/34C2C0/31729190603279406/epubprivate/OEBPS/Images/58327_23_02.jpg?sign=1739577895-SoQPM3CRsJOWJTf3dkm333rbYMnd9d94-0-a88d1bed230aae9141b8b3dd6ddc9b01)
3.启动Hadoop
执行下面的命令启动Hadoop:
![](https://epubservercos.yuewen.com/34C2C0/31729190603279406/epubprivate/OEBPS/Images/58327_23_03.jpg?sign=1739577895-9u2oiTcPmxJ1qSFE4fxJod9BraSdrPCd-0-90e3700ce4e18fe8d6715eae7ea048bb)
4.使用Web页面查看HDFS信息
Hadoop成功启动后,可以在Linux系统中打开浏览器,在地址栏输入http://localhost:50070,按Enter键,就可以查看NameNode和DataNode的信息,如图1-26所示,还可以在线查看HDFS中的文件。
![](https://epubservercos.yuewen.com/34C2C0/31729190603279406/epubprivate/OEBPS/Images/58327_23_04.jpg?sign=1739577895-1RRvV8yqxI2tgMnc5aDeog1Np0fR1jlR-0-b6ee92efb6607a55ef7f2a298f6e184a)
图1-26 使用Web页面查看HDFS信息
5.运行Hadoop伪分布式实例
要使用HDFS,首先需要在HDFS中创建用户目录,命令如下:
![](https://epubservercos.yuewen.com/34C2C0/31729190603279406/epubprivate/OEBPS/Images/58327_24_01.jpg?sign=1739577895-qxLEEock9GDK5DYgSlSlTVC6bnqeK2DG-0-312e7399bbff7c319bff615207444d7e)
接下来,把本地文件系统的/usr/local/hadoop/etc/hadoop目录中的所有.xml文件作为输入文件,复制到HDFS的/user/hadoop/input目录下,命令如下:
![](https://epubservercos.yuewen.com/34C2C0/31729190603279406/epubprivate/OEBPS/Images/58327_24_02.jpg?sign=1739577895-hPxVn2MvlDNcXfQOxrGucvhRON8zlQFL-0-6743d26c8ff7c8175cb76b5994ee35c1)
现在可以以伪分布式模式运行Hadoop中自带的wordcount程序,命令如下:
![](https://epubservercos.yuewen.com/34C2C0/31729190603279406/epubprivate/OEBPS/Images/58327_24_03.jpg?sign=1739577895-NzMqvj9fCaU0IIvcMHVJ72NFL26qA4aP-0-f45812e57cf781fd565ab60352b70ad5)
运行结束后,可以通过如下命令查看HDFS中output文件夹中的内容:
![](https://epubservercos.yuewen.com/34C2C0/31729190603279406/epubprivate/OEBPS/Images/58327_24_04.jpg?sign=1739577895-jqVX1sm6YtFvG4Kzj5syej9pFLQPzZVO-0-fed6e7bf3e0ca2b89ffaa302d7ba586f)
需要强调的是,Hadoop运行程序时,输出目录不能存在,否则会提示错误信息。因此,若要再次执行wordcount程序,需要先执行如下命令删除HDFS中的output文件夹:
![](https://epubservercos.yuewen.com/34C2C0/31729190603279406/epubprivate/OEBPS/Images/58327_24_05.jpg?sign=1739577895-iqtLQeQhuIagq6EurbRzPseCaL5eqzu3-0-cea47c002e5c916e01904d70c407d103)
6.关闭Hadoop
如果要关闭Hadoop,可以执行如下命令:
![](https://epubservercos.yuewen.com/34C2C0/31729190603279406/epubprivate/OEBPS/Images/58327_24_06.jpg?sign=1739577895-n51i469xRJIsibFU9IGTEipBGvQKeAF3-0-a9781541001359337283b86bc2b0de94)
7.配置PATH变量
前面在启动Hadoop时,都是先进入/usr/local/hadoop目录中,再执行./sbin/start-dfs.sh,等同于执行/usr/local/hadoop/sbin/start-dfs.sh。实际上,通过设置PATH变量,可以在执行命令时不用带上命令本身所在的路径。例如,打开一个Linux终端,在任何一个目录下执行ls命令时,都没有带上ls命令的路径。执行ls命令时,执行的是/bin/ls这个程序,之所以不需要带上命令路径,是因为Linux系统已经把ls命令的路径加入PATH变量中。当执行ls命令时,系统根据PATH这个环境变量中包含的目录位置逐一进行查找,直至在这些目录位置下找到匹配的ls程序(若没有匹配的程序,则系统会提示该命令不存在)。
同样,可以把start-dfs.sh、stop-dfs.sh等命令所在的目录/usr/local/hadoop/sbin加入环境变量PATH中,这样,以后在任何目录下都可以直接使用命令start-dfs.sh启动Hadoop,而不用带上命令路径。具体配置PATH变量的方法是,首先使用Vim编辑器打开~/.bashrc这个文件,然后在这个文件的最前面加入如下一行代码:
![](https://epubservercos.yuewen.com/34C2C0/31729190603279406/epubprivate/OEBPS/Images/58327_24_07.jpg?sign=1739577895-aMQGpinYJ6jDaHvmXrKQ5BJYlfzjxqGW-0-72a83f9d10d9912fb660fa7a67cdc501)
如果要继续把其他命令的路径也加入PATH变量中,也需要修改~/.bashrc这个文件,在上述路径的后面用英文冒号隔开,把新的路径加到后面即可。
将这些命令路径添加到PATH变量后,执行命令source~/.bashrc使设置生效。然后在任何目录下只需要直接执行start-dfs.sh命令就可启动Hadoop,执行stop-dfs.sh命令即可停止Hadoop。