【笔记】Hadoop 伪分布式模式

前言

Hadoop伪分布式模式配置

准备工作

开启Mac的ssh

Hadoop环境变量(MacOS)

1
2
export HADOOP_HOME=/usr/local/Cellar/hadoop/3.2.1/libexec/
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

Hadoop环境变量(Linux)

1
2
export HADOOP_HOME=/home/app/hadoop-2.7.1
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

配置 core-site.xml

编辑配置文件

MacOS

1
vim /usr/local/Cellar/hadoop/3.2.1/libexec/etc/hadoop/core-site.xml

Linux

1
vim hadoop/etc/hadoop/core-site.xml

修改配置文件

  • <configuration></configuration>标签内添加配置

fs.default.name:指定HDFS中NameNode的地址
hadoop.tmp.dir:指定Hadoop运行时产生文件的存储目录

1
2
3
4
5
6
7
8
9
<property>
<name>fs.default.name</name>
<value>hdfs://localhost:9000</value>
</property>

<property>
<name>hadoop.tmp.dir</name>
<value>~/.hadoop/data/tmp</value>
</property>

为什么配置临时文件目录

  • 在默认不配置临时文件存储目录的情况下,Hadoop会将临时文件存储在/tmp目录中,而/tmp目录属于Linux系统管理,Linux会根据需要删除临时文件,为了保证临时文件不被删除,需要指定一个其他目录作为Hadoop的临时文件存储目录

配置 hdfs-site.xml 文件

编辑配置文件

MacOS

1
vim /usr/local/Cellar/hadoop/3.2.1/libexec/etc/hadoop/hdfs-site.xml

Linux

1
vim hadoop/etc/hadoop/hdfs-site.xml

修改配置文件

  • <configuration></configuration>标签内添加配置

dfs.replication:表示备份数量, 默认为3,伪分布式值必须为1
dfs.permissions:设置HDFS操作权限,false表时任何用户都可以在HDFS上操作文件,在生产环境下不要设置这个配置

1
2
3
4
5
6
7
8
9
<property>
<name>dfs.replication</name>
<value>1</value>
</property>

<property>
<name>dfs.permissions</name>
<value>false</value>
</property>

配置 mapred-site.xml 文件

根据模版复制一份(Linux)

1
cp mapred-site.xml.template mapred-site.xml

编辑配置文件

MacOS

1
vim /usr/local/Cellar/hadoop/3.2.1/libexec/etc/hadoop/mapred-site.xml

Linux

1
vim hadoop/etc/hadoop/mapred-site.xml

修改配置文件

  • <configuration></configuration>标签内添加配置

mapreduce.framework.name:指定Mapreduce运行的框架为Yarn

1
2
3
4
<property> 
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>

配置 yarn-site.xml 文件

编辑配置文件

MacOS

1
vim /usr/local/Cellar/hadoop/3.2.1/libexec/etc/hadoop/yarn-site.xml

Linux

1
vim hadoop/etc/hadoop/yarn-site.xml

修改配置文件

  • <configuration></configuration>标签内添加配置

yarn.resourcemanager.hostname:指定ResourceManager的地址
yarn.nodemanager.aux-services:指定NodeManager获取数据的方式,2.x版本使用mapreduce_shuffle,3.x版本使用mapreduce_stream

1
2
3
4
5
6
7
8
9
<property>
<name>yarn.resourcemanager.hostname</name>
<value>hadoop01</value>
</property>

<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>

配置 slaves 文件

编辑配置文件

1
vim hadoop/etc/hadoop/slaves

修改配置文件

  • 指定Hadoop集群中的所有成员地址,如果/etc/hosts中指定了地址名,可以直接配置
  • 群启的时候会读取这里的地址
1
localhost

首次启动格式化

MacOS

1
/usr/local/Cellar/hadoop/3.2.1/libexec/bin/hdfs namenode -format

Linux

1
hadoop/bin/hdfs namenode -format

直接群启

  • 一次性启动NameNodeSecondaryNameNodeDataNodeNodeManagerResourceManager

MacOS

1
sh /usr/local/Cellar/hadoop/3.2.1/libexec/sbin/start-all.sh

Linux

1
sh hadoop/sbin/start-all.sh

更多启动方式

传送门

完成

  • 查看正在运行的java程序
1
jps
  • 进入网页localhost:9870

  • 进入网页localhost:8088

  • 进入网页localhost:50070

参考文献

哔哩哔哩——zhvsvd
简书——张照博