集群搭建系列(四)Hadoop HA 2.7.3 安装

1 切 Hadoop 权限用户

ZK 检测:

zkServer status

JDK 检测:

java -version

Scala 检测:

scala -version

2 解压缩、修改 etc/profile 配置文件

cd /hadoop/hadoop-2.7.3/etc/hadoop
vim core-site.xml

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

<configuration>
<!-- 指定hdfs的nameservice为ns -->
        <property>
                <name>fs.defaultFS</name>
                <value>hdfs://nns</value>
        </property>
        <!-- 指定hadoop临时目录 -->
        <property>
                <name>hadoop.tmp.dir</name>
                <value>/opt/hadoop/hadoop-2.7.3/tmp</value>
        </property>
        <!-- 指定zk -->
        <property>
                <name>ha.zookeeper.quorum</name>
                <value>biz-63:2181,biz-140:2181,biz-141:2181</value>
        </property>
        <!-- Namenode向JournalNode发起的ipc连接请求的重试最大次数 -->
        <property>
                <name>ipc.client.connect.max.retries</name>
                <value>100</value>
                <description>Indicates the number of retries a client will make to establish a server connection.
                </description>
        </property>
        <!-- Namenode向JournalNode发起的ipc连接请求的重试间隔时间 -->
        <property>
                <name>ipc.client.connect.retry.interval</name>
                <value>10000</value>
                <description>Indicates the number of milliseconds a client will wait for before retrying to establish a server connection.
                </description>
        </property>
        <!-- 开启回收功能,并设置垃圾删除间隔(分钟) -->
        <property>
                <name>fs.trash.interval</name>
                <value>1440</value>
                <description>Trash deletion interval in minutes.If zero, the trash feature is disabled.</description>
        </property>

hdfs-site.xml

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
        <!-- 副本数 -->
	<property>
	    <name>dfs.replication</name>
	    <value>2</value>
	</property>
	<property>
	    <name>dfs.permissions</name>
	    <value>false</value>
	</property>
	<property>
	    <name>dfs.namenode.name.dir</name>
	    <value>/opt/hadoop/hadoop-2.7.3/nndata/dfs/name</value>
	</property>
	<property>
	    <name>dfs.datanode.data.dir</name>
	    <value>/data/hadoop/dfs/data</value>
	</property>
	<!--以下是HDFS HA的配置-->
	<!--指定HDFS的nameservices名称为nn,需要和core-site.xml中保持一致-->
	<property>
	    <name>dfs.nameservices</name>
	    <value>cluster</value>
	</property>
	<!--指定mycluster的两个NameNode的名称分别位ActiveNN和StandbyNN-->
	<property>
	    <name>dfs.ha.namenodes.nn</name>
	    <value>nn1,nn2</value>
	</property>
	<!--配置ActiveNN和StandbyNN的rpc通信端口-->
	<property>
	    <name>dfs.namenode.rpc-address.nn.nn1</name>
	    <value>biz-63:9000</value>
	</property>
	<property>
	    <name>dfs.namenode.rpc-address.nn.nn2</name>
	    <value>biz-140:9000</value>
	</property>
	<!--配置ActiveNN和StandbyNN的http通信端口-->
	<property>
	    <name>dfs.namenode.http-address.nn.nn1</name>
	    <value>biz-63:50070</value>
	</property>
	<property>
	    <name>dfs.namenode.http-address.nn.nn2</name>
	    <value>biz-140:50070</value>
	</property>
	<!--指定NameNode的元数据在JournalNode上的存放位置-->
	<property>
	    <name>dfs.namenode.shared.edits.dir</name>
	    <value>qjournal://biz-63:8485;biz-140:8485;biz-141:8485/cluster</value>
	</property>
	<!--JournalNode上元数据和日志文件存放位置-->
	<property>
	    <name>dfs.journalnode.edits.dir</name>
	    <value>/data/hadoop/journal</value>
	</property>
	<!--开启NameNode失败自动切换-->
	<property>
	    <name>dfs.ha.automatic-failover.enabled</name>
	    <value>true</value>
	</property>
	<!--NameNode失败自动切换实现方式-->
	<property>
	    <name>dfs.client.failover.proxy.provider.nn</name>
	    <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
	</property>
	<!--隔离机制方式,确保任何时间只有一个NameNode处于活动状态-->
	<property>
	    <name>dfs.ha.fencing.methods</name>
	    <value>sshfence
	           shell(/bin/true)</value>
	</property>
	<!--使用sshfence隔离机制需要SSH免密码认证-->
	<property>
	    <name>dfs.ha.fencing.ssh.private-key-files</name>
	    <value>/home/wftapp/.ssh/id_rsa</value>
	</property>
	<!--配置sshfence隔离机制超时时间-->
	<property>
	    <name>dfs.ha.fencing.ssh.connect-timeout</name>
	    <value>30000</value>
	</property>
