转自:http://blog.csdn.net/trigl/article/details/55101826
配置双namenode的目的就是为了防错,防止一个namenode挂掉数据丢失,具体原理本文不详细讲解,这里只说明具体的安装过程。
Hadoop HA的搭建是基于Zookeeper的,关于Zookeeper的搭建可以查看这里 hadoop、zookeeper、hbase、spark集群环境搭建 ,本文可以看做是这篇文章的补充。这里讲一下Hadoop配置安装。
配置Hadoop文件
需要修改的配置文件在$HADOOP_HOME/etc/hadoop目录下面,具体修改内容如下:
core-site.xml
<!-- 指定hdfs的nameservice为ns -->
<property>
<name>fs.defaultFS</name>
<value>hdfs://ns</value>
</property>
<!--指定hadoop数据临时存放目录-->
<property>
<name>hadoop.tmp.dir</name>
<value>/data/install/hadoop-2.7.3/temp</value>
</property>
<property>
<name>io.file.buffer.size</name>
<value>4096</value>
</property>
<!--指定zookeeper地址-->
<property>
<name>ha.zookeeper.quorum</name>
<value>master1:2181,master2:2181,slave1:2181,slave2:2181,slave3:2181</value>
</property>
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
hdfs-site.xml
<!--指定hdfs的nameservice为ns,需要和core-site.xml中的保持一致 -->
<property>
<name>dfs.nameservices</name>
<value>ns</value>
</property>
<!-- ns下面有两个NameNode,分别是nn1,nn2 -->
<property>
<name>dfs.ha.namenodes.ns</name>
<value>nn1,nn2</value>
</property>
<!-- nn1的RPC通信地址 -->
<property>
<name>dfs.namenode.rpc-address.ns.nn1</name>
<value>master1:9000</value>
</property>
<!-- nn1的http通信地址 -->
<property>
<name>dfs.namenode.http-address.ns.nn1</name>
<value>master1:50070</value>
</property>
<!-- nn2的RPC通信地址 -->
<property>
<name>dfs.namenode.rpc-address.ns.nn2</name>
<value>master2:9000</value>
</property>
<!-- nn2的http通信地址 -->
<property>
<name>dfs.namenode.http-address.ns.nn2</name>
<value>master2:50070</value>
</property>
<!-- 指定NameNode的元数据在JournalNode上的存放位置 -->
<property>
<name>dfs.namenode.shared.edits.dir</name>
<value>qjournal://slave1:8485;slave2:8485;slave3:8485/ns</value>
</property>
<!-- 指定JournalNode在本地磁盘存放数据的位置 -->
<property>
<name>dfs.journalnode.edits.dir</name>
<value>/data/install/hadoop-2.7.3/journal</value>
</property>
<!-- 开启NameNode故障时自动切换 -->
<property>
<name>dfs.ha.automatic-failover.enabled</name>
<value>true</value>
</property>
<!-- 配置失败自动切换实现方式 -->
<property>
<name>dfs.client.failover.proxy.provider.ns</name>
<value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
</property>
<!-- 配置隔离机制,如果ssh是默认22端口,value直接写sshfence即可 -->
<property>
<name>dfs.ha.fencing.methods</name>
<value>sshfence(hadoop:22022)</value>
</property>
<!-- 使用隔离机制时需要ssh免登陆 -->
<property>
<name>dfs.ha.fencing.ssh.private-key-files</name>
<value>/home/hadoop/.ssh/id_rsa</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/data/install/hadoop-2.7.3/hdfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/data/install/hadoop-2.7.3/hdfs/data</value>
</property>
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
<!-- 在NN和DN上开启WebHDFS (REST API)功能,不是必须 -->
<property>
<name>dfs.webhdfs.enabled</name>
<value>true</value>
</property>
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
- 73
- 74
- 75
- 76
- 77
- 78
- 79
- 80
mapred-site.xml
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
- 1
- 2
- 3
- 4
yarn-site.xml
<!-- 指定nodemanager启动时加载server的方式为shuffle server -->
<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>
<!-- 指定resourcemanager地址 -->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>master1</value>
</property>
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
hadoop-env.sh添加如下内容
export JAVA_HOME=/data/install/jdk
# ssh端口非默认22端口
export HADOOP_SSH_OPTS="-p 22022"
- 1
- 2
- 3
yarn-env.sh添加如下内容
export JAVA_HOME=/data/install/jdk
- 1
启动命令
注意首次初始化启动命令和之后启动的命令是不同的,首次启动比较复杂,步骤不对的话就会报错,不过之后就好了
首次启动命令
1、首先启动各个节点的Zookeeper,在各个节点上执行以下命令:
bin/zkServer.sh start
- 1
2、在某一个namenode节点执行如下命令,创建命名空间
hdfs zkfc -formatZK
- 1
3、在每个journalnode节点用如下命令启动journalnode
sbin/hadoop-daemon.sh start journalnode
- 1
4、在主namenode节点用格式化namenode和journalnode目录
hdfs namenode -format ns
- 1
5、在主namenode节点启动namenode进程
sbin/hadoop-daemon.sh start namenode
- 1
6、在备namenode节点执行第一行命令,这个是把备namenode节点的目录格式化并把元数据从主namenode节点copy过来,并且这个命令不会把journalnode目录再格式化了!然后用第二个命令启动备namenode进程!
hdfs namenode -bootstrapStandby
sbin/hadoop-daemon.sh start namenode
- 1
- 2
7、在两个namenode节点都执行以下命令
sbin/hadoop-daemon.sh start zkfc
- 1
8、在所有datanode节点都执行以下命令启动datanode
sbin/hadoop-daemon.sh start datanode
- 1
日常启停命令
sbin/start-dfs.sh
sbin/stop-dfs.sh
- 1
- 2
测试验证
首先在浏览器分别打开两个节点的namenode状态,其中一个显示active,另一个显示standby
然后在active所在的namenode节点执行jps,杀掉相应的namenode进程
前面standby所对应的namenode变成active
2017-03-05更新
Hadoop配置了HA,Spark也需要更改一些配置,否则会报java.net.UnknownHostException的错误,就是在$SPARK_HOME/conf/spark-defaults.conf内添加如下内容:
spark.files file:///data/install/hadoop-2.7.3/etc/hadoop/hdfs-site.xml,file:///data/install/hadoop-2.7.3/etc/hadoop/core-site.xml
- 1
Men were born to be suffering, the pain of struggle, or the pain of regret?
相关推荐
Hadoop 3.0 分布式集群搭建(HA)详细文档 本资源摘要信息主要介绍了 Hadoop 3.0 分布式集群搭建的详细步骤和要求,从搭建前的准备工作到集群的安装和配置,涵盖了主机规划、软件规划、用户规划、数据目录规划、...
3. **配置Hadoop**:在`hdfs-site.xml`中设置HA模式,指定两个NameNode的地址,并启用ZKFailoverController。在`core-site.xml`中配置ZooKeeper的连接信息。 4. **格式化NameNode**:初次启动前,必须对每个...
所谓HA,即高可用,实现高可用最关键的是消除单点故障,hadoop-ha严格来说应该分成各个组件的HA机制——HDFS的HA、YARN的HA;通过双namenode消除单点故障;通过双namenode协调工作
根据集群规模配置Hadoop的`core-site.xml`、`hdfs-site.xml`、`yarn-site.xml`和`mapred-site.xml`等配置文件,设置HA相关参数,如`ha.zookeeper.quorum`(ZooKeeper服务器列表)、`fs.defaultFS`(指向HA NameNode...
### Hadoop 2.6.4 HA 集群搭建详解 #### 一、概述 在当前的大数据处理环境中,Hadoop作为一个强大的分布式计算框架,其稳定性和可用性至关重要。Hadoop 2.x版本引入了High Availability (HA)机制来确保系统在遇到...
本笔记将深入探讨如何搭建Hadoop HA环境,并分享配置文件及其详细解读。 首先,我们要理解Hadoop HA的基本概念。HA主要涉及到两个关键组件:NameNode和ResourceManager。NameNode是HDFS的元数据管理节点,而...
【标题】"Hadoop2的HA配置一键...通过这个一键运行脚本,用户可以简化繁琐的配置过程,快速搭建起一个具备HA能力的Hadoop集群,这对于大型企业或数据中心来说是非常重要的,因为它可以极大地提升服务的稳定性和可靠性。
### Hadoop2.x HA环境搭建知识点详解 #### 一、HA2.0集群搭建与测试 **准备工作:** 1. **停掉之前的服务:** - 在搭建Hadoop2.x HA集群之前,需要确保所有相关的服务都已经停止运行,避免与新搭建的集群产生...
HadoopHA集群搭建描述及指令,里面有各种注意事项。 集群部署节点角色的规划(3节点) ------------------ server01 namenode resourcemanager zkfc nodemanager datanode zookeeper journal node server02 ...
总的来说,搭建Hadoop2完全分布式集群是一项需要细致规划和操作的工作,它要求管理员对Hadoop架构有深入理解,并且能够熟练处理Linux环境下的各种配置工作。通过以上步骤,可以确保搭建的集群能够稳定运行,充分发挥...
Hadoop HA高可用集群搭建(Hadoop+Zookeeper+HBase) 一、Hadoop HA高可用集群...通过规划服务器环境、选择合适的版本组合、安装和配置Zookeeper、Hadoop和HBase三个组件,可以搭建一个高效的Hadoop HA高可用集群。
### Hadoop环境配置与搭建详解 #### 一、前言 Hadoop作为大数据处理的核心框架,在数据处理领域占据着举足轻重的地位。对于初学者来说,熟练掌握Hadoop的基本安装与配置流程是非常重要的。本篇文章将从零开始,...
在配置Hadoop集群时,需要修改core-site.xml文件,指定NameNode的HA高可用的ZooKeeper地址、HDFS访问的域名地址、临时文件存储目录等信息。同时,需要修改hdfs-site.xml文件,指定命名空间、NameNode通信地址、从...
在搭建Hadoop 2.6集群环境时,我们需要关注几个关键组件:HDFS(Hadoop Distributed File System)的高可用性(HA)以及YARN(Yet Another Resource Negotiator)。这个过程涉及多台虚拟机的配置,包括安装操作系统...
1. **HDFS HA**:使用NameNode HA,通常配置两个活动/备用的NameNode,当主NameNode故障时,可以无缝切换到备用NameNode,确保HDFS服务不中断。 2. **YARN HA**:YARN的HA主要涉及ResourceManager的高可用性,配置...
- 配置NameNode的HA模式,如`dfs.nameservices=hacluster`。 - 定义每个NameNode的地址,如`dfs.ha.namenodes.hacluster=nn1,nn2`。 - 分别设置两个NameNode的地址,如`dfs.namenode.rpc-address.hacluster.nn1=...
4. **配置Hadoop**:修改`hdfs-site.xml`,设置HA模式,如`dfs.nameservices`定义名称服务,`dfs.ha.namenodes`指定NameNode实例,`dfs.namenode.rpc-address`和`dfs.namenode.http-address`分别设置Active和Standby...
这个压缩包文件"hadop-2.8.1完全分布式搭建脚本和配置文件"提供了在集群环境中搭建Hadoop 2.8.1版本的详细步骤,特别强调了高可用性和自动化配置。 1. **Hadoop 2.8.1**:这是Hadoop的一个稳定版本,它包含了对HDFS...
以上就是关于Hadoop 2.0部署配置文件的一些基础知识,理解这些概念和配置文件的用途对于成功搭建和维护Hadoop集群至关重要。在实际操作中,还需要根据具体需求进行微调和优化,以实现最佳的性能和稳定性。