Hadoop-HA配置详细步骤
1. HA服务器配置
对hdfs做高可用
1.1服务器详情
服务器:centos7
Hadoop:2.6.5
Jdk:1.8
共四台服务器
192.168.1.111 node1
192.168.1.112 node2
192.168.1.113 node3
192.168.1.114 node4
在每台服务器的/etc/hosts文件中添加上边四行内容
服务器分配
NN |
DN |
ZK |
ZKFC |
JN |
RM |
DM |
|
Node1 |
1 |
1 |
1 |
1 |
|||
Node2 |
1 |
1 |
1 |
1 |
1 |
1 |
|
Node3 |
1 |
1 |
1 |
1 |
|||
Node4 |
1 |
1 |
1 |
Journalnode:需要为奇数个
Zookeeper:需要为奇数个
ZKFS和NN在同台服务器
DM和DN保持一致。
1.2配置免密登录
- 在每台服务器分别生成各自的公钥私钥
命令如下
ssh-keygen –t rsa –P ‘’ –f ~/.ssh/id_rsa
此时查看 ~/.ssh目录下,会有两个文件,id_rsa(私钥)、id_rsa.pub(公钥)
- 将id_rsa.pub文件内容拼接到每台服务器的~/.ssh/authorized_keys文件
命令如下
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
每台服务器都需要拼接四次,包括本节点及其它三个节点的,配置完成后,即可免密登录其它节点
1.3Hadoop配置
此处使用的hadoop版本为2.6.5
1.3.1 hadoop-env.sh
编辑/etc/hadoop/hadoop-env.sh文件
找到JAVA_HOME配置位置,修改JAVA_HOME如下
export JAVA_HOME= /home/java/jdk1.8.0_144
1.3.2 hdfs-site.xml(/etc/hadoop/hdfs-site.xml)
- 配置nameservice
<property>
<name>dfs.nameservices</name>
<value>mycluster</value>
</property>
- 再配置所有namenode的名字
<property>
<name>dfs.ha.namenodes.mycluster</name>
<value>nn1,nn2</value>
</property>
注意:此处的mycluster和上边指定的服务名一致,nn1 nn2位两个namenode名称
- 配置RPC协议的端口,两个namenode都要配置
<property>
<name>dfs.namenode.rpc-address.mycluster.nn1</name>
<value>machine1.example.com:</value>
</property>
<property>
<name>dfs.namenode.rpc-address.mycluster.nn2</name>
<value>machine2.example.com:</value>
</property>
- 配置HTTP协议的端口和主机
<property>
<name>dfs.namenode.http-address.mycluster.nn1</name>
<value>node1:</value>
</property>
<property>
<name>dfs.namenode.http-address.mycluster.nn2</name>
<value>node2:</value>
</property>
- 配置journalnode
<!-- 配置journalnode --> <property>
<name>dfs.namenode.shared.edits.dir</name>
<value>qjournal://node2:8485;node3:8485;node4:8485/mycluster</value>
</property>
注意:此处的mycluster需要和服务名一样
- 配置ConfiguredFailoverProxyProvider类,HDFS通过这个类来找到active的namenode
<property>
<name>dfs.client.failover.proxy.provider.mycluster</name>
<value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
</property>
- 配置ssh fencing
<property>
<name>dfs.ha.fencing.methods</name>
<value>sshfence</value>
</property>
<property>
<name>dfs.ha.fencing.ssh.private-key-files</name>
<value>/root/.ssh/id_rsa</value>
</property>
- 配置journalnode的工作目录
<!--配置journalnode的工作目录-->
<property>
<name>dfs.journalnode.edits.dir</name>
<value>/opt/journalnode/data</value>
</property>
- 开启自动切换(可选),手动切换也可用
<!--开启自动切换(可选)-->
<property>
<name>dfs.ha.automatic-failover.enabled</name>
<value>true</value>
</property>
1.3.3 core-site.xml
- 配置namenode入口
<!--配置namenode入口-->
<property>
<name>fs.defaultFS</name>
<value>hdfs://mycluster</value>
</property>
注意:此处的mycluster需要和hdfs-site.xml文件中的nameservice名称一致
- 配置zookeeper的集群,zookeeper所在的节点
<!--配置zookeeper的集群-->
<property>
<name>ha.zookeeper.quorum</name>
<value>node1:,node2:,node3:</value>
</property>
- 配置工作目录hadoop.tmp.dir 默认是在系统的临时目录下/tmp
<!--配置hadoop的工作目录,默认在系统的临时目录下/tmp-->
<property>
<name>hadoop.tmp.dir </name>
<value>/opt/hadoop2</value>
</property>
1.3.4 slaves配置datanode
node2
node3
node4
不需要配master了,因为没有secondarynamenode,journalnode替代了它
2启动hdfs
- 先将zookeeper启动起来 ./zkServer.sh start
- 必须先启动journalnode
需要在node2、3、4启动journalnode
命令 ./hadoop-daemon.sh start journalnode
- 在任意一个namenode上格式化
在node1上格式化namenode
./hdfs namenode –format
注意centos关闭防火墙一定要用systemctl stop firewalld
格式化后,在/opt/hadoop2下就会有元数据文件了
- 将node1上的元数据文件拷贝到node2中
- 必须先启动node1中的namenode
./hadoop-daemon.sh start namenode
- 在没有格式化namenode的节点上(node2)上执行命令
./hdfs namenode –bootstrapStandby
命令成功执行后,在/opt/hadoop2/下就会有元数据文件了
- 格式化zk,在任意一台namenode节点上
hdfs zkfc -formatZK
- 停止hdfs
./stop-dfs.sh
会停止除了zookeeper之外的所有进程
- 启动hdfs
./start-dfs.sh
[root@localhost sbin]# ./start-dfs.sh Starting namenodes on [node1 node2] node2: starting namenode, logging to /home/hadoop/hadoop-2.6./logs/hadoop-root-namenode-node2.out node1: starting namenode, logging to /home/hadoop/hadoop-2.6./logs/hadoop-root-namenode-node1.out node4: starting datanode, logging to /home/hadoop/hadoop-2.6./logs/hadoop-root-datanode-node4.out node3: starting datanode, logging to /home/hadoop/hadoop-2.6./logs/hadoop-root-datanode-localhost.out node2: starting datanode, logging to /home/hadoop/hadoop-2.6./logs/hadoop-root-datanode-node2.out Starting journal nodes [node2 node3 node4] node4: starting journalnode, logging to /home/hadoop/hadoop-2.6./logs/hadoop-root-journalnode-node4.out node3: starting journalnode, logging to /home/hadoop/hadoop-2.6./logs/hadoop-root-journalnode-localhost.out node2: starting journalnode, logging to /home/hadoop/hadoop-2.6./logs/hadoop-root-journalnode-node2.out Starting ZK Failover Controllers on NN hosts [node1 node2] node2: starting zkfc, logging to /home/hadoop/hadoop-2.6./logs/hadoop-root-zkfc-node2.out node1: starting zkfc, logging to /home/hadoop/hadoop-2.6./logs/hadoop-root-zkfc-node1.out [root@localhost sbin]# jps Jps DFSZKFailoverController QuorumPeerMain NameNode
- 启动成功
会发现有一个是active 一个是standby
- 测试
在hdfs新建一个路径,上传文件
./hdfs dfs -mkdir -p /usr/file
./hdfs dfs -put /home/java/jdk-8u144-linux-x64.tar.gz /usr/file/
3.配置mapreduce
3.1 mapred-site.xml
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
3.2 yarn-site.xml
<!--resourcemanager在哪台服务器上-->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>node1</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
<value>org.apache.hadoop.mapred.ShuffleHandler</value>
</property>
4.全面启动
- 需要先将hdfs停掉
在node1上./stop-dfs.sh
- 全面启动
Node1上 ./start-all.sh
jps查看进程
[root@node1 sbin]# jps
6977 NameNode
7603 Jps
3302 QuorumPeerMain
7244 DFSZKFailoverController
7327 ResourceManager
启动成功。
Hadoop-HA配置详细步骤的更多相关文章
- OPGL+GLFW+GLEW配置详细步骤
转载自:https://blog.csdn.net/weixin_40921421/article/details/80211813 本文设计的工具包: 链接:https://pan.baidu.co ...
- OPGL+VS2017+GLFW+GLEW配置详细步骤
OPGL+VS2017+GLFW+GLEW配置详细步骤: https://blog.csdn.net/weixin_40921421/article/details/80211813 原博客地址:ht ...
- Apollo 配置详细步骤(Windows环境)
一. 准备工作 1.下载 apollo 安装包 下载链接:http://activemq.apache.org/apollo/download.html 2.下载 JavaJDK 安装包 ( apol ...
- CentOS Hadoop安装配置详细
总体思路,准备主从服务器,配置主服务器可以无密码SSH登录从服务器,解压安装JDK,解压安装Hadoop,配置hdfs.mapreduce等主从关系. 1.环境,3台CentOS7,64位,Hadoo ...
- 【Hadoop】Hadoop HA 部署 详细过程(架构、机器规划、配置文件、部署步骤)
1.概念.架构 2.配置文件示例.部署步骤 hadoop2.0已经发布了稳定版本了,增加了很多特性,比如HDFS HA.YARN等.最新的hadoop-2.4.1又增加了YARN HA 注意:apac ...
- hadoop HA 配置 + zookeeper 服务注册
环境测试 6台机器 centos6.7 x64 master ( namenode/cluster ) 10.10.100.101 namenode1 10.10.100.105 namenode2 ...
- PERC H310 配置详细步骤【阵列RAID创建】【阵列恢复】【阵列池创建】
机器配置: HP PRO6300 二手淘的201912,HP的主板芯片Intel Q75芯片组,集成显卡(集成显卡与H310阵列卡冲突),CPU Intel I5 3450 [raid5阵列创建] 1 ...
- Oracle Stream配置详细步骤
1 引言 Oracle Stream功能是为提高数据库的高可用性而设计的,在Oracle 9i及之前的版本这个功能被称为Advance Replication.Oracle Stream利用高级队列技 ...
- lab_0 清华大学ucore实验环境配置详细步骤!(小白入)
实验步骤 1.下载项目 从github上 的https://github.com/kiukotsu/ucore下载 ucore lab实验: git clone https://github.com/ ...
随机推荐
- 【cocos2dx开发技巧10】cocosStudio的集成以及c++11的新特性
转发.请保持地址:http://blog.csdn.net/stalendp/article/details/38880997 非常长时间没有碰cocos2dx了,近期又用起来了.花了好几个小时又一次 ...
- Atitit..jdk java 各版本新特性 1.0 1.1 1.2 1.3 1.4 1.5(5.0) 1.6(6.0) 7.0 8.0 9.0 attilax 大总结
Atitit..jdk java 各版本新特性 1.0 1.1 1.2 1.3 1.4 1.5(5.0) 1.6(6.0) 7.0 8.0 9.0 attilax 大总结 1.1. Java的编年史2 ...
- Hadoop-2.6.0上调用C的API实现相似云盘的功能
Hadoop-2.6.0上调用C的API实现类似云盘的功能(上传.下载.删除,重命名) 測试系统:CentOS6.6, hadoop-2.6.0 本次測试是调用hadoop下的C的API来訪问HDFS ...
- Spring WebSocket Support官方文档+翻译
实时更新技术能够应用在很多场景中,比如在浏览器中聊天.股票报价.状态更新.现场直播.这些需求对时间的延迟性都很敏感,但是我们可以发现他们存在这共有的共性. 标准的HTTP请求,是一次请求对应一次相应. ...
- PMD:Java源代码扫描器
PMD是一个开源代码分析器.可以查找常见编程缺陷,比如未使用的变量.空catch代码块.不必要的对象创建等.支持Java.JavaScript.PLSQL.Apache Velocity.XML.XS ...
- Intellij idea 切换SVN路径
一直不懂如何切换路径,每次都是删除---->检出:本地源码都不能保存下来,非常麻烦 //在idea中svn切换到新分支:[vcs] -> [subversion] -> [updat ...
- ANDROID版本号号和版本号名称的重要性介绍
转载请注明出处http://blog.csdn.net/y150481863/article/details/41249159,来自[http://blog.csdn.net/y150481863] ...
- 摘要: CentOS 6.5搭建Redis3.2.8伪分布式集群
from https://my.oschina.net/ososchina/blog/856678 摘要: CentOS 6.5搭建Redis3.2.8伪分布式集群 前言 最近在服务器上搭建了 ...
- jvm的字符串池
1 jvm中是有专门的字符串池的内存空间的,这块空间和栈和堆不同. 2 String s = "string constant"; 这个时候,如果string pool中没有&qu ...
- Django 认证系统 cookie & session & auth模块
概念 cookie不属于http协议范围,由于http协议无法保持状态,但实际情况,我们却又需要“保持状态”,因此cookie就是在这样一个场景下诞生. cookie的工作原理是:由服务器产生内容,浏 ...