部署HDFS HA的环境


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

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 的状态信息



本文转自 菜鸟的征程 51CTO博客,原文链接:http://blog.51cto.com/songqinglong/2064665

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/393142.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

php layui 框架,Thinkphp5+Layui高颜值内容管理框架

Thinkphp5Layui高颜值内容管理框架TP5Layui高颜值内容管理框架&#xff0c;新增API模块Thinkphp5Layui响应式后台权限管理系统专注打造好用的框架&#xff0c;极速开发&#xff0c;高效灵活&#xff0c;从架构上兼顾系统复杂度的迭代与需求多变。代码结构清晰&#xff0c;接口开…

leetcode657. 机器人能否返回原点

在二维平面上&#xff0c;有一个机器人从原点 (0, 0) 开始。给出它的移动顺序&#xff0c;判断这个机器人在完成移动后是否在 (0, 0) 处结束。 移动顺序由字符串表示。字符 move[i] 表示其第 i 次移动。机器人的有效动作有 R&#xff08;右&#xff09;&#xff0c;L&#xff…

在Angular专家Dan Wahlin的免费33部分课程中学习Angular

According to the Stack Overflow developer survey 2018, Angular is one of the most popular frameworks/libraries among professional developers. So learning it increases your chances of getting a job as a web developer significantly.根据2018年Stack Overflow开…

select查询语句执行顺序

查询中用到的关键词主要包含六个&#xff0c;并且他们的顺序依次为 select--from--where--group by--having--order by 其中select和from是必须的&#xff0c;其他关键词是可选的&#xff0c;这六个关键词的执行顺序 与sql语句的书写顺序并不是一样的&#xff0c;而是按照下面的…

Python的Virtualenv(虚拟环境)的使用(Windows篇)2

Python的Virtualenv(虚拟环境)的使用&#xff08;Windows篇&#xff09; 2018年04月13日 11:35:01 D_FallMoon 阅读数 771 版权声明&#xff1a;版权所有 装载请注明 …

Loadrunner常用15种的分析点

1.Vusers&#xff1a;提供了生产负载的虚拟用户运行状态的相关信息&#xff0c;可以帮助我们了解负载生成的结果。 2.Rendezvous&#xff08;负载过程中集合点下的虚拟用户&#xff09;&#xff1a;当设置集合点后会生成相关数据&#xff0c;反映了随着时间的推移各个时间点上并…

leetcode1442. 形成两个异或相等数组的三元组数目

给你一个整数数组 arr 。 现需要从数组中取三个下标 i、j 和 k &#xff0c;其中 (0 < i < j < k < arr.length) 。 a 和 b 定义如下&#xff1a; a arr[i] ^ arr[i 1] ^ … ^ arr[j - 1] b arr[j] ^ arr[j 1] ^ … ^ arr[k] 注意&#xff1a;^ 表示 按位异…

matlab的独立样本t检验,独立双样本检验的Matlab实现

Independent two-samples test in MatlabYang Runhuai1杨润怀(1987-)&#xff0c;男&#xff0c;讲师&#xff0c;生物3D打印Zhang Zhen1Yang Siqiao1Liang Zhen1梁振(1981-)&#xff0c;男&#xff0c;副教授&#xff0c;临床工程1、Life Science School, Anhui medical unive…

bi可视化工具_适用于您的BI解决方案的最佳数据可视化和Web报告工具

bi可视化工具通过智能数据分析使复杂变得简单 (Making the complex simple with smart data analysis) It is hard to overestimate the value of insightful analytics nowadays. All business processes have become data-driven: marketing, accounting, human resources, c…

Python os 属性(便于跨平台开发)

1、有助于跨平台开发的os模块属性 >>> tmp os.linesep >>> tmp \n >>> tmp os.sep >>> tmp / >>> tmp os.pathsep >>> tmp : >>> tmp os.curdir >>> tmp . >>> tmp os.pardir >&g…

第一个Hibernate项目

