其他分享
首页 > 其他分享> > hadoop HA高可用集群搭建

hadoop HA高可用集群搭建

作者:互联网

首先,高可用集群是建立在zookeeper搭建没有问题的前提下来完成的,没有搭建好zookeeper的,先搭好才可以做以下操作。
一:前期准备(只需要在主节点master上完成)
1.拍摄快照
想拍就拍,不想拍算了,建议还是拍一个,毕竟万一搭不好,还可以回到你这个状态,记得给快照加个备注,以防忘记你这个快照是干嘛的。最好关机状态下拍。
2.删除完全分布式集群

  rm  -rf  /usr/local/src/hadoop

3.重新解压一个新的hadoop并重命名

 tar  -zvxf  /opt/software/hadoop-2.6.0-cdh5.14.2.tar.gz  -C  /usr/local/src/
  mv  /usr/local/src/hadoop-2.6.0-cdh5.14.2/  /usr/local/src/hadoop/

4.创建文件夹,并赋予权限

mkdir  -p  /usr/local/src/hadoop/hdfs/data
mkdir  -p  /usr/local/src/hadoop/hdfs/name
mkdir  -p  /usr/local/src/hadoop/tmp
chmod  777  /usr/local/src/hadoop/hdfs/data
chmod  777  /usr/local/src/hadoop/hdfs/name
chmod  777  /usr/local/src/hadoop/tmp

二:hadoop的配置
该步骤请用notepad++连接master进行
路径为/usr/local/src/hadoop/etc/hadoop/
Hadoop-HA部署组要修改core-site.xml和hdfs-site.xml两文件
1.1core.site.xml

<property>      
    <name>fs.defaultFS</name>      
    <value>hdfs://nsv</value>      

</property>  
<property>
    <name>hadoop.tmp.dir</name>
    <value>/usr/local/src/hadoop/tmp</value>
</property> 
<property>
    <name>ha.zookeeper.session-timeout.ms</name>
    <value>3000</value>
</property> 
<property>      
    <name>ha.zookeeper.quorum</name>      
    <value>master:2181,slave1:2181,slave2:2181</value>     
</property> 

1.2hdfs-site.xml

<property>
    <name>dfs.namenode.name.dir</name>
    <value>/usr/local/src/hadoop/hdfs/name</value>
</property> 
<property>
    <name>dfs.datanode.data.dir</name>
    <value>/usr/local/src/hadoop/hdfs/data</value>
</property> 
<property>
    <name>dfs.replication</name>
    <value>3</value>
</property>
<property>
    <name>dfs.webhdfs.enabled</name>
    <value>true</value>
</property> 
<property>
    <name>dfs.nameservices</name>
    <value>nsv</value>
</property> 
<property>
   <name>dfs.ha.namenodes.nsv</name>
   <value>nn1,nn2</value>
</property> 
<property>
    <name>dfs.namenode.rpc-address.nsv.nn1</name>
    <value>master:9000</value>
</property>
<property>
    <name>dfs.namenode.http-address.nsv.nn1</name>
    <value>master:50070</value>
</property> 
<property>
    <name>dfs.namenode.rpc-address.nsv.nn2</name>
    <value>slave1:9000</value>
</property>
<property>
    <name>dfs.namenode.http-address.nsv.nn2</name>
    <value>slave1:50070</value>
</property> 
<property>
    <name>dfs.ha.automatic-failover.enabled</name>
    <value>true</value>
</property>
<property>
    <name>dfs.namenode.shared.edits.dir</name>
          <value>qjournal://master:8485;slave1:8485;slave2:8485/nsv</value>
</property>
<property>
    <name>dfs.client.failover.proxy.provider.nsv</name>
    <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
</property> 
<property>
    <name>dfs.journalnode.edits.dir</name>
    <value>/usr/local/src/hadoop/journal</value>
</property>
<property>
    <name>dfs.ha.fencing.methods</name>
    <value> 
        sshfence
        shell(/bin/true)
    </value>
</property>

<property>
    <name>dfs.ha.fencing.ssh.private-key-files</name>
    <value>/home/hadoop/.ssh/id_rsa</value>
</property>
<property>
    <name>dfs.ha.fencing.ssh.private-key-files</name>
    <value>/root/.ssh/id_rsa</value>
</property>
<property>
    <name>dfs.ha.fencing.ssh.connect-timeout</name>
    <value>30000</value>
</property>    

1.3mapred-site.xml
这里没有原文件的记得先复制一份

  cp /usr/local/src/hadoop/etc/hadoop/mapred-site.xml.template  /usr/local/src/hadoop/etc/hadoop/mapred-site.xml

然后再在notepad++里面写入

<property>
    <name>mapreduce.framework.name</name>
    <value>yarn</value>
</property>
<property>
    <name>mapreduce.jobhistory.address</name>
    <value>slave1:10020</value>
</property>
<property>
    <name>mapreduce.jobhistory.webapp.address</name>
    <value>slave1:19888</value>
</property>      

1.4yarn-site.xml

