以此记录自己使用Mac学习hadoop的心酸过程。网上有很多零零散散的教程,遇到的问题各不相同,希望我也能为大家提供一点帮助。

一、集群环境配置

1.基本安排

在CentOS802配置NameNode,CentOS803配置ResourceManager,CentOS804配置SecondaryNameNode。

2.具体配置

在CentOS802上进行配置分发,主要的配置文件包括:core-site.xml、hdfs-site.xml、yarn-site.xml、mapred-site.xml四个配置文件,存放路径为

$HADOOP_HOME/etc/hadoop

(1)配置core-site.xml

cd $HADOOP_HOME/etc/hadoop
vim core-site.xml

配置内容如下:

<configuration>
    <!-- 指定NameNode的地址 -->
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://CentOS802:8020</value>
    </property>

    <!-- 指定hadoop数据的存储目录 -->
    <property>
        <name>hadoop.tmp.dir</name>
        <value>/opt/module/hadoop-3.3.1/data</value>
    </property>

    <!-- 配置HDFS网页登录使用的静态用户为atguigu -->
    <property>
        <name>hadoop.http.staticuser.user</name>
        <value>ptong</value>
    </property>
</configuration>

(2)配置hdfs-site.xml

vim hdfs-site.xml

配置内容如下:

<configuration>
	<!-- nn web端访问地址-->
	<property>
        <name>dfs.namenode.http-address</name>
        <value>CentOS802:9870</value>
    </property>
	<!-- 2nn web端访问地址-->
    <property>
        <name>dfs.namenode.secondary.http-address</name>
        <value>CentOS804:9868</value>
    </property>
</configuration>

(3)配置yarn-site.xml

vim yarn-site.xml

配置内容如下:

<configuration>
    <!-- 指定MR走shuffle -->
    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>

    <!-- 指定ResourceManager的地址-->
    <property>
        <name>yarn.resourcemanager.hostname</name>
        <value>CentOS803</value>
    </property>
    
    <!-- 开启日志聚集功能 -->
	<property>
 	  <name>yarn.log-aggregation-enable</name>
  	  <value>true</value>
	</property>
	<!-- 设置日志聚集服务器地址 -->
	<property>  
 	  <name>yarn.log.server.url</name>  
  	  <value>http://CentOS02:19888/jobhistory/logs</value>
	</property>
	<!-- 设置日志保留时间为7天 -->
	<property>
  	  <name>yarn.log-aggregation.retain-seconds</name>
	  <value>604800</value>
	</property>
</configuration>

(4)配置mapred-site.xml

vim mapred-site.xml

配置内容如下:

<configuration>
	<!-- 指定MapReduce程序运行在Yarn上 -->
    <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>
	
	<!-- 历史服务器端地址 -->
	<property>
  	  <name>mapreduce.jobhistory.address</name>
  	  <value>hadoop102:10020</value>
	</property>

	<!-- 历史服务器web端地址 -->
	<property>
  	  <name>mapreduce.jobhistory.webapp.address</name>
   	 <value>hadoop102:19888</value>
	</property>
</configuration>

4)在集群上分发配置好的Hadoop配置文件

xsync /opt/module/hadoop-3.3.1/etc/hadoop/

5)去803和804上查看文件分发情况

cat /opt/module/hadoop-3.3.1/etc/hadoop/core-site.xml
cat /opt/module/hadoop-3.3.1/etc/hadoop/core-site.xml

二、启动集群

1.配置workers

vim /opt/module/hadoop-3.3.1/etc/hadoop/workers

在该文件中增加如下内容:

CentOS802
CentOS803
CentOS804

注意:该文件中添加的内容结尾不允许有空格,文件中不允许有空行。
同步所有节点配置文件

分发:

xsync /opt/module/hadoop-3.3.1/etc

2.启动集群

(1)如果集群是第一次启动,先格式化:

hdfs namenode -format

注意:如果不是第一次启动,一定要先停止namenode和datanode进程,并且要删除所有机器的data和logs目录,然后再进行格式化。
(2)启动HDFS

sbin/start-dfs.sh

(3)在CentOS803上启动YARN

sbin/start-yarn.sh

(4)Web端查看HDFS的NameNode
浏览器中输入:http://CentOS802:9870,查看HDFS上存储的数据信息
(5)Web端查看YARN的ResourceManager
浏览器中输入:http://CentOS803:8088,查看YARN上运行的Job信息

备注:我已经在前文做过ip映射,但这里仍然只能输入ip地址才能打开网站,尚未找到原因和解决办法。

3.启动、关闭集群

(1)整体启动/停止HDFS

start-dfs.sh/stop-dfs.sh

(2)整体启动/停止YARN

start-yarn.sh/stop-yarn.sh

(3)分别启动/停止HDFS组件

hdfs --daemon start/stop namenode/datanode/secondarynamenode

(4)启动/停止YARN

yarn --daemon start/stop  resourcemanager/nodemanager