![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=1739598749-jGhrB1nqf6PqPuNMxbycUall8zx8Db3B-0-7ae37aa89caf1af0e85c0546b091fa4c)
core-site.xml文件的初始内容如下:
![](https://epubservercos.yuewen.com/34C2C0/31729190603279406/epubprivate/OEBPS/Images/58327_22_04.jpg?sign=1739598749-qAhkWUPUa3OZXzT10kHOX8GLHF6M1jT6-0-b7407b53f677fb6edd0bc94b0e86d1c4)
core-site.xml文件修改后的内容如下:
![](https://epubservercos.yuewen.com/34C2C0/31729190603279406/epubprivate/OEBPS/Images/58327_22_05.jpg?sign=1739598749-0wEMNQkkFI0iFUrRQXRC8DY9zNptEYT3-0-6e9713017e6cb43ec01f744108a9d1a7)
在上面的配置文件中,hadoop.tmp.dir用于保存临时文件。fs.defaultFS用于设置访问HDFS的地址,其中9000是端口号。
此外,需要修改配置文件hdfs-site.xml,该文件修改后的内容如下:
![](https://epubservercos.yuewen.com/34C2C0/31729190603279406/epubprivate/OEBPS/Images/58327_22_06.jpg?sign=1739598749-ftvd4JG54xGUveIcWwKlGtK2pOdTvOlu-0-d4000677eeaa12749594a0d7e5cac58e)
![](https://epubservercos.yuewen.com/34C2C0/31729190603279406/epubprivate/OEBPS/Images/58327_23_01.jpg?sign=1739598749-Zhd4sb6WqgeS5svnn4ig2kYVETzQXYYB-0-bf58732594e1768ead65945cc967fc97)
在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=1739598749-9XjVJJFdokE1uDb6Bu71AZPtDe2jyy3l-0-8b98b96aaa0810002c8d0b27a8360c15)
3.启动Hadoop
执行下面的命令启动Hadoop:
![](https://epubservercos.yuewen.com/34C2C0/31729190603279406/epubprivate/OEBPS/Images/58327_23_03.jpg?sign=1739598749-Zvd9rzhHW4glHNKBmJ3svHGx5MQefCP2-0-673a11d9bf1a5ad4ce0b19bb4efdf9b1)
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=1739598749-XBsz2750rIsQVRcyDEGbUeyxBRTx7mPg-0-a8d8c3de7a022aeab95866f5389c38d1)
图1-26 使用Web页面查看HDFS信息
5.运行Hadoop伪分布式实例
要使用HDFS,首先需要在HDFS中创建用户目录,命令如下:
![](https://epubservercos.yuewen.com/34C2C0/31729190603279406/epubprivate/OEBPS/Images/58327_24_01.jpg?sign=1739598749-mJ8LlumbASpar9mD7IjAEgRHFTTzB3Zv-0-3f95b2dcd523a7e78b707a34e61cd9c5)
接下来,把本地文件系统的/usr/local/hadoop/etc/hadoop目录中的所有.xml文件作为输入文件,复制到HDFS的/user/hadoop/input目录下,命令如下:
![](https://epubservercos.yuewen.com/34C2C0/31729190603279406/epubprivate/OEBPS/Images/58327_24_02.jpg?sign=1739598749-eOyAeFuCmVtIASPv26IVBiE7lNqDk4pN-0-8b1e401011e776609c7dc0fe6a6584f0)
现在可以以伪分布式模式运行Hadoop中自带的wordcount程序,命令如下:
![](https://epubservercos.yuewen.com/34C2C0/31729190603279406/epubprivate/OEBPS/Images/58327_24_03.jpg?sign=1739598749-5eHao4qxdOB28WkQ0ocpmZMOuO9EajnW-0-dbe86f66c34c70cdeaf719f5f1ca80b5)
运行结束后,可以通过如下命令查看HDFS中output文件夹中的内容:
![](https://epubservercos.yuewen.com/34C2C0/31729190603279406/epubprivate/OEBPS/Images/58327_24_04.jpg?sign=1739598749-zG29k4BQFUhaBQbipMeTZf47DulD54l4-0-416130458a3fe8e4773851d9195d4e3d)
需要强调的是,Hadoop运行程序时,输出目录不能存在,否则会提示错误信息。因此,若要再次执行wordcount程序,需要先执行如下命令删除HDFS中的output文件夹:
![](https://epubservercos.yuewen.com/34C2C0/31729190603279406/epubprivate/OEBPS/Images/58327_24_05.jpg?sign=1739598749-ZUPOhZyo4547A02WcbpCjx9QrJlDQLfd-0-ba755f00bf7d1d396281c946d20149cb)
6.关闭Hadoop
如果要关闭Hadoop,可以执行如下命令:
![](https://epubservercos.yuewen.com/34C2C0/31729190603279406/epubprivate/OEBPS/Images/58327_24_06.jpg?sign=1739598749-MByeEcs8O6MvZsuYZR5SqqvYHXwUi3xP-0-f1f0ebe076817243c4f85e44bc7a5bfb)
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=1739598749-T6hJFEfbLpvQp0SqOFF3wNtRnGKyM5JO-0-a862092906954947daa56815a7bd724c)
如果要继续把其他命令的路径也加入PATH变量中,也需要修改~/.bashrc这个文件,在上述路径的后面用英文冒号隔开,把新的路径加到后面即可。
将这些命令路径添加到PATH变量后,执行命令source~/.bashrc使设置生效。然后在任何目录下只需要直接执行start-dfs.sh命令就可启动Hadoop,执行stop-dfs.sh命令即可停止Hadoop。