栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

HA集群配置

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

HA集群配置

HA集群配置

本次配置是使用centos7版本

1.1、Linux基础环境配置 1.查看ip地址

并记录三台机子的ip地址

ip a
2.修改主机名
1) hostnamectl set-hostname master
2) hostnamectl set-hostname slave1
3) hostnamectl set-hostname slave2
//注:改完主机名之后记得要bash生效
3.主机映射
vi /etc/hosts
 
//hosts文件内容:
    格式:主机ip 主机名
    	例如:192.168.90.126 master
            192.168.90.88 slave1
            192.168.90.228 slave2
//注意:hosts文件三台机子都要改
1.2、时钟同步 1.修改配置文件
vi /etc/sysconfig/ntpd

//在文件中加:
    YS_HWLOCK=yes
    
//注意:三台机子都要加上
2.同步时间
systemctl start ntpd

date ----> 查看时间的命令
    
//注意:三台机子都要执行这个命令

注意:如果这种同步时间的命令无法同步三台机子的时间,请按照下面操作步骤来做:

//语法格式:date -s 字符串

//观察三台机子的系统时间,然后执行命令同步时间。date命令验证是否同步成功

例如:
date -s "2021-04-29 15:51:50"

//注意:三台机子都要执行
1.3、关闭防火墙
systemctl disable firewalld.service  -----> 关闭防火墙自启
    
//验证防火墙是否关闭
systemctl status firewalld.service
    
//注意:三台自己都要关闭
1.4、SSH免密

1.注意:进行免密配置之前要进入hadoop用户下,如果没有请执行:useradd hadoop添加用户

2.这里的免密配置使用的是之前学习的命令,并不是该平台的命令,因为这种方法要比平台上的命令要简单

1.生成秘钥
ssh-keygen -t rsa
    
//在三台机子上分别执行,期间不用输入任何命令,直接回车就可以
2.分享秘钥
//分享秘钥给其他两台机子和自己
如:如果在master上生成的秘钥,要把秘钥发给其他两台机子和自己
    
//这里以 master slave1 slave2举例    
ssh-copy-id master
ssh-copy-id slave1
ssh-copy-id slave2
    
//执行完上述命令后,验证
ssh master
ssh slave1
.....
1.5、ZooKeeper安装部署 1、Jdk的安装和配置 1) 解压缩
tar -zxvf 所要解压的文件的位置 -C 解压到的位置
    例如:tar -zxvf /opt/software/jdk-8.. -C /usr/local/src
2) 改名字
mv 原文件名字 改后名字
    例如:mv jdk-8u... java   -----> 这里这个命令是进到了解压缩后文件的目录下
2、配置Java环境变量
vi /etc/profile   -------> 配置环境变量的文件

命令行模式下 输入G 直接跳到最后一行 ,为了省时间 
      
//profile文件中增加的内容:
    export JAVA_HOME=/usr/local/src/java    ------> 这里的路径是你安装java的目录
    export PATH=$PATH:$JAVA_HOME/bin		------> 将JAVA安装目录加入PATH路径
        
//注意:改完之后一定要执行  source /etc/profile
3、分发Java
scp -r /usr/local/src/java/ root@slave1:/usr/local/src
scp -r /usr/local/src/java/ root@slave2:/usr/local/src
3、安装ZooKeeper 1) 解压缩

和上面解压缩类似,就废话不多说了 

2) 改名字

和上面解压缩类似,就废话不多说了 

3) 创建ZooKeeper数据目录
//其实就是创建两个目录  data(传输数据的)  logs(记录日志)

//两个目录都是在zookeeper文件目录下创建的,注意自己的路径
mkdir /usr/local/src/zookeeper/data
mkdir /usr/local/src/zookeeper/logs
4)配置ZooKeeper环境变量
vi /etc/profile   -------> 配置环境变量的文件

命令行模式下 输入G 直接跳到最后一行 ,为了省时间 
      
//profile文件中增加的内容:
    export ZK_HOME=/usr/local/src/zookeeper ------> 这里的路径是你安装zookeeper的目录
    export PATH=$PATH:$ZK_HOME/bin ------> 将JAVA安装目录加入PATH路径
        
//注意:改完之后一定要执行  source /etc/profile
5) 修改zoo.cfg
进入zookeeper 的 conf
    
cp zoo_sample.cfg zoo.cfg

vi zoo.cfg
  //zoo.cfg文件内容:
    修改:dataDir=/usr/local/src/zookeeper/data  ---->路径问题一定要注意
    
    增加: dataLogDir=/usr/local/src/zookeeper/logs
         server.1=master:2888:3888
         server.2=slave1:2888:3888
         server.3=slave2:2888:3888
             
         //注意上面的主机名:这里是以 master slave1 slave2 为例
