5节点Hadoop HA集群搭建
5节点hadoop-2.7.3 HA集群搭建一、集群规划共5个节点,主机名分别是node-01、node-02、node-03、node-04、node-05初始启动集群,node-01上运行active namenode即主namenode;node-02上运行standby namenode即从namenode每个节点运行的进程如下表机器名运行进程node-01NameNode/zkfc/Zo
5节点hadoop-2.7.3 HA集群搭建
一、集群规划
共5个节点,主机名分别是node-01、node-02、node-03、node-04、node-05
初始启动集群,node-01上运行active namenode即主namenode;node-02上运行standby namenode即从namenode
每个节点运行的进程如下表
机器名 | 运行进程 |
---|---|
node-01 | NameNode/zkfc/Zookeeper/Journalnode/DataNode/NodeManager |
node-02 | NameNode/zkfc/Zookeeper/Journalnode/DataNode/NodeManager |
node-03 | Zookeeper/Journalnode/DataNode/NodeManager |
node-04 | ResourceManager |
node-05 | ResourceManager |
二、五节点Hadoop HA搭建
准备5台虚拟机,在做五节点hadoop-2.7.3 HA安装之前,要求完成每台虚拟机的环境准备。
1. 虚拟机环境准备
windows|mac安装VMWare虚拟化软件
VMWare下安装CenoOS7
虚拟机关闭防火墙
禁用selinux
配置虚拟网卡
配置虚拟机网络
安装JDK
配置时间同步
修改主机名
修改ip地址
修改/etc/hosts
各节点免密钥登陆
重启虚拟机
2. 安装zookeeper集群
在node-01、node-02、node-03上安装zookeeper集群
3. 五节点Hadoop HA搭建
注意:
此文档使用普通用户操作,如linann;
hadoop安装到用户主目录下,如/home/linann
请根据自己的实际情况修改
3.1 解压hadoop压缩包
在node-01上解压hadoop压缩包到用户主目录(**~**表示用户主目录/home/linann)
#压缩包在/home/linann/tgz中
[linann@node-01 ~]$ cd /home/linann/tgz
[linann@node-01 tgz]$ tar -xzvf hadoop-2.7.3.tar.gz -C ~
3.2 修改hadoop-env.sh
hadoop2.x的配置文件全部在$HADOOP_HOME/etc/hadoop下
cd $HADOOP_HOME/etc/hadoop
修改hadoop-env.sh;保存退出
export JAVA_HOME=/usr/java/jdk1.8.0_211-amd64
注意:JAVA_HOME值修改为自己jdk的实际目录
3.3 修改core-site.xml
注意:
情况一:值/home/linann/hadoop-2.7.3/tmp根据实际情况修改
情况二:值node-01:2181,node-02:2181,node-03:2181根据实际情况修改,修改成安装了zookeeper的虚拟机的主机名
<configuration>
<!-- 指定hdfs的nameservice为ns1 -->
<property>
<name>fs.defaultFS</name>
<value>hdfs://ns1</value>
</property>
<!-- 指定hadoop临时目录 -->
<property>
<name>hadoop.tmp.dir</name>
<value>/home/linann/hadoop-2.7.3/tmp</value>
</property>
<!-- 指定zookeeper地址 -->
<property>
<name>ha.zookeeper.quorum</name>
<value>node-01:2181,node-02:2181,node-03:2181</value>
</property>
</configuration>
3.4 修改hdfs-site.xml
注意:
情况一:属性值qjournal://node-01:8485;node-02:8485;node-03:8485/ns1中的主机名,修改成实际安装zookeeper的虚拟机的主机名
情况二:属性值/home/linann/hadoop-2.7.3/journal中”/home/linann/hadoop-2.7.3”替换成实际hadoop文件夹的路径
情况三:属性值/home/linann/.ssh/id_rsa中/home/linann根据实际情况替换
<configuration>
<!--指定hdfs的nameservice为ns1,需要和core-site.xml中的保持一致 -->
<property>
<name>dfs.nameservices</name>
<value>ns1</value>
</property>
<!-- ns1下面有两个NameNode,分别是nn1,nn2 -->
<property>
<name>dfs.ha.namenodes.ns1</name>
<value>nn1,nn2</value>
</property>
<!-- nn1的RPC通信地址 -->
<property>
<name>dfs.namenode.rpc-address.ns1.nn1</name>
<value>node-01:9000</value>
</property>
<!-- nn1的http通信地址 -->
<property>
<name>dfs.namenode.http-address.ns1.nn1</name>
<value>node-01:50070</value>
</property>
<!-- nn2的RPC通信地址 -->
<property>
<name>dfs.namenode.rpc-address.ns1.nn2</name>
<value>node-02:9000</value>
</property>
<!-- nn2的http通信地址 -->
<property>
<name>dfs.namenode.http-address.ns1.nn2</name>
<value>node-02:50070</value>
</property>
<!-- 指定NameNode的元数据在JournalNode上的存放位置 -->
<property>
<name>dfs.namenode.shared.edits.dir</name>
<value>qjournal://node-01:8485;node-02:8485;node-03:8485/ns1</value>
</property>
<!-- 指定JournalNode在本地磁盘存放数据的位置 -->
<property>
<name>dfs.journalnode.edits.dir</name>
<value>/home/linann/hadoop-2.7.3/journal</value>
</property>
<!-- 开启NameNode失败自动切换 -->
<property>
<name>dfs.ha.automatic-failover.enabled</name>
<value>true</value>
</property>
<!-- 配置失败自动切换实现方式 -->
<property>
<name>dfs.client.failover.proxy.provider.ns1</name>
<value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
</property>
<!-- 配置隔离机制方法,多个机制用换行分割,即每个机制暂用一行-->
<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/linann/.ssh/id_rsa</value>
</property>
<!-- 配置sshfence隔离机制超时时间 -->
<property>
<name>dfs.ha.fencing.ssh.connect-timeout</name>
<value>30000</value>
</property>
</configuration>
3.5 修改mapred-site.xml
重命名文件
mv mapred-site.xml.template mapred-site.xml
修改mapred-site.xml
<configuration>
<!-- 指定mr框架为yarn方式 -->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
3.6 修改yarn-site.xml
注意:
情况一:属性yarn.resourcemanager.hostname.rm1的值node-04根据实际情况替换
情况二:属性yarn.resourcemanager.hostname.rm2的值node-05根据实际情况替换
情况三:属性值node-01:2181,node-02:2181,node-03:2181根据实际情况替换;替换成实际安装zookeeper的虚拟机的主机名
<configuration>
<!-- 开启RM高可靠 -->
<property>
<name>yarn.resourcemanager.ha.enabled</name>
<value>true</value>
</property>
<!-- 指定RM的cluster id为yrc,意为yarn cluster -->
<property>
<name>yarn.resourcemanager.cluster-id</name>
<value>yrc</value>
</property>
<!-- 指定RM的名字 -->
<property>
<name>yarn.resourcemanager.ha.rm-ids</name>
<value>rm1,rm2</value>
</property>
<!-- 分别指定RM的地址 -->
<property>
<name>yarn.resourcemanager.hostname.rm1</name>
<value>node-04</value>
</property>
<property>
<name>yarn.resourcemanager.hostname.rm2</name>
<value>node-05</value>
</property>
<!-- 指定zk集群地址 -->
<property>
<name>yarn.resourcemanager.zk-address</name>
<value>node-01:2181,node-02:2181,node-03:2181</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
</configuration>
3.7 修改slaves
node-01、node-02、node-03上运行了datanode、nodemanager,所以修改slaves内容替换为:
node-01
node-02
node-03
3.8 远程拷贝hadoop文件夹
说明:~表示用户主目录
scp -r ~/hadoop-2.7.3/ node-02:~
scp -r ~/hadoop-2.7.3/ node-03:~
scp -r ~/hadoop-2.7.3/ node-04:~
scp -r ~/hadoop-2.7.3/ node-05:~
3.9 配置环境变量
node-01到node-05五个节点,都配置环境变量
#将hadoop添加到环境变量中
vim ~/.bash_profile
添加内容如下(注意:若HADOOP_HOME已经存在,则修改):
export HADOOP_HOME=/home/linann/hadoop-2.7.3/
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
编译文件,使新增环境变量生效
source ~/.bash_profile
4. 启动与初始化hadoop集群
**注意:**严格按照下面的步骤 先检查各台hadoop环境变量是否设置好
4.1 启动zookeeper集群
注意:根据zookeeper实际安装情况,启动zookeeper
分别在node-01、node-02、node-03上启动zookeeper
zkServer.sh start
#查看状态:一个为leader,另外两个为follower
zkServer.sh status
4.2 启动journalnode
分别在node-01、node-02、node-03上执行
hadoop-daemon.sh start journalnode
#运行jps命令检验,node-01、node-02、node-03上多了JournalNode进程
4.3 格式化HDFS
#根据集群规划node-01、node-02上运行namenode;所以只在主namenode节点即node-01上执行命令:
hdfs namenode -format
4.4 拷贝hadoop.tmp.dir
格式化后会根据core-site.xml中的hadoop.tmp.dir属性值/home/linann/hadoop-2.7.3/tmp,并生成此文件夹
将/home/linann/hadoop-2.7.3/tmp拷贝到node-02的/home/linann/hadoop-2.7.3中
scp -r /home/linann/hadoop-2.7.3/tmp/ node-02:/home/linann/hadoop-2.7.3/
4.4 格式化ZK
在node-01上执行即可
hdfs zkfc -formatZK
4.5 启动HDFS
只在主namenode节点node-01上执行
start-dfs.sh
4.6 启动YARN
4.6.1 主resourcemanager
注意:只在主resourcemanager即node-04上执行start-yarn.sh
把namenode和resourcemanager部署在不同节点,是因为性能问题,因为他们都要占用大量资源
坑:在node-04上启动yarn之前,先依次从node-04 ssh远程连接到node-01、node-02、node-03、node-04、node-05;因为初次ssh时,需要交互,输入yes,回车
start-yarn.sh
4.6.2 从resourcemanager
在从resourcemanager即node-05上启动rm
yarn-daemon.sh start resourcemanager
5. 验证集群是否可用
5.1 验证HDFS HA
5.1.1 访问WEB UI
node-01、node-02一主一备
http://node-01:50070
http://node-02:50070
5.1.2 模拟主备切换
在主namenode节点,运行
hadoop-daemon.sh stop namenode
访问之前为"备namenode"的WEB UI;发现状态更新为active
启动刚才手动停掉的namenode
hadoop-daemon.sh start namenode
访问它的WEB UI,发现状态更新为standby
5.2 验证Yarn HA
node-04、node-05主备切换
5.2.1 访问WEB UI
node-04浏览器访问
http://node-04:8088/cluster/cluster
node-05浏览器访问
http://node-05:8088/cluster/cluster
5.2.2 模拟主备切换
在主resourcemanager节点,运行
yarn-daemon.sh stop resourcemanager
访问之前为"备resourcemanager"的WEB UI;发现状态更新为active
启动刚才手动停掉的resourcemanager
yarn-daemon.sh start resourcemanager
访问它的WEB UI,发现状态更新为standby
5.2.3 运行MR示例
运行一下hadoop示例中的WordCount程序:
hadoop fs -put /home/linann/hadoop-2.7.3/LICENSE.txt /
hadoop jar hadoop-2.7.3/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.3.jar wordcount /LICENSE.txt /w0727
6. 集群常用命令
6.1 关闭Hadoop HA集群
正确指令执行顺序如下
主namenode上运行
stop-dfs.sh
主resoucemanager上运行
stop-yarn.sh
从resoucemanager上运行
yarn-daemon.sh stop resourcemanager
关闭zookeeper集群;每个zk服务器运行
zkServer.sh stop
6.2 常用命令
单独启动namenode
hadoop-daemon.sh start namenode
单独启动datanode
hadoop-daemon.sh start datanode
单独启动journalnode
hadoop-daemon.sh start journalnode
启动zookeeper
./zkServer.sh start
启动hdfs
start-dfs.sh
启动yarn
start-yarn.sh
单独启动resorucemanager
yarn-daemon.sh start resouremanger
n.sh
从resoucemanager上运行
```shell
yarn-daemon.sh stop resourcemanager
关闭zookeeper集群;每个zk服务器运行
zkServer.sh stop
6.2 常用命令
单独启动namenode
hadoop-daemon.sh start namenode
单独启动datanode
hadoop-daemon.sh start datanode
单独启动journalnode
hadoop-daemon.sh start journalnode
启动zookeeper
./zkServer.sh start
启动hdfs
start-dfs.sh
启动yarn
start-yarn.sh
单独启动resorucemanager
yarn-daemon.sh start resouremanger
更多推荐
所有评论(0)