部署HDFS HA的环境

本文涉及的产品
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
简介:

===> 环境架构部署规划:

bigdata1 NameNode ResourceManager Zookeeper JournalNode failOverController

bigdata2 NameNode ResourceManager Zookeeper JournalNode failOverController

bigdata3 DataNode NodeManager Zookeeper

bigdata4 DataNode NodeManager



===> 准备环境:

(*)清除之前的配置

(*)安装JDK、修改/etc/hosts文件、关闭防火墙、免密码登录

###############################################################################

hdfs-site.xml

<!--nameservice 名子

  此处必须与core-site文件中fs.defaultFS的值一致-->

  <property>

    <name>dfs.nameservices</name>

    <value>mycluster</value>

  </property>

  

  <!--ns1 下面有两个 namenode, nn1,nn2-->

  <property>

    <name>dfs.ha.namenodes.mycluster</name>

    <value>nn1,nn2</value>

  </property>

  

  <!-- nn1,nn2 的rpc 通信地址-->

  <property>

    <name>dfs.namenode.rpc-address.mycluster.nn1</name>

    <value>bigdata1:8020</value>

  </property>

  <property>

    <name>dfs.namenode.rpc-address.mycluster.nn2</name>

    <value>bigdata2:8020</value>

  </property>

  

  <!-- nn1, nn2 的 http 通信地址-->

  <property>

    <name>dfs.namenode.http-address.mycluster.nn1</name>

    <value>bigdata1:50070</value>

  </property>

  <property>

    <name>dfs.namenode.http-address.mycluster.nn2</name>

    <value>bigdata2:50070</value>

  </property>

  

    <!--指定 JournalNode 的日志在 JournalNode 上的存放位置,ns1 表示保存ns1的日志-->

  <property>

    <name>dfs.namenode.shared.edits.dir</name>

    <value>qjournal://bigdata1:8485;bigdata2:8485/mycluster</value>

  </property>


  <!-- 配置失败自动切换实现方式 -->

  <property>

    <name>dfs.client.failover.proxy.provider.mycluster</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>


  <!-- 配置隔离机制需要ssh免密码登陆 -->

  <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>

  

    <property>

    <name>dfs.journalnode.edits.dir</name>

    <value>/data/journal</value>

  </property>


  <!--开启 NameNode 失败自动切换 

  这指定应将群集设置为自动故障转移。在你的core-site.xml文件中,添加:

  

  <property> 

     <name> ha.zookeeper.quorum </name> 

     <value> bigdata1:2181,bigdata2:2181,bigdata3:2181 </value> 

   </property>-->

  <property>

     <name> dfs.ha.automatic-failover.enabled </name>

     <value>true</value>

  </property>

  

###############################################################################

core-site.xml

<!--HDFS数据保存的目录,默认是Linux的tmp目录-->

<property>

  <name>hadoop.tmp.dir</name>

  <value>/data/app/hadoop-2.7.1/tmp/</value>

</property>


<!--指定hdfs 的nameservice 为 ns1-->

<property>

  <name>fs.defaultFS</name>

  <value>hdfs://mycluster</value>

</property>


<!--指定zookeeper的地址-->

<property>

  <name>ha.zookeeper.quorum</name>

  <value>bigdata1,bigdata2,bigdata3</value>

</property>


###############################################################################

 mapred-site.xml

<!--MR程序运行的容器是Yarn-->

<property>

  <name>mapreduce.framework.name</name>

  <value>yarn</value>

</property>

###############################################################################

yarn-site.xml

<!--开启RM 高可靠-->

<property>

  <name>yarn.resourcemanager.ha.enabled</name>

  <value>true</value>

</property>


<!-- 指定RM的cluster id -->

<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>bigdata1</value>

</property>

<property>

  <name>yarn.resourcemanager.hostname.rm2</name>

  <value>bigdata2</value>

</property>


<!-- 指定 zk 集群地址 -->

<property>

  <name>yarn.resourcemanager.zk-address</name>

  <value>bigdata1:2181,bigdata2:2181,bigdata3:2181</value>

</property>

<!--NodeManager运行MR任务的方式-->

<property>

  <name>yarn.nodemanager.aux-services</name>

  <value>mapreduce_shuffle</value>

</property>


###############################################################################

slaves

bigdata3

bigdata4

###############################################################################

===> 将配置好的安装文件拷贝到其它几台主机上

scp  -r hadoop-2.7.1  bigdata2:/data/app

scp  -r hadoop-2.7.1  bigdata3:/data/app

scp  -r hadoop-2.7.1  bigdata4:/data/app


===> 启动journalnode:

hadoop-daemon.sh start journalnode


===> 格式化NameNode

注意,这里需要创建core-site.xml 文件中 hadoop.tmp.dir 所指定的目录,否则会报错,

此配置文件指定的目录为/data/app/hadoop-2.7.1/tmp/,因此需要先创建目录

mkdir  /data/app/hadoop-2.7.1/tmp/


格式化NameNode

hdfs namenode -format

===> 将 tmp 目录下的 dfs 目录拷贝到 bigdata2 中相同的目录下