6)myid文件
进入到zookeeper 的 data 目录后
创建myid文本文件
最安全的方法是vi myid  后 自己手动 输入数字 1
7)分发ZooKeeper
scp -r /usr/local/src/zookeeper/ root@slave1:/usr/local/src
scp -r /usr/local/src/zookeeper/ root@slave2:/usr/local/src

//注意:分发过去后记得改一下myid文件,slave1的myid文件里面输入1,slave2的myid文件里面输入2
8)Zookeeper的用户切换
//切换zookeeper属于hadoop用户
chown -R hadoop:hadoop /usr/local/src/zookeeper
8) 启动ZooKeeper
su hadoop 切换用户为hadoop用户

source /etc/profile  ----> 防止之前配置的环境变量为生效    
    
zkServer.sh start   //三台机子都要启动
zkServer.sh status  //查看zookeeper的状态信息  状态有leader follower follower
1.6、HA参数配置

切换为root,不是普通用户hadoop了,注意!!! 因为:hadoop权限不够

1.解压缩hadoop 并改名为hadoop

这里再不会,我也木有办法 

2.配置hadoop环境
vi /etc/profile   -------> 配置环境变量的文件

命令行模式下 输入G 直接跳到最后一行 ,为了省时间 
      
//profile文件中增加的内容:
    export HADOOP_PREFIX=$HADOOP_HOME
	export HADOOP_MAPRED_HOME=$HADOOP_HOME
	export HADOOP_COMMON_HOME=$HADOOP_HOME
	export HADOOP_HDFS_HOME=$HADOOP_HOME
	export YARN_HOME=$HADOOP_HOME
	export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
	export HADOOP_INSTALL=$HADOOP_HOME
	export HADOOP_OPTS="-Djava.library.path=$HADOOP_INSTALL/lib:$HADOOP_COMMON_LIB_NATIVE_DIR"
	export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
        
//注意:改完之后一定要执行  source /etc/profile
3.配置hadoop-env.sh
这个文件在hadoop 目录下的 hadoop 下的 etc 下

修改JAVA_HOME的目录  JAVA_HOME=/usr/local/src/java
4.core-site.xml
	
    
        fs.defaultFS
        hdfs://mycluster
    
    
        hadoop.tmp.dir
        file:/usr/local/src/hadoop/tmp
    
    
    
        ha.zookeeper.quorum
        master:2181,slave1:2181,slave2:2181
    
    
    
        ha.zookeeper.session-timeout.ms
        30000
        ms
    
    
        fs.trash.interval
        1440
    
5.hdfs-site.xml

    
        dfs.qjournal.start-segment.timeout.ms
        60000
    
    
    
        dfs.nameservices
        mycluster
    
        
    
        dfs.ha.namenodes.mycluster
        master,slave1
    
    
    
        dfs.namenode.rpc-address.mycluster.master
        master:8020
    
    
    
        dfs.namenode.rpc-address.mycluster.slave1
        slave1:8020
    
     
    
        dfs.namenode.http-address.mycluster.master
        master:50070
    
    
    
        dfs.namenode.http-address.mycluster.slave1
        slave1:50070
    
    
    
        dfs.namenode.shared.edits.dir       		qjournal://master:8485;slave1:8485;slave2:8485/mycluster
    
    
    
        dfs.client.failover.proxy.provider.mycluster 				   org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider
    
    
    
        dfs.ha.fencing.methods
        
            sshfence
        shell(/bin/true)
        
    
    
       dfs.permissions.enabled
       false
    
    
        dfs.support.append
        true
    
    
    
        dfs.ha.fencing.ssh.private-key-files
        /home/hadoop/.ssh/id_rsa
    
    
    
        dfs.replication
        2
    
    
        dfs.namenode.name.dir
        /usr/local/src/hadoop/tmp/hdfs/nn
    
    
        dfs.datanode.data.dir
        /usr/local/src/hadoop/tmp/hdfs/dn
    
    
    
        dfs.journalnode.edits.dir
        /usr/local/src/hadoop/tmp/hdfs/jn
    
    
    
        dfs.ha.automatic-failover.enabled
        true
    
    
    
        dfs.webhdfs.enabled
        true
    
    
    
        dfs.ha.fencing.ssh.connect-timeout
        30000
    
    
        ha.failover-controller.cli-check.rpc-timeout.ms
        60000
    
6) mapred-site.xml

    
        mapreduce.framework.name
        yarn
	
    
    
        mapreduce.jobhistory.address
        master:10020
    
    
    
        mapreduce.jobhistory.webapp.address
        master:19888
  
