![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=1739569008-yGpGlMsa2Mo8pfbc0Z7dLTG6v4QjThzV-0-14a0004f226ee98e0670fe158ab57d52)
core-site.xml文件的初始内容如下:
![](https://epubservercos.yuewen.com/34C2C0/31729190603279406/epubprivate/OEBPS/Images/58327_22_04.jpg?sign=1739569008-XSFX20I4q0bNbtHJGr19mFm4ShxncSJF-0-b8aa9c2b75452534c1a9d86b52048bf4)
core-site.xml文件修改后的内容如下:
![](https://epubservercos.yuewen.com/34C2C0/31729190603279406/epubprivate/OEBPS/Images/58327_22_05.jpg?sign=1739569008-LEqQvwHLeajqA5YdrNwwaIyTC7Qy6jFN-0-30b470338dd8590ac96dc0203b670a2c)
在上面的配置文件中,hadoop.tmp.dir用于保存临时文件。fs.defaultFS用于设置访问HDFS的地址,其中9000是端口号。
此外,需要修改配置文件hdfs-site.xml,该文件修改后的内容如下:
![](https://epubservercos.yuewen.com/34C2C0/31729190603279406/epubprivate/OEBPS/Images/58327_22_06.jpg?sign=1739569008-EC9eOxzHqIFsrh3LpbXmu98Asryoc1vv-0-562dc2ce0262f8d11f5c87b446abb12a)
![](https://epubservercos.yuewen.com/34C2C0/31729190603279406/epubprivate/OEBPS/Images/58327_23_01.jpg?sign=1739569008-iGWA9Nft0JcgKDXJuScBDntjqlT5DVo0-0-bc3503aa2ba9321ae565b6480517bde2)
在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=1739569008-8HcRWOL6M89gcT9Obx9Qqm0gk0VHX9qL-0-37501522da27b3882a31575658e985bb)
3.启动Hadoop
执行下面的命令启动Hadoop:
![](https://epubservercos.yuewen.com/34C2C0/31729190603279406/epubprivate/OEBPS/Images/58327_23_03.jpg?sign=1739569008-xF0DX6lrz6W1yzuhCcWpXzHEKwqQe72X-0-658447e45794b2f2c84197605e729bfc)
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=1739569008-wf2VC15vEgBCjpZRDEvdc6eLVIulHWO7-0-812cc807b216937795f4d12c9aedab4f)
图1-26 使用Web页面查看HDFS信息
5.运行Hadoop伪分布式实例
要使用HDFS,首先需要在HDFS中创建用户目录,命令如下:
![](https://epubservercos.yuewen.com/34C2C0/31729190603279406/epubprivate/OEBPS/Images/58327_24_01.jpg?sign=1739569008-iqxB7Ma4FkbKLbZGDQArSpNxajT7mlgk-0-5c5f8845e824099dfe171753e7f3f0af)
接下来,把本地文件系统的/usr/local/hadoop/etc/hadoop目录中的所有.xml文件作为输入文件,复制到HDFS的/user/hadoop/input目录下,命令如下:
![](https://epubservercos.yuewen.com/34C2C0/31729190603279406/epubprivate/OEBPS/Images/58327_24_02.jpg?sign=1739569008-GzefFDVZp9PvUjy6l6GqKOy0Y0Ua23hh-0-c663eedd4624a70240f58968330524f4)
现在可以以伪分布式模式运行Hadoop中自带的wordcount程序,命令如下:
![](https://epubservercos.yuewen.com/34C2C0/31729190603279406/epubprivate/OEBPS/Images/58327_24_03.jpg?sign=1739569008-fJ0nteHohTMgop6U6vsU7LD4kLnQFO2H-0-a5eacd39e47e206af7e37edfc9f1baa2)
运行结束后,可以通过如下命令查看HDFS中output文件夹中的内容:
![](https://epubservercos.yuewen.com/34C2C0/31729190603279406/epubprivate/OEBPS/Images/58327_24_04.jpg?sign=1739569008-kuonrO8ztoMMErfHMCvZvgUz5JmXr9L2-0-b6cc425d05295a22a25bf4391aca0b3a)
需要强调的是,Hadoop运行程序时,输出目录不能存在,否则会提示错误信息。因此,若要再次执行wordcount程序,需要先执行如下命令删除HDFS中的output文件夹:
![](https://epubservercos.yuewen.com/34C2C0/31729190603279406/epubprivate/OEBPS/Images/58327_24_05.jpg?sign=1739569008-sl3D2jUyh6Ff5wwWZs6ODSHvXzXvERFB-0-6f69d74425880263fbcb1110c2b09ba5)
6.关闭Hadoop
如果要关闭Hadoop,可以执行如下命令:
![](https://epubservercos.yuewen.com/34C2C0/31729190603279406/epubprivate/OEBPS/Images/58327_24_06.jpg?sign=1739569008-6hqofoddYJSmVL4kqDjomoRUgFBQBg5K-0-f754c7bbdb576d00b903d0b606ef193e)
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=1739569008-kgFOwCDe7qITSDUAEtjnfu0S8vm04QOA-0-2409e1d99c7a5154dc09e68b180b6a1a)
如果要继续把其他命令的路径也加入PATH变量中,也需要修改~/.bashrc这个文件,在上述路径的后面用英文冒号隔开,把新的路径加到后面即可。
将这些命令路径添加到PATH变量后,执行命令source~/.bashrc使设置生效。然后在任何目录下只需要直接执行start-dfs.sh命令就可启动Hadoop,执行stop-dfs.sh命令即可停止Hadoop。