- 浏览: 91098 次
文章分类
最新评论
HA(High Available), 高可用性群集,是保证业务连续性的有效解决方案,一般有两个或两个以上的节点,且分为活动节点及备用节点。
一、准备
1、4台linux系统;
2、检查联网
3、检查各hosts文件
4、检查ssh
5、检查各节点的jvm配置
6、将配置好的hadoop目录拷贝到其他节点:
scp -r itcast hadoop@skx2:/home/hadoop
7、检查各配置文件
二、启动
1、启动journalnode
在各个JournalNode节点上,输入以下命令启动journalnode服务:
sbin/hadoop-daemon.sh start journalnode
[hadoop@skx4 hadoop-2.3.0]$ jps
3373 Jps
3322 JournalNode
2、对主namenode(nn1)进行格式化,并启动:
bin/hdfs namenode -format
sbin/hadoop-daemon.sh start namenode
异常:
No Route to Host from skx1.localdomain/192.168.10.101 to skx4:8485 failed on socket timeout exception: java.net.NoRouteToHostException: No route to host;
关闭skx4的防火墙
[hadoopn@skx4 ~]$ su root
Password:
[root@skx4 hadoop]# service iptables stop
Flushing firewall rules: [ OK ]
Setting chains to policy ACCEPT: filter [ OK ]
Unloading iptables modules: [ OK ]
3、[nn2]同步nn1的元数据信息:
bin/hdfs namenode -bootstrapStandby
4、启动nn2;
sbin/hadoop-daemon.sh start namenode
查看50070:
skx1:9000' (standby)
异常:skx4 host=java.net.NoRouteToHostException:
检查Namenode的9000端口是否在监听:
$ netstat -nap | grep 9000
异常:
host = java.net.UnknownHostException:
修改etc/sysconfig/network文件:
NETWORKING=yes
HOSTNAME=skx4.localdomain
在hosts文件修改为:
192.168.10.104 skx4 skx4.localdomain
如还不能启动,确认skx4在/etc/hosts文件中映射为正确的IP地址,重启网络服务:
[root@skx4 bin]# /etc/rc.d/init.d/network restart
异常消除:
STARTUP_MSG: host = skx4.localdomain/192.168.10.104
异常:java.lang.IllegalStateException: Could not determine own NN ID in namespace 'hadoop-test'. Please ensure that this node is one of the machines listed as an NN RPC address, or configure dfs.ha.namenode.id
如下修改,也不知道为什么,异常消除:
<property>
<name>dfs.namenode.rpc-address.hadoop-test.nn2</name>
<value>192.168.10.104:9000</value>
<description>
RPC address for nomenode2 of hadoop-test
</description>
</property>
异常:java.io.FileNotFoundException: /home/hadoop/itcast/hadoop-2.3.0/logs/hadoop-hadoop-namenode-skx4.localdomain.log (Permission denied)
应该是权限问题
root@skx4 hadoop]# chmod -R 777 /home/hadoop/itcast/ 下次启动又报错了。。
使用如下:
[root@skx4 /]# chmod -R a+w /home/hadoop/itcast
进入浏览器:http://192.168.10.104:50070/dfshealth.html
Overview '192.168.10.104:9000' (standby)
但是换成skx4不行
在每个hosts文件加上相应的localdomain 后重启后,改回skx4可行;
5、现在namenode为standby状态,将其中一个切换为active状态:
bin/hdfs haadmin -transitionToActive nn1
http://skx1:50070/dfshealth.html
Overview 'skx1:9000' (active)
6、启动datanode
sbin/hadoop-daemons.sh start datanode
异常:java.io.IOException: Incompatible clusterIDs in /home/hadoop/itcast/hadoop-2.3.0/dfs/data: namenode clusterID = CID-9ebd1941-ecd4-478c-83c0-eaad874e0dc2; datanode clusterID = CID-b8140ab4-40d4-4a3e-a8a5-6b6b2e5af133
说的是namedate下的version clusterID与datanode 下的clusterID不同;
将datanode里面的version clusterID修改为namenode中的一样;
出现该问题的原因:在第一次格式化dfs后,启动并使用了hadoop,后来又重新执行了格式化命令(hdfs namenode -format),这时namenode的clusterID会重新生成,而datanode的clusterID 保持不变。
异常:只启动了当前节点的datanode,而skx2/skx3/skx4没有启动:
skx4: no namenode to stop
skx1: stopping namenode
skx2: no datanode to stop
skx4: no datanode to stop
skx3: no datanode to stop
Stopping journal nodes [skx4 skx3 skx2]
skx3: stopping journalnode
skx2: stopping journalnode
skx4: stopping journalnode
解决方法:修改Master的name/current/ namespaceID使其与Slave的 name/current / namespaceID一致。
异常:[hadoop@skx4 hadoop-2.3.0]$ jps
3007 -- process information unavailable
进入本地文件系统的/tmp目录下,删除名称为hsperfdata_hadoop的文件夹,然后重新启动Hadoop。
异常:[hadoop@skx1 hadoop-2.3.0]$ bin/hdfs haadmin -transitionToActive nn1
15/03/24 23:59:53 INFO ipc.Client: Retrying connect to server: skx1/192.168.10.101:9000. Already tried 0 time(s); retry policy is RetryUpToMaximumCountWithFixedSleep(maxRetries=1, sleepTime=1000 MILLISECONDS)
1、查看jps中是否有namenode进程(查看是否启动)
2、查看log日志
3、检查防火墙是否关闭|关闭 /etc/init.d/iptables stop
异常;java.io.EOFException
原因没有启动 journalnode
解决方法:启动journalnode
在浏览器上只看见了skx1的datanode。。。
说明其他datanode没有启动起来:
手动启动,在每个节点上执行:bin/Hadoop-daemon.sh start DataNode
但是Live Nodes 1 (Decommissioned: 0)还是只显示一个
而在In Operation中
刷新能看到其他datanode节点
解决方法:删除配置的dfs目录和log目录;启动sbin/start-dfs.sh
bin/hdfs haadmin -transitionToActive nn1
好一切启动正常:
测试1:创建文件目录(一层一层的建)
[hadoop@skx1 hadoop-2.3.0]$ bin/hadoop fs -mkdir /home
hadoop@skx1 hadoop-2.3.0]$ bin/hadoop fs -mkdir /home/skx1
查看:[hadoop@skx1 hadoop-2.3.0]$ bin/hadoop fs -ls /home
启动yarn:
sbin/start-yarn.sh
异常:INFO org.apache.hadoop.service.AbstractService: Service RMActiveServices failed in state INITED; cause: java.lang.RuntimeException: Failed to initialize scheduler
Caused by: org.xml.sax.SAXParseException; systemId: file:/home/hadoop/itcast/hadoop-2.3.0/etc/hadoop/fairscheduler.xml; lineNumber: 2; columnNumber: 1; Content is not allowed in prolog.
是xml写错了,修改后启动
查看:
[hadoop@skx1 hadoop-2.3.0]$ jps
4584 NameNode
5915 ResourceManager
6001 Jps
url:http://skx1:8088/
启动成功
配置样本见附件
一、准备
1、4台linux系统;
2、检查联网
3、检查各hosts文件
4、检查ssh
5、检查各节点的jvm配置
6、将配置好的hadoop目录拷贝到其他节点:
scp -r itcast hadoop@skx2:/home/hadoop
7、检查各配置文件
二、启动
1、启动journalnode
在各个JournalNode节点上,输入以下命令启动journalnode服务:
sbin/hadoop-daemon.sh start journalnode
[hadoop@skx4 hadoop-2.3.0]$ jps
3373 Jps
3322 JournalNode
2、对主namenode(nn1)进行格式化,并启动:
bin/hdfs namenode -format
sbin/hadoop-daemon.sh start namenode
异常:
No Route to Host from skx1.localdomain/192.168.10.101 to skx4:8485 failed on socket timeout exception: java.net.NoRouteToHostException: No route to host;
关闭skx4的防火墙
[hadoopn@skx4 ~]$ su root
Password:
[root@skx4 hadoop]# service iptables stop
Flushing firewall rules: [ OK ]
Setting chains to policy ACCEPT: filter [ OK ]
Unloading iptables modules: [ OK ]
3、[nn2]同步nn1的元数据信息:
bin/hdfs namenode -bootstrapStandby
4、启动nn2;
sbin/hadoop-daemon.sh start namenode
查看50070:
skx1:9000' (standby)
异常:skx4 host=java.net.NoRouteToHostException:
检查Namenode的9000端口是否在监听:
$ netstat -nap | grep 9000
异常:
host = java.net.UnknownHostException:
修改etc/sysconfig/network文件:
NETWORKING=yes
HOSTNAME=skx4.localdomain
在hosts文件修改为:
192.168.10.104 skx4 skx4.localdomain
如还不能启动,确认skx4在/etc/hosts文件中映射为正确的IP地址,重启网络服务:
[root@skx4 bin]# /etc/rc.d/init.d/network restart
异常消除:
STARTUP_MSG: host = skx4.localdomain/192.168.10.104
异常:java.lang.IllegalStateException: Could not determine own NN ID in namespace 'hadoop-test'. Please ensure that this node is one of the machines listed as an NN RPC address, or configure dfs.ha.namenode.id
如下修改,也不知道为什么,异常消除:
<property>
<name>dfs.namenode.rpc-address.hadoop-test.nn2</name>
<value>192.168.10.104:9000</value>
<description>
RPC address for nomenode2 of hadoop-test
</description>
</property>
异常:java.io.FileNotFoundException: /home/hadoop/itcast/hadoop-2.3.0/logs/hadoop-hadoop-namenode-skx4.localdomain.log (Permission denied)
应该是权限问题
root@skx4 hadoop]# chmod -R 777 /home/hadoop/itcast/ 下次启动又报错了。。
使用如下:
[root@skx4 /]# chmod -R a+w /home/hadoop/itcast
进入浏览器:http://192.168.10.104:50070/dfshealth.html
Overview '192.168.10.104:9000' (standby)
但是换成skx4不行
在每个hosts文件加上相应的localdomain 后重启后,改回skx4可行;
5、现在namenode为standby状态,将其中一个切换为active状态:
bin/hdfs haadmin -transitionToActive nn1
http://skx1:50070/dfshealth.html
Overview 'skx1:9000' (active)
6、启动datanode
sbin/hadoop-daemons.sh start datanode
异常:java.io.IOException: Incompatible clusterIDs in /home/hadoop/itcast/hadoop-2.3.0/dfs/data: namenode clusterID = CID-9ebd1941-ecd4-478c-83c0-eaad874e0dc2; datanode clusterID = CID-b8140ab4-40d4-4a3e-a8a5-6b6b2e5af133
说的是namedate下的version clusterID与datanode 下的clusterID不同;
将datanode里面的version clusterID修改为namenode中的一样;
出现该问题的原因:在第一次格式化dfs后,启动并使用了hadoop,后来又重新执行了格式化命令(hdfs namenode -format),这时namenode的clusterID会重新生成,而datanode的clusterID 保持不变。
异常:只启动了当前节点的datanode,而skx2/skx3/skx4没有启动:
skx4: no namenode to stop
skx1: stopping namenode
skx2: no datanode to stop
skx4: no datanode to stop
skx3: no datanode to stop
Stopping journal nodes [skx4 skx3 skx2]
skx3: stopping journalnode
skx2: stopping journalnode
skx4: stopping journalnode
解决方法:修改Master的name/current/ namespaceID使其与Slave的 name/current / namespaceID一致。
异常:[hadoop@skx4 hadoop-2.3.0]$ jps
3007 -- process information unavailable
进入本地文件系统的/tmp目录下,删除名称为hsperfdata_hadoop的文件夹,然后重新启动Hadoop。
异常:[hadoop@skx1 hadoop-2.3.0]$ bin/hdfs haadmin -transitionToActive nn1
15/03/24 23:59:53 INFO ipc.Client: Retrying connect to server: skx1/192.168.10.101:9000. Already tried 0 time(s); retry policy is RetryUpToMaximumCountWithFixedSleep(maxRetries=1, sleepTime=1000 MILLISECONDS)
1、查看jps中是否有namenode进程(查看是否启动)
2、查看log日志
3、检查防火墙是否关闭|关闭 /etc/init.d/iptables stop
异常;java.io.EOFException
原因没有启动 journalnode
解决方法:启动journalnode
在浏览器上只看见了skx1的datanode。。。
说明其他datanode没有启动起来:
手动启动,在每个节点上执行:bin/Hadoop-daemon.sh start DataNode
但是Live Nodes 1 (Decommissioned: 0)还是只显示一个
而在In Operation中
刷新能看到其他datanode节点
解决方法:删除配置的dfs目录和log目录;启动sbin/start-dfs.sh
bin/hdfs haadmin -transitionToActive nn1
好一切启动正常:
测试1:创建文件目录(一层一层的建)
[hadoop@skx1 hadoop-2.3.0]$ bin/hadoop fs -mkdir /home
hadoop@skx1 hadoop-2.3.0]$ bin/hadoop fs -mkdir /home/skx1
查看:[hadoop@skx1 hadoop-2.3.0]$ bin/hadoop fs -ls /home
启动yarn:
sbin/start-yarn.sh
异常:INFO org.apache.hadoop.service.AbstractService: Service RMActiveServices failed in state INITED; cause: java.lang.RuntimeException: Failed to initialize scheduler
Caused by: org.xml.sax.SAXParseException; systemId: file:/home/hadoop/itcast/hadoop-2.3.0/etc/hadoop/fairscheduler.xml; lineNumber: 2; columnNumber: 1; Content is not allowed in prolog.
是xml写错了,修改后启动
查看:
[hadoop@skx1 hadoop-2.3.0]$ jps
4584 NameNode
5915 ResourceManager
6001 Jps
url:http://skx1:8088/
启动成功
配置样本见附件
发表评论
-
12、数据分析系统Hive/Pig
2015-03-28 00:22 551Hive(Facebook)构建在Hadoop ... -
11、hadoop--数据收集原理
2015-03-27 18:56 625常见的两种数据来源 分散的数据源: 机器产生的数据; ... -
10、zookeeper
2015-03-27 11:34 379zookeeper是一个针对大型分布式系统的可靠协调 ... -
9、HBase客户端程序开发
2015-03-27 10:48 1050开发接口实现方式: Native Java API 最常规 ... -
7、Hbase基本框架
2015-03-26 23:31 478HBase是一个构建在HDFS上的分布式列存储系统; ... -
7、Yarn--MapReduce2.0
2015-03-26 14:09 9381、yarn介绍: MapReduce 2.0和YARN区别: ... -
6、HA+Federation 详解
2015-03-26 14:05 603now is nullnow is nullnow is nu ... -
5、hadoop多节点(HA + Federation)
2015-03-26 13:42 846一、准备 1、4台linux系统 2、检查联网 3、检查各 ... -
3、hadoop 单节点 安装配置与测试
2015-03-24 12:39 706在hadoop/home中创建目录 itcast m ... -
2、hadoop 安装准备
2015-03-17 12:39 524准备工作:hadoop2.3 64 ... -
1、初相见 hadoop
2015-03-16 14:08 423_______了,把hadoop好好研 ... -
1、FastDFS
2015-03-14 21:52 0wwwwwwwwwwwwwwwwwwww http://blo ...
相关推荐
HDFS遵循主从结构,包含一个NameNode(主节点)和多个DataNode(从节点)。NameNode负责元数据管理,如文件系统命名空间和文件块信息,而DataNode则实际存储数据。文件被分割成多个块,这些块分别存储在不同的...
本文档详细介绍了Hadoop HDFS的安装和管理过程,从环境准备、用户创建、主机名配置、HDFS部署等多个方面进行了详细介绍。这些步骤对于成功部署Hadoop HDFS至关重要,有助于搭建稳定可靠的Hadoop集群。通过本文档的...
【Hadoop HA 集群部署与 YARN HA 测试Job 教学】 在大数据处理领域,Hadoop 是一个至关重要的分布式计算框架,它提供了高可用性(HA)的特性来确保服务的连续性和稳定性。Hadoop HA 主要指的是 HDFS(Hadoop ...
在构建高可用(HA)Hadoop集群时,HDFS(Hadoop Distributed File System)HA配置是关键步骤,目的是确保即使NameNode节点发生故障,数据访问和服务也不会中断。本教程将详细讲解如何配置、启动和验证Hadoop HA集群...
在深入探讨HDFS深入及Hadoop HA相关知识点之前,首先需要了解标题和描述中提及的几个关键点:课程回顾、基础课程价值信息、入门课程、分布式计算条件、HDFS深入、Hadoop HA架构、Zookeeper功能及应用场景、Hadoop ...
其中,`fs.defaultFS`属性非常重要,它定义了Hadoop应用程序访问HDFS的默认命名节点地址,例如设置为`hdfs://nameservice1`表示使用HA命名服务。 2. `hdfs-site.xml`: 这个文件是HDFS(Hadoop Distributed File ...
【Hadoop HA集群部署】是高可用(High Availability)配置的一种,主要目的是为了确保Hadoop分布式文件系统在遇到单点故障时,能够自动切换到备用节点,保证服务不间断。这通常涉及到NameNode HA,Secondary NameNode...
总之,成功部署Hadoop的HDFS HA+Federation+YARN涉及多步骤,包括配置文件的修改、各个节点服务的启动以及验证整个系统的正常运行。这个过程需要细心和耐心,但一旦完成,将提供一个高可用、可扩展的大数据处理平台...
总结来说,Hadoop HA集群部署涉及多个层面,包括硬件规划、软件配置、网络设置以及安全策略等。正确配置和管理这些组件,能确保Hadoop集群在面对单点故障时仍能提供稳定的服务,提高整体系统的可靠性。
- 配置`etc/hadoop/hdfs-site.xml`,设定副本数量、名称节点和数据节点等参数。 - 配置`etc/hadoop/mapred-site.xml`,指定MapReduce的运行模式(YARN或经典模式)以及相关参数。 - 配置`etc/hadoop/yarn-site....
4. 容错机制:深入理解HDFS的HA(高可用性)和NN Federation(命名空间联邦),以及它们如何协同工作以保证服务的连续性。 5. 源码分析:通过阅读HDFS的源码,可以深入了解其内部工作原理,包括数据块迁移的实现细节...
部署完成后,需要进行一系列测试,如检查HDFS健康状态、手动故障转移等,以确保HA功能正常。同时,定期监控和维护集群,确保数据安全和系统稳定性。 通过以上步骤,即可完成一个基本的Hadoop 2.0 HA集群的部署。...
总结来说,配置Hadoop硬件HA涉及多方面的步骤,包括服务器准备、共享存储设置、RHCS组件的安装和配置,以及集群和fence设备的图形化配置。这个过程旨在提高NameNode的可用性,降低单点故障的风险,从而增强整体...
标题中的"hadoop-2.7.2/4-ha-conf"指的是Hadoop分布式文件系统(HDFS)在高可用性(HA)模式下的配置文件,适用于Hadoop的2.7.2和2.7.4两个版本。HA是Hadoop为了确保在主NameNode故障时能无缝切换到备用NameNode,...
同时,配置core-site.xml和hdfs-site.xml文件以指定HDFS的相关参数,如名称节点地址、数据节点目录等。对于winutils.exe,需要将其添加到系统PATH环境变量中,以便在命令行中直接调用。 总的来说,"win10编译过的...
10. **测试与监控**:通过写入和读取数据到HDFS,以及提交MapReduce作业,验证HA功能是否正常。同时,应定期检查日志和监控系统,确保NameNode和ResourceManager的健康状态。 在提供的压缩包文件中,"HDP HAģʽ...
Hadoop HA(High Availability)是指通过在集群中部署多个NameNode实例来提高Hadoop集群的可用性。通常情况下,一个集群包含两个NameNode实例:一个是主动节点(Active),另一个是备用节点(Standby)。当主动节点出现...