![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=1739588305-Q2KF094z1DNBuIhO0kBe7PIPhk2zKlEU-0-3ea45726aa7180b46fbd3b783dc9713c)
core-site.xml文件的初始内容如下:
![](https://epubservercos.yuewen.com/34C2C0/31729190603279406/epubprivate/OEBPS/Images/58327_22_04.jpg?sign=1739588305-mk7SvTg5MFoPS18fzgG0B1HWtl5X06sX-0-e13e9c333ba9c4ea65af01114c1dece4)
core-site.xml文件修改后的内容如下:
![](https://epubservercos.yuewen.com/34C2C0/31729190603279406/epubprivate/OEBPS/Images/58327_22_05.jpg?sign=1739588305-ykGyg7fIlqU8hKNZl1EJG3DXASdW2xX5-0-d905a6a342b99932fa46b68cc52db2bd)
在上面的配置文件中,hadoop.tmp.dir用于保存临时文件。fs.defaultFS用于设置访问HDFS的地址,其中9000是端口号。
此外,需要修改配置文件hdfs-site.xml,该文件修改后的内容如下:
![](https://epubservercos.yuewen.com/34C2C0/31729190603279406/epubprivate/OEBPS/Images/58327_22_06.jpg?sign=1739588305-JQ0g3F2XMMHFAtC8QkiqgbxCjjYSW5Pi-0-d70c65be0cccd98e3465723970da3467)
![](https://epubservercos.yuewen.com/34C2C0/31729190603279406/epubprivate/OEBPS/Images/58327_23_01.jpg?sign=1739588305-e8y79RxepHia3DY7OVnZFMBSKW5OuxOn-0-21cb31a498a8e1865c819053c4af616c)
在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=1739588305-ZOorSAHPmWi7dPwtWbLQEkkZ1avJmLPS-0-839b1218426321dfd172c61b525fb07e)
3.启动Hadoop
执行下面的命令启动Hadoop:
![](https://epubservercos.yuewen.com/34C2C0/31729190603279406/epubprivate/OEBPS/Images/58327_23_03.jpg?sign=1739588305-MwJMUtmLHdNUaCUIXzSMr8g3WndvTrdf-0-4d3da297484e094df9bbefd16a704ffc)
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=1739588305-JpIDegOsUcSFixaiL6uykdRxdvgpkOAu-0-4ed37393ee2cd6c9d4371bfc2b32f5eb)
图1-26 使用Web页面查看HDFS信息
5.运行Hadoop伪分布式实例
要使用HDFS,首先需要在HDFS中创建用户目录,命令如下:
![](https://epubservercos.yuewen.com/34C2C0/31729190603279406/epubprivate/OEBPS/Images/58327_24_01.jpg?sign=1739588305-xqWQ1MmxZbGgmcvjWBcvEWWlXGPZo4xJ-0-664459c7c5d77288054674107cd7daa3)
接下来,把本地文件系统的/usr/local/hadoop/etc/hadoop目录中的所有.xml文件作为输入文件,复制到HDFS的/user/hadoop/input目录下,命令如下:
![](https://epubservercos.yuewen.com/34C2C0/31729190603279406/epubprivate/OEBPS/Images/58327_24_02.jpg?sign=1739588305-sXFkO0edOPhc8XVqcKQ1czKqsW1rMlwv-0-9944ad95178849996a13ffd6bbf711f9)
现在可以以伪分布式模式运行Hadoop中自带的wordcount程序,命令如下:
![](https://epubservercos.yuewen.com/34C2C0/31729190603279406/epubprivate/OEBPS/Images/58327_24_03.jpg?sign=1739588305-TPricvdlUMA9PQwpZeRVno2KBJVsgtY1-0-070d92e63c14d94a8d3c3cf5feb14283)
运行结束后,可以通过如下命令查看HDFS中output文件夹中的内容:
![](https://epubservercos.yuewen.com/34C2C0/31729190603279406/epubprivate/OEBPS/Images/58327_24_04.jpg?sign=1739588305-Xc3JTwxCrvhlhcpF0szrwUZyUkQP0zCl-0-c869ad957ef6f7c496b654d46c923987)
需要强调的是,Hadoop运行程序时,输出目录不能存在,否则会提示错误信息。因此,若要再次执行wordcount程序,需要先执行如下命令删除HDFS中的output文件夹:
![](https://epubservercos.yuewen.com/34C2C0/31729190603279406/epubprivate/OEBPS/Images/58327_24_05.jpg?sign=1739588305-WUCVeZwoqMRfmvQVlilxqrWzVmh0CGll-0-e1ac628189f9b4a418f5e57ed23a99ca)
6.关闭Hadoop
如果要关闭Hadoop,可以执行如下命令:
![](https://epubservercos.yuewen.com/34C2C0/31729190603279406/epubprivate/OEBPS/Images/58327_24_06.jpg?sign=1739588305-PmQSnZ24rhbW90UMFRNq0cZVdnBoxDr5-0-cf7f856b51b1115d71783742ea6fc937)
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=1739588305-eAEkeAVoYQlh1PqTFgJVIBDmLorfpuas-0-0b63cf8fa5541897bae22a3f98f3aeff)
如果要继续把其他命令的路径也加入PATH变量中,也需要修改~/.bashrc这个文件,在上述路径的后面用英文冒号隔开,把新的路径加到后面即可。
将这些命令路径添加到PATH变量后,执行命令source~/.bashrc使设置生效。然后在任何目录下只需要直接执行start-dfs.sh命令就可启动Hadoop,执行stop-dfs.sh命令即可停止Hadoop。