<property>
<name>yarn.resourcemanager.ha.enabled</name>
<value>true</value>
</property>
<property>
<name>yarn.resourcemanager.cluster-id</name>
<value>yrc</value>
</property> 
<property>
<name>yarn.resourcemanager.ha.rm-ids</name>
<value>rm1,rm2</value>
</property> 
<property>
<name>yarn.resourcemanager.hostname.rm1</name>
<value>slave1</value>
</property>
<property>
<name>yarn.resourcemanager.hostname.rm2</name>
<value>slave2</value>
</property> 
<property>
<name>yarn.resourcemanager.zk-address</name>
<value>master:2181,slave1:2181,slave2:2181</value>
</property> 
<property>
<name>yarn.resourcemanager.webapp.address.rm1</name>
<value>slave1:8088</value>
</property> 
<property>
<name>yarn.resourcemanager.webapp.address.rm2</name>
<value>slave2:8088</value>
</property> 
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>

1.5slaves

mater
slave1
slave2

1.6hadoop-env.sh

export JAVA_HOME=${JAVA_HOME}

改为

export JAVA_HOME=/usr/local/src/java

1.7把hadoop文件传到slave1和slave2中
在master主机下

scp  -r  /usr/local/src/hadoop/  slave1:/usr/local/src/
scp  -r  /usr/local/src/hadoop/  slave2:/usr/local/src/

二:首次启动hadoop顺序
2.1设置免密登录
这个请参考别人的,如果已经设置好免密登录的请接着看。
2.2启动zookeeper
分别在master,slave1,slave2三台服务器上启动zookeeper

zkServer.sh  start

在这里插入图片描述
然后三台主机分别用jps查看各项进程
在这里插入图片描述
然后再查看一下三台运行状态

zkServer.sh status

在这里插入图片描述
在这里插入图片描述
master或者slave1或者slave2都可能出现follower或者leader,不用管那个是这样follower和leader,只要有这么一行就行
2.3启动journalnode
分别在master,slave1,slave2三台服务器上启动journalnode

  hadoop-daemon.sh start journalnode

在这里插入图片描述
2.4创建命名空间
在master主节点上穿件zkfc命名空间(只需在主节点上)

  hdfs zkfc -formatZK

在这里插入图片描述
在这里插入图片描述
2.5启动两个namenode所在服务器上zkfc
根据节点分布图分别在master和slave1上启动zkfc

 hadoop-daemon.sh  start  zkfc

在这里插入图片描述
2.6在主节点master上namenode格式化
在master服务器上

   hadoop  namenode  -format

在这里插入图片描述
2.7启动master上namenode节点
在master上执行以下命令

  hadoop-daemon.sh  start  namenode

在这里插入图片描述
然后jps查看进程确认master的namenode已启动
在这里插入图片描述
2.8在备namenode节点同步住namenode节点格式化文件
在slave1服务器执行以下命令,将主节点格式化文件拷贝过来

  hdfs  namenode  -bootstrapStandby

在这里插入图片描述
2.9 启动备namenode
在slave1下启动namenode

  hadoop-daemon.sh start namenade

在这里插入图片描述
用jps查看确认slave1的namenode也已启动
在这里插入图片描述
2.10启动datanode
启动master,slave1,slave2三台服务器上datanode
先在master下输入以下指令

hadoop-daemons.sh start datanode
这个指令可将三台机器上的datanode都打开

在这里插入图片描述
用jps分别在三台机器上查看datanode是否成功启动
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
若没有启动,则哪个没启动就在哪个节点输入命令

hadoop-daemon.sh start datanode
此命令和上个命令少个“s”

2.11启动yarn
在master下输入

start-yarn.sh

在这里插入图片描述
用jps查看是否启动成功
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
2.12启动resourcemanager
分别在slave1和slave2 下输入

yarn-daemon.sh  start  resourcemanager

在这里插入图片描述
用jps分别查看是否启动成功

在这里插入图片描述
在这里插入图片描述
三:测试HA部署
分别登录master和slave1 web端界面,查看namenode状态
在这里插入图片描述
在这里插入图片描述
到此,Hadoop-HA部署已经完成!
四:关闭hadoop的高可用集群
在master下执行命令

stop-all.sh

在这里插入图片描述
用jps查看进程
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
可以看到大部分进程已经关闭
然后分别在slave1和slave2下输入

yarn-daemon.sh  stop  resourcemanager

在这里插入图片描述
最后在三台机器上分别输入

zkServer.sh  stop

在这里插入图片描述
再用jps分别在三台机器上查看一下状态
在这里插入图片描述
这样就算全部关闭了
然后就可以关机了,

shutdown -h now

在以上都没有问题的情况下,以后再启动就不用这么麻烦了
只要先启动zookeeper
分别在三个主机下

    zkServer.sh  start

然后启动hdfs和yarn
在master下

    start-all.sh

最后再分别启动resourcemanager
分别在slave1和slave2下

    yarn-daemon.sh  start  resourcemanager

就行了
ok,谢谢,记得收藏加关注哦

标签:src,hadoop,master,usr,slave1,HA,local,集群
来源: https://blog.csdn.net/weixin_53404927/article/details/117448889