scp -r /data/app/hadoop-2.7.1/tmp/dfs  bigdata2:/data/app/hadoop-2.7.1/tmp

===> 格式化 zookeeper(bigdata1):

需启动 zookeeper 才能执行成功,否则会提示:WARN zookeeper.ClientCnxn: Session 0x0 for server null, unexpected error, closing socket connection and attempting reconnect

java.net.ConnectException: 拒绝连接

zkServer.sh  start  (在 bigdata1,bigdata2,bigdata3上启动,即,zookeeper 集群所在的机器)

hdfs zkfc -formatZK

===> 至此,环境部署完毕,启动整个集群环境:

1. 启动 zookeeper(bigdata1,bigdata2,bigdata3):

(若不先启动zookeeper,namenode会全部为standby 状态) 

zkServer.sh  start

2. 启动 hdfs 集群:

start-all.sh (在bigdata1上启动)

yarn-daemon.sh  start  resourcemanager   (在 bigdata2 上启动)

===> 各主机执行 jps 状态:

##############################################################

[root@bigdata1 app]# jps

22224 JournalNode

22400 DFSZKFailoverController

22786 Jps

22019 NameNode

21405 QuorumPeerMain

22493 ResourceManager

##############################################################

[root@bigdata2 app]# jps

9408 QuorumPeerMain

9747 DFSZKFailoverController

9637 JournalNode

9929 Jps

9850 ResourceManager

9565 NameNode

##############################################################

[root@bigdata3 app]# jps

7664 DataNode

7531 QuorumPeerMain

7900 Jps

7775 NodeManager

##############################################################

[root@bigdata4 ~]# jps

7698 NodeManager

7587 DataNode

7823 Jps

##############################################################

测试:访问 50070 端口网页,其中有显示namenode 的状态信息(active/ standby)

可以kill 掉 activ 机器的 NameNode 进程,然后查看另一台 NameNode 的状态信息

本文转自   tianshuai369   51CTO博客,原文链接:http://blog.51cto.com/songqinglong/2064665

相关实践学习
基于MSE实现微服务的全链路灰度
通过本场景的实验操作,您将了解并实现在线业务的微服务全链路灰度能力。
相关文章
|
8月前
|
弹性计算 分布式计算 网络协议
聊聊复杂网络环境下hdfs的BlockMissingException异常|参数dfs.client.use.datanode.hostname
企业真实的网络环境是复杂多变的,在复杂的网络环境中部署并使用 hadoop 时,如果服务端的配置或客户端的使用不当,就可能会遇见各种问题。
聊聊复杂网络环境下hdfs的BlockMissingException异常|参数dfs.client.use.datanode.hostname
|
2天前
|
分布式计算 Hadoop 大数据
大数据成长之路-- hadoop集群的部署(3)HDFS新增节点
大数据成长之路-- hadoop集群的部署(3)HDFS新增节点
81 0
|
7月前
|
SQL 存储 大数据
flink standalone 部署模式且不能使用 hdfs 场景下的各种问题及其应对方案
flink standalone 部署模式且不能使用 hdfs 场景下的各种问题及其应对方案
|
9月前
|
JSON 缓存 关系型数据库
5、DataX(DataX简介、DataX架构原理、DataX部署、使用、同步MySQL数据到HDFS、同步HDFS数据到MySQL)(二)
5、DataX(DataX简介、DataX架构原理、DataX部署、使用、同步MySQL数据到HDFS、同步HDFS数据到MySQL)(二)
|
9月前
|
存储 SQL JSON
5、DataX(DataX简介、DataX架构原理、DataX部署、使用、同步MySQL数据到HDFS、同步HDFS数据到MySQL)(一)
5、DataX(DataX简介、DataX架构原理、DataX部署、使用、同步MySQL数据到HDFS、同步HDFS数据到MySQL)(一)
|
存储 分布式计算 大数据
大数据技术基础实验三:HDFS实验——部署HDFS
大数据技术基础实验三,学习如何在虚拟机群部署HDFS并设置一键启动。
314 0
大数据技术基础实验三:HDFS实验——部署HDFS
|
分布式计算 Hadoop Java
Hadoop中HDFS的API操作、客户端环境准备、配置HADOOP_HOME环境变量
Hadoop中HDFS的API操作、客户端环境准备、配置HADOOP_HOME环境变量
Hadoop中HDFS的API操作、客户端环境准备、配置HADOOP_HOME环境变量
|
存储 分布式计算 Hadoop
在Hadoop环境里面统计西游记文章的词组(hdfs实验)
在Hadoop环境里面统计西游记文章的词组(hdfs实验)
155 0
在Hadoop环境里面统计西游记文章的词组(hdfs实验)
|
分布式计算 Hadoop Java
Hadoop伪分布式部署(HDFS)
今天来讲Hadoop伪分布式部署(HDFS)
109 0
|
2天前
|
存储 分布式计算 Hadoop
【Hadoop】HDFS中的块是什么?
【4月更文挑战第9天】【Hadoop】HDFS中的块是什么?

相关实验场景

更多