7) yarn-site.xml

    
    
        yarn.resourcemanager.ha.enabled
        true
    
    
    
        yarn.resourcemanager.cluster-id
        yrc
    
    
    
        yarn.resourcemanager.ha.rm-ids
        rm1,rm2
    
    
    
        yarn.resourcemanager.hostname.rm1
        master
    
    
        yarn.resourcemanager.hostname.rm2
        slave1
    
    
    
        yarn.resourcemanager.zk-address
        master:2181,slave1:2181,slave2:2181
    
    
        yarn.nodemanager.aux-services
        mapreduce_shuffle
    
    
        yarn.log-aggregation-enable
        true
    
    
        yarn.log-aggregation.retain-seconds
        86400
    
    
    
        yarn.resourcemanager.recovery.enabled
        true
    
    
    
        yarn.resourcemanager.store.class
org.apache.hadoop.yarn.server.resourcemanager.recovery.ZKRMStateStore
    
8) slaves
master
slave1
slave2
9) 创建目录
mkdir -p /usr/local/src/hadoop/tmp/hdfs/nn
mkdir -p /usr/local/src/hadoop/tmp/hdfs/dn
mkdir -p /usr/local/src/hadoop/tmp/hdfs/jn
mkdir -p /usr/local/src/hadoop/tmp/logs

    目录结构图:
--------hadoop
--------tmp
------------hdfs
----------------nn
----------------dn
----------------jn
------------logs
10) 分发文件
scp -r /etc/profile root@slave1:/etc/
scp -r /etc/profile root@slave2:/etc/
scp -r /usr/local/src/hadoop root@slave1:/usr/local/src/
scp -r /usr/local/src/hadoop root@slave2:/usr/local/src/
11) 修改目录所有者和所有者组
//master
chown -R hadoop:hadoop /usr/local/src/hadoop
ll /usr/local/src/
//slave1
chown -R hadoop:hadoop /usr/local/src/hadoop/ 
//slave2
chown -R hadoop:hadoop /usr/local/src/hadoop/ 
12) 生效环境变量
su hadoop
source /etc/profile
    
//注意:三台机子都要执行
1.7,HA的启动 1)启动守护进程
//在master上启动
hadoop-daemons.sh start journalnode
2)初始化namenode
hdfs namenode -format

如果格式化失败

//删除hadoop中的tmp和data目录里面的东西,然后重新格式化
3) 注册ZNode
//在master上启动
hdfs zkfc -formatZK
4)启动hdfs
//在master上启动
start-dfs.sh
5)启动yarn
//在master上启动
start-yarn.sh
6) 同步master数据
[hadoop@master ~]$ scp -r /usr/local/src/hadoop/tmp/hdfs/nn/* 			slave1:/usr/local/src/hadoop/tmp/hdfs/nn/

[hadoop@master ~]$ scp -r /usr/local/src/hadoop/tmp/hdfs/nn/* slave2:/usr/local/src/hadoop/tmp/hdfs/nn/
7)resourcemanager和namenode
//salve1节点上
yarn-daemon.sh start resourcemanager
hadoop-daemon.sh start namenode
8) MapReduce任务历史服务器
//master节点上
yarn-daemon.sh start proxyserver
mr-jobhistory-daemon.sh start historyserver
9) 节点进程 (9 8 5)
masterslave1slave2
DFSZKFailoverControllerJpsDataNode
NameNodeResourceManagerJps
DataNodeNameNodeQuorumPeerMain
JpsDFSZKFailoverControllerNodeManager
QuorumPeerMainNodeManagerJournalNode
JobHistoryServerJournalNode
JournalNodeDataNode
ResourceManagerQuorumPeerMain
NodeManager
1.8 HA的测试 1) 创建测试文件
vi a.txt  //可以在任意目录下创建
2)在hdfs创建文件夹
hadoop fs -mkdir /input
3)将创好的a.txt上传hdfs上
hadoop fs -put 目标文件 集群上的目录位置
    //例如:
    	hadoop fs -put ~/a.txt /input
4) 测试
//进入到mapreduce后(在hadoop安装目录下)
hadoop jar hadoop-mapreduce-examples-2.7.1.jar wordcount /input/a.txt /output
5) 查看结果
hadoop fs -lsr /output

hadoop fs -cat /output/part-r-00000
    
//注:也可以直接在集群上打开
1.9 高可用验证 1) 自动切换服务状态
//在master上
hdfs haadmin -failover --forcefence --forceactive slave1 master
//查看状态
hdfs haadmin -getServiceState slave1 
hdfs haadmin -getServiceState master
2)手动切换服务状态
//在master上停止并启动namenode
hadoop-daemon.sh stop namenode
//查看状态
[hadoop@master ~]$ hdfs haadmin -getServiceState master
[hadoop@master ~]$ hdfs haadmin -getServiceState slave1    

    
[hadoop@master ~]$  hadoop-daemon.sh start namenode
//查看状态
[hadoop@master ~]$ hdfs haadmin -getServiceState slave1
[hadoop@master ~]$ hdfs haadmin -getServiceState master

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/883826.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号