</configuration>

mapred-site.xml

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

<configuration>
	<property>
	    <name>mapreduce.framework.name</name>
	    <value>yarn</value>
	</property>
	<!--配置MapReduce JobHistory Server地址,默认端口10020-->
	<property>
	    <name>mapreduce.jobhistory.address</name>
	    <value>0.0.0.0:10020</value>
	    <description>MapReduce JobHistory Server IPC host:port</description>
	</property>
	<!--配置MapReduce JobHistory Server HTTP地址,默认端口19888-->
	<property>
	    <name>mapreduce.jobhistory.webapp.address</name>
	    <value>0.0.0.0:19888</value>
	    <description>MapReduce JobHistory Server Web UI host:port</description>
	</property>
</configuration>

yarn-site.xml

<?xml version="1.0"?>

<configuration>
	<!-- Site specific YARN configuration properties -->
	<!--启用RM高可用-->
	<property>
	    <name>yarn.resourcemaneger.ha.enabled</name>
	    <value>true</value>
	</property>
	<!--指定RM的cluster-id-->
	<property>
	    <name>yarn.resourcemaneger.cluster-id</name>
	    <value>looc</value>
	</property>
	<!--指定两台RM主机名标识符-->
	<property>
	    <name>yarn.resourcemaneger.ha.rm-ids</name>
	    <value>rm1,rm2</value>
	</property>
	<!--RM主机1-->
	<property>
	    <name>yarn.resourcemaneger.hostname.rm1</name>
	    <value>biz-140</value>
	</property>
	<!--RM主机2-->
	<property>
	    <name>yarn.resourcemaneger.hostname.rm2</name>
	    <value>bit-141</value>
	</property>
	<!--RM故障自动切换-->
	<property>
	    <name>yarn.resourcemaneger.ha.automatic-failover.recover.enabled</name>
	    <value>true</value>
	</property>
	<!--RM故障自动恢复-->
	<property>
	    <name>yarn.resourcemaneger.recovery.enabled</name>
	    <value>true</value>
	</property>
	<!--指定ZK集群地址-->
	<property>
	    <name>yarn.resourcemaneger.zk-address</name>
	    <value>biz-63:2181,biz-140:2181,biz-141:2181</value>
	</property>
	<property>
	    <name>yarn.nodemanager.aux-services</name>
	    <value>mapreduce_shuffle</value>
	</property>
	<!--启用日志聚集功能-->
	<property>  
	    <name>yarn.log-aggregation-enable</name>  
	    <value>true</value>  
	</property>
	<property> 
	    <name>yarn.log.server.url</name>
	    <value>http://0.0.0.0:19888/jobhistory/logs</value>
	</property>
	<!--向RM调度资源地址-->
	<property>
	    <name>yarn.resourcemaneger.scheduler.address.rm1</name>
	    <value>biz-140:8030</value>
	</property>
	<property>
	    <name>yarn.resourcemaneger.scheduler.address.rm2</name>
	    <value>biz-141:8030</value>
	</property>
	<!--NodeManeger通过该地址交换信息-->
	<property>
	    <name>yarn.resourcemaneger.resource-tracker.address.rm1</name>
	    <value>biz-140:8031</value>
	</property>
	<property>
	    <name>yarn.resourcemaneger.resource-tracker.address.rm2</name>
	    <value>biz-141:8031</value>
	</property>
	<!--客户端通过该地址向RM提交对应用程序的操作-->
	<property>
	    <name>yarn.resourcemaneger.address.rm1</name>
	    <value>biz-140:8032</value>
	</property>
	<property>
	    <name>yarn.resourcemaneger.address.rm2</name>
	    <value>biz-141:8032</value>
	</property>
	<!--管理员通过该地址向RM发送管理命令-->
	<property>
	    <name>yarn.resourcemaneger.admin.address.rm1</name>
	    <value>biz-140:8033</value>
	</property>
	<property>
	    <name>yarn.resourcemaneger.admin.address.rm2</name>
	    <value>biz-141:8033</value>
	</property>
	<!--RM HTTP访问地址,查看集群信息-->
	<property>
	    <name>yarn.resourcemaneger.webapp.address.rm1</name>
	    <value>biz-140:8088</value>
	</property>
	<property>
	    <name>yarn.resourcemaneger.webapp.address.rm2</name>
	    <value>biz-141:8088</value>
	</property>
