hadoop搭建记录03:hadoop集群配置

208 阅读1分钟

1.集群规划

集群规划:
+--------------+---------------------+
|     Node     | Applications        |
+--------------+---------------------+
|  hadoop102   | NameNode            |
|              | DataNode            |
|              | ResourceManager     |
|              | NodeManagere        |
+--------------+---------------------+
|  hadoop103   | SecondaryNameNode   |
|              | DataNode            |
|              | NodeManager         |
+--------------+---------------------+
|  hadoop104   | DataNode            |
|              | NodeManager         |
+--------------+---------------------+

2.编写配置文件

cd /opt/module/hadoop-2.7.6/etc/hadoop

vim core-site.xml

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<configuration>
    <!-- hdfs的地址名称:schame,ip,port-->
    <!-- 在Hadoop1.x的版本中,默认使用的端口是9000。在Hadoop2.x的版本中,默认使用端口是8020 -->
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://hadoop102:8020</value>
    </property>
    <!-- hdfs的基础路径,被其他属性所依赖的一个基础路径 -->
    <property>
        <name>hadoop.tmp.dir</name>
        <value>/opt/module/hadoop2.7.6/tmp</value>
    </property>
</configuration>

vim hdfs-site.xml

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<configuration>
    <!-- namenode守护进程管理的元数据文件fsimage存储的位置-->
    <property>
        <name>dfs.namenode.name.dir</name>
        <value>file://${hadoop.tmp.dir}/dfs/name</value>
    </property>
    <!-- 确定DFS数据节点应该将其块存储在本地文件系统的何处-->
    <property>
        <name>dfs.datanode.data.dir</name>
        <value>file://${hadoop.tmp.dir}/dfs/data</value>
    </property>
    <!-- 块的副本数-->
    <property>
        <name>dfs.replication</name>
        <value>3</value>
    </property>
    <!-- 块的大小(128M),下面的单位是字节-->
    <property>
        <name>dfs.blocksize</name>
        <value>134217728</value>
    </property>
    <!-- secondarynamenode守护进程的http地址:主机名和端口号。参考守护进程布局-->
    <property>
        <name>dfs.namenode.secondary.http-address</name>
        <value>hadoop103:50090</value>
    </property>
  	<!-- namenode守护进程的http地址:主机名和端口号。参考守护进程布局-->
	<property>
  	  <name>dfs.namenode.http-address</name>
  	  <value>hadoop102:50070</value>
	</property>  
</configuration>

vim yarn-site.xml

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<configuration>
    <!-- 指定yarn的shuffle技术-->
    <property>
        <name>yarn.nodemanager.aux-services</name>
       <value>mapreduce_shuffle</value>
    </property>
    <!-- 指定resourcemanager的主机名-->
    <property>
        <name>yarn.resourcemanager.hostname</name>
        <value>hadoop102</value>
    </property> 
    <!--下面的可选-->
    <!--指定shuffle对应的类 -->
	<property> 
	<name>yarn.nodemanager.aux-services.mapreduce_shuffle.class</name>
     <value>org.apache.hadoop.mapred.ShuffleHandler</value> 
	</property>

	<!--配置resourcemanager的内部通讯地址-->
	<property>
	<name>yarn.resourcemanager.address</name>
	<value>hadoop102:8032</value>
	</property>

	<!--配置resourcemanager的scheduler的内部通讯地址-->
	<property>
	<name>yarn.resourcemanager.scheduler.address</name>
	<value>hadoop102:8030</value>
	</property>

	<!--配置resoucemanager的资源调度的内部通讯地址-->
	<property>
	<name>yarn.resourcemanager.resource-tracker.address</name>
	<value>hadoop102:8031</value>
	</property>

	<!--配置resourcemanager的管理员的内部通讯地址-->
	<property>
	<name>yarn.resourcemanager.admin.address</name>
	<value>hadoop102:8033</value>
	</property>

	<!--配置resourcemanager的web ui 的监控页面-->
	<property>
	<name>yarn.resourcemanager.webapp.address</name>
	<value>hadoop102:8088</value>
	</property>
</configuration>

vim mapred-site.xml