一、构建Hibernate项目 1.新建Java项目HibernateDemo1 2.导入Hibernate下的jar包&#xff08;lib->required下的所有jar包&#xff09;jdbc驱动包 3.导入hibernate.cfg.xml文件到src目录下&#xff08;在Hibernate文件目录中搜索*.cfg.xml&#xff09; 配置该文件如下&#…

前端面试常见逻辑题收集及分析

前端面试中常出现一些有趣的逻辑题,初见的时候有可能会手足无措,但实际多看几个题之后就会有一定的思考逻辑,有种打通任督二脉的感觉.以下是我个人面试经历以及网络上收集来的一些经典题目. 题目: 1.现有一个装有无限水的池塘,你手里有两个空壶,一个容积为6升,一个为5升,请问你…

php htaccess实现缓存,使用.htaccess进行浏览器图片文件缓存,_PHP教程

使用.htaccess进行浏览器图片文件缓存&#xff0c;对于图片类网站&#xff0c;每次打开页面都要重新下载图片&#xff0c;慢不说&#xff0c;还非常浪费流量。这时就需要用到缓存&#xff0c;强制浏览器缓存图片文件缓存文件&#xff0c;提问网站访问数度&#xff0c;减少流量消…

leetcode5. 最长回文子串(动态规划)

给定一个字符串 s&#xff0c;找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。 示例 1&#xff1a; 输入: “babad” 输出: “bab” 注意: “aba” 也是一个有效答案。 代码 class Solution {public String longestPalindrome(String s) {int ns.length(),max-…

aws v2.2.exe_如何在AWS Elastic Beanstalk上部署Rails 5.2 PostgreSQL应用

aws v2.2.exeby Evrim Persembe通过埃夫里姆佩塞姆贝 如何在AWS Elastic Beanstalk上部署Rails 5.2 PostgreSQL应用 (How to deploy a Rails 5.2 PostgreSQL app on AWS Elastic Beanstalk) It’s official, using Heroku for all my Rails projects so far has spoiled me ro…

学习中遇到的c++问题,持续更新

原文请訪问我的博客&#xff1a;http://xiaoshig.sinaapp.com/ 向上取整 使用ceil函数。ceil(x)返回的是大于x的最小整数。如&#xff1a; ceil(2.5) 3 ceil(-2.5) -2 sort排序头文件#include <algorithm> 数组初始化总结 整型数组初始化&#xff1a;//仅仅能赋值0…

创建邮箱过程中的问题及解决办法

转自白手起家博客 http://bbs.chinaunix.net/forum.php?modviewthread&tid770141 说明一下&#xff1a;Q代表安装过程中遇到的问题&#xff0c;或者是日志中出现的现象。A&#xff1a;代表解决方法。 Q&#xff1a; Jan 13 11:26:29 mail authdaemond: failed to connect …

php的addslashes,PHP addslashes()用法及代码示例

addslashes()函数是PHP中的内置函数&#xff0c;它返回预定义字符前带有反斜杠的字符串。该参数中不包含任何指定的字符。预定义的字符是&#xff1a;单引号(’)双引号(“)反斜杠(\)NULL注意&#xff1a;addslashes()函数不同于addcslashes()函数接受要在其之前添加斜杠的指定字…

如何在React Native中使用Redux Saga监视网络更改

by Pritish Vaidya通过Pritish Vaidya 如何在React Native中使用Redux Saga监视网络更改 (How to monitor network changes using Redux Saga in React Native) 为什么要使用Redux Saga监视网络更改&#xff1f; (Why should I use Redux Saga to monitor Network Changes?) …

leetcode214. 最短回文串(kmp)

给定一个字符串 s&#xff0c;你可以通过在字符串前面添加字符将其转换为回文串。找到并返回可以用这种方式转换的最短回文串。 示例 1: 输入: “aacecaaa” 输出: “aaacecaaa” 代码 class Solution {public int getShortestPalindrome(String s) {//求next数组的最后一…