求助hadoop2.X分布式搭建两个NameNode均无法正常启动
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了求助hadoop2.X分布式搭建两个NameNode均无法正常启动相关的知识,希望对你有一定的参考价值。
参考技术A 环境要求1需要安装JDK6.0以上版本(可自行解压安装或使用自带的软件安装包,如yum)2需要无密码登录的SSH环境(安装ssh及sshd,具体配置步骤在后面介绍)END安装/配置 步骤1配置hosts文件,将主机名和对应IP地址映射。如图中Master、Slave1和Slave2是我们要搭建分布式环境的机器。Master为主机,Slavex为从机。2配置SSH的无密码登录:可新建专用用户hadoop进行操作,cd命令进入所属目录下,输入以下指令(已安装ssh)ssh-keygen -t rsa -P ""cat .ssh/id_rsa.pub >>.ssh/authorized_keys解释一下,第一条生成ssh密码的命令,-t 参数表示生成算法,有rsa和dsa两种;-P表示使用的密码,这里使用“”空字符串表示无密码。第二条命令将生成的密钥写入authorized_keys文件。这时输入 ssh localhost,弹出写入提示后回车,便可无密码登录本机。同理,将authorized_keys文件 通过 scp命令拷贝到其它主机相同目录下,则可无密码登录其它机器。安装hadoop:安装方式很简单,下载安装包到所属目录下,使用tar -zxvf 安装包名进行解压,解压完毕可通过mv 命令重命名文件夹,安装至此完成。解压后的目录内容如图所示。hadoop配置过程:要实现分布式环境,配置过程是最为重要的,这里要涉及到的配置文件有7个:~/hadoop/etc/hadoop/hadoop-env.sh~/hadoop/etc/hadoop/yarn-env.sh~/hadoop/etc/hadoop/slaves~/hadoop/etc/hadoop/core-site.xml~/hadoop/etc/hadoop/hdfs-site.xml~/hadoop/etc/hadoop/mapred-site.xml~/hadoop/etc/hadoop/yarn-site.xml之后会分别介绍各个配置的的作用和配置关键配置文件1:hadoop-env.sh该文件是hadoop运行基本环境的配置,需要修改的为java虚拟机的位置。故在该文件中修改JAVA_HOME值为本机安装位置(如,export JAVA_HOME=/usr/lib/jvm/java-1.7.0)配置文件2:yarn-env.sh该文件是yarn框架运行环境的配置,同样需要修改java虚拟机的位置。在该文件中修改JAVA_HOME值为本机安装位置(如,export JAVA_HOME=/usr/lib/jvm/java-1.7.0)配置文件3:slaves该文件里面保存所有slave节点的信息,以本篇为例写入以下内容(hosts里从机的主机名):Slave1Slave2配置文件4:core-site.xml<configuration><property><name>hadoop.tmp.dir</name><value>/data/hadoop-$user.name</value></property><property><name>fs.default.name</name><value>hdfs://Master:9000</value></property></configuration>这个是hadoop的核心配置文件,这里需要配置的就这两个属性,fs.default.name配置了hadoop的HDFS系统的命名,位置为主机的9000端口;hadoop.tmp.dir配置了hadoop的tmp目录的根位置。这里使用了一个文件系统中没有的位置,所以要先用mkdir命令新建一下。配置文件5:hdfs-site.xml<configuration><property><name>dfs.http.address</name><value>Master:50070</value></property><property><name>dfs.namenode.secondary.http-address</name><value>Master:50090</value></property><property><name>dfs.replication</name><value>1</value></property></configuration>这个是hdfs的配置文件,dfs.http.address配置了hdfs的http的访问位置;dfs.replication配置了文件块的副本数,一般不大于从机的个数。配置文件6:mapred-site.xml<configuration><property><name>mapred.job.tracker</name><value>Master:9001</value> </property><property><name>mapred.map.tasks</name><value>20</value></property><property><name>mapred.reduce.tasks</name><value>4</value></property><property><name>mapreduce.framework.name</name><value>yarn</value></property><property><name>mapreduce.jobhistory.address</name><value>Master:10020</value></property><property><name>mapreduce.jobhistory.webapp.address</name><value>Master:19888</value></property></configuration>这个是mapreduce任务的配置,由于hadoop2.x使用了yarn框架,所以要实现分布式部署,必须在mapreduce.framework.name属性下配置为yarn。mapred.map.tasks和mapred.reduce.tasks分别为map和reduce的任务数,至于什么是map和reduce,可参考其它资料进行了解。其它属性为一些进程的端口配置,均配在主机下。配置文件7:yarn-site.xml<configuration><property> <name>yarn.resourcemanager.address</name><value>Master:8032</value></property><property><name>yarn.resourcemanager.scheduler.address</name> <value>Master:8030</value></property><property> <name>yarn.resourcemanager.webapp.address</name> <value>Master:8088</value></property><property><name>yarn.resourcemanager.resource-tracker.address</name><value>Master:8031</value></property><property><name>yarn.resourcemanager.admin.address</name><value>Master:8033</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></configuration>该文件为yarn框架的配置,主要是一些任务的启动位置将配置好的hadoop复制到其他节点scp –r ~/hadoop hadoop@Slave1:~/scp –r ~/hadoop hadoop@Slave2:~/Hadoop高可用原理及环境搭建
一、说明
本次配置基于上一篇博客《Hadoop完全分布式搭建全过程》做补充,基于完全分布式做高可用搭建。。。。。。
二、原理
Hadoop1.X中只有一个NameNode,所有元数据信息都被这个NameNode管理,存在两个问题:单点故障和内存压力大,所以在Hadoop2.X中对两个存在的问题分别有对应的解决方案:
对于单点故障,Hadoop2.X中实现主备模式,有两个NameNode节点,去除之前Hadoop1.X中的SecondaryNameNode节点,用actived和standby状态区分主备机,也就是有两台NameNode主机,一台对外提供服务(actived),另一台处于待命状态(standby),两个NameNode节点有一下几点需要说明:
1、DataNode共享:两台NameNode存储数据都在同样的DataNode集群
对于两台主机的状态监测,采用ZK(zookeeper)管理,ZK中ZKFC(zookeeper failover controller)对两台NameNode进行健康检测,ZKFC对应NameNode节点会在zookeeper中抢占锁(向zookeeper创建一个节点,如果已经被创建,说明对方已经抢占锁,自己只能是standby状态)来决定自己处于actived状态还是standby状态,如果
以上是关于求助hadoop2.X分布式搭建两个NameNode均无法正常启动的主要内容,如果未能解决你的问题,请参考以下文章