<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<configuration>
    <!-- 指定mapreduce使用yarn资源管理器-->
    <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>
    <!-- 配置作业历史服务器的地址-->
    <property>
        <name>mapreduce.jobhistory.address</name>
        <value>hadoop102:10020</value>
    </property>
    <!-- 配置作业历史服务器的http地址-->
    <property>
        <name>mapreduce.jobhistory.webapp.address</name>
        <value>hadoop102:19888</value>
    </property>
</configuration>

vim hadoop-env.sh

.........
# The java implementation to use.
export JAVA_HOME=/opt/module/jdk1.8.0_212 
.........

vim slaves

hadoop102
hadoop103
hadoop104

vim yarn-env.sh

.........
# some Java parameters
export JAVA_HOME=/opt/module/jdk1.8.0_212 
if [ "$JAVA_HOME" != "" ]; then
  #echo "run java in $JAVA_HOME"
  JAVA_HOME=$JAVA_HOME
fi
.........

分发配置

xsync /opt/module/hadoop-2.7.6/etc/hadoop

3.启动集群

如果集群是第一次启动,需要在 hadoop102 节点格式化 NameNode

(若之前格式化过,则要把hadoop.tmp.dir目录删除再格式化)

(注意:格式 化 NameNode,会产生新的集群 id,导致 NameNode 和 DataNode 的集群 id 不一致,集群找 不到已往数据。如果集群在运行过程中报错,需要重新格式化 NameNode 的话,一定要先停止 namenode 和 datanode 进程,并且要删除所有机器的 data 和 logs 目录,然后再进行格式化。)

cd /opt/module/hadoop-2.7.6
## 格式化
hdfs namenode -format
## 启动 HDFS 
sbin/start-dfs.sh 

## 启动集群
start-all.sh

1) 启动脚本和关闭脚本介绍

 1. 启动脚本
     -- start-dfs.sh         :用于启动hdfs集群的脚本
     -- start-yarn.sh        :用于启动yarn守护进程
     -- start-all.sh         :用于启动hdfs和yarn
 2. 关闭脚本
     -- stop-dfs.sh          :用于关闭hdfs集群的脚本
     -- stop-yarn.sh         :用于关闭yarn守护进程
     -- stop-all.sh          :用于关闭hdfs和yarn
 3. 单个守护进程脚本
     -- hadoop-daemons.sh    :用于单独启动或关闭hdfs的某一个守护进程的脚本
     -- hadoop-daemon.sh     :用于单独启动或关闭hdfs的某一个守护进程的脚本
     reg:
         hadoop-daemon.sh [start|stop] [namenode|datanode|secondarynamenode]
     
     -- yarn-daemons.sh  :用于单独启动或关闭hdfs的某一个守护进程的脚本
     -- yarn-daemon.sh       :用于单独启动或关闭hdfs的某一个守护进程的脚本
     reg:
         yarn-daemon.sh [start|stop] [resourcemanager|nodemanager]

4. 集群启动/停止方式总结

1)各个模块分开启动/停止(配置 ssh 是前提)

常用

(1)整体启动/停止 HDFS

start-dfs.sh/stop-dfs.sh

(2)整体启动/停止 YARN

start-yarn.sh/stop-yarn.sh 

2)各个服务组件逐一启动/停止

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

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

(2)启动/停止 YARN

yarn --daemon start/stop resourcemanager/nodemanager

5.编写 Hadoop 集群常用脚本

vim /bin/jpsall

查看集群的jps结果

#!/bin/bash
for host in hadoop102 hadoop103 hadoop104 
do
echo =============== $host =============== 
ssh $host jps 
done

分发脚本

chmod +x /bin/jpsall
xsync /bin/jpsall

6.常见端口说明

图片.png

历史服务

如果需要查看YARN的作业历史,需要打开历史服务:

1. 停止当前的YARN进程
stop-yarn.sh

2. 在yarn-site.xml中添加配置
<!-- 开启日志聚集功能 -->
<property>
    <name>yarn.log-aggregation-enable</name>
    <value>true</value>
</property>
<!-- 日志信息保存在文件系统上的最长时间,单位为秒-->
<property>
    <name>yarn.log-aggregation.retain-seconds</name>
    <value>640800</value>
</property>

3. 分发到其他节点

4. 启动YARN进程
start-yarn.sh

5. 开启历史服务
mr-jobhistory-daemon.sh start historyserver