</configuration>	

3 设置 slaves

在这里插入图片描述

4 环境变量

1 切换 root 用户 or sudo
2 写入配置
3 使其生效 source /etc/profile

export HADOOP_HOME=/opt/hadoop/hadoop-2.7.3
export PATH=$PATH:$HADOOP_HOME/bin
export PATH=$PATH:$HADOOP_HOME/sbin
export HADOOP_CONF_DIR=${HADOOP_HOME}/etc/hadoop
export HADOOP_HDFS_HOME=${HADOOP_HOME}
export HADOOP_YARN_HOME=${HADOOP_HOME}
5 ZKFC

进入 hadoop bin 目录

./bin/hdfs zkfc -formatZK

如果出现异常情况
需要检查配置文件 是不是写错了。

在这里插入图片描述

在 ZK 中也可以看到注册成功
在这里插入图片描述

6 JournalNode

在预算好的 JN 节点启动 journalnode

hadoop-daemon.sh start journalnode

在这里插入图片描述

按路径检查日志
jps 查看 JournalNode 进程 (应采用 2X +1 生产建议 5 +)

在这里插入图片描述

7 启动 HA

只在 NN 1 上操作
格式化HDFS命令
hdfs namenode -format
启动 namenode
hadoop-daemon.sh start namenode

检查日志
在这里插入图片描述

访问 NN1
在这里插入图片描述

操作 NN 2

nn2 操作同步 nn1 元数据的命令
hdfs namenode -bootstrapStandby
启动 nn2 namenode
hadoop-daemon.sh start namenode

在这里插入图片描述

在这里插入图片描述

指定 nn2 为主机
hdfs haadmin -transitionToActive --forcemanual nn2

在这里插入图片描述

查看验证
在这里插入图片描述

关闭hdfs
stop-dfs.sh
zkServer.sh stop
zkServer.sh start

8 HADOOP_HOME 不存在异常

如果出现 HADOOP_HOME 不对情况,需要修改 etc/hadoop/hadoop-env.sh JDK目录为绝对路径

%%%% 如果 ZK 初始化过了就不用再次了
hdfs zkfc -formatZK

nn1 启动 hdfs
start-dfs.sh

nn1 启动 yarn
start-yarn.sh

在这里插入图片描述

nn2 启动另一个 ResourceManager
yarn-daemon.sh start resourcemanager

至此 Hadoop 服务以下部署完成。 各节点服务如图

在这里插入图片描述

HA 检测
hdfs haadmin -getServiceState nn1
hdfs haadmin -getServiceState nn2
yarn rmadmin -getServiceState rm1
yarn rmadmin -getServiceState rm2

yarn ha 没成功可能是 ZK 有问题 后面再处理

9 JobHistory

启动 historyserver
mr-jobhistory-daemon.sh start historyserver
停止 historyserver
mr-jobhistory-daemon.sh sop historyserver
jobhistoryserver 端口 19888

在这里插入图片描述
在这里插入图片描述

启动 JHS 后,在HDFS上/tmp/hadoop-yarn/staging/history 路径下会生成两个文件夹:done和done_intermediate。done文件夹下存放已经完成的 job,done_intermediate 文件夹下存放正在进行的job信息。

今日 完成

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值