hadoop2.0 HA高可用笔记和搭建流程

一:hadoop2.X 笔记

hadoop1.0中,HDFS存在的问题
-NameNode单点故障
-NameNode压力过大、内存受限

MapReduce存在的问题 ---mapReduce 计算时间 比较长
JobStacker 访问压力大,影响系统的扩容性
在1.x中 不支持spark。storm


Hadoop2.x 由Hdfs、MapReduce和YARN三个分支构成:
HDFS:NN federation(联合会、联邦) 是两个独立的NameNode、HA
YARN:资源管理系统
MapReduce:运行在YARN上的计算框架、或者其它计算框架

HA(high Available) :NameNodes 中只有一个处于Active 状态,其他的处在Standby 状态。其中ActiveNameNode 负责集群中的所有客户端操作,StandbyNameNode 仅仅充当备机,保证一旦ActiveNameNode 出现问题能够快速切换


hadoop2.0 HA高可用笔记和搭建流程_第1张图片

hadoop2.0 HA高可用笔记和搭建流程_第2张图片



二:hadoop2.5.2 HA搭建流程


前面基本流程和hadoop1差不多,参考配置http://blog.csdn.net/hu948162999/article/details/39059755

一个4台机器。指定节点如下:
hadoop2.0 HA高可用笔记和搭建流程_第3张图片

一:解压之后。修改hadoop-env.sh和yarn-env.sh。指定JAVA_HOME

虽然默认配置了${JAVA_HOME}的环境变量,但是hadoop启动时,会提示找不到,没有办法,指定绝对路径,这个是必须的。

二:修改hdfs-site.xml
<property>
  <name>dfs.ha.namenodes.mycluster</name>
  <value>nn1,nn2</value>
</property>
<!--配置rpc协议的端口-->
<property>
  <name>dfs.namenode.rpc-address.mycluster.nn1</name>
  <value>host1:8020</value>
</property>
<property>
  <name>dfs.namenode.rpc-address.mycluster.nn2</name>
  <value>host2:8020</value>
</property>
<!--配置http的端口-->
<property>
  <name>dfs.namenode.http-address.mycluster.nn1</name>
  <value>host1:50070</value>
</property>
<property>
  <name>dfs.namenode.http-address.mycluster.nn2</name>
  <value>host2:50070</value>
</property>
<!--配置journalNode的 url地址-->
<property>
  <name>dfs.namenode.shared.edits.dir</name>
  <value>qjournal://host2:8485;host3:8485;host4: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</value>
</property>
<!--配置隔离机制的时候 需要ssh 免密码登录-->
<property>
  <name>dfs.ha.fencing.ssh.private-key-files</name>
  <value>/root/.ssh/id_rsa</value>
</property>
<!--配置journalnode 目录-->
<property>
  <name>dfs.journalnode.edits.dir</name>
  <value>/opt/hadoop/journal/data</value>
</property>
<!-- 开启失败自动切换-->
 <property>
   <name>dfs.ha.automatic-failover.enabled</name>
   <value>true</value>
 </property>
</configuration>

三:修改core-site.xml namenode配置

包括了 zookeeper的相关配置(host1,host2,host3作为zk节点,参考: http://blog.csdn.net/hu948162999/article/details/45063579),分别在
host1.host2,host3机器上启动zk。

<configuration>
<!--配置hdfs的入口-->
<property>
  <name>fs.defaultFS</name>
  <value>hdfs://mycluster</value>
</property>

<property>
  <!-- 设置hadoop的工作目录,默认在linux的tmp目录,linux的tmp目录,每次重启都清空,其它一些目录(hdfs)都是以这些目录为基本目录的-->
  <name>hadoop.tmp.dir</name>
  <value>/opt/hadoop/workdir</value>
</property>

<property>
   <name>ha.zookeeper.quorum</name>
   <value>host1:2181,host2:2181,host3:2181</value>
 </property>
</configuration>

四:修改slaves 指定datanode
host2
host3
host4

五:这个时候可以先host2,host3,host4上启动journalnode
sbin/hadoop-daemon.sh start journalnode

六:在任何一台namenode集群机器上格式化(host1,host2)
bin/hdfs namenode  -format

七:在已经启动的namenode节点上启动namenode
sbin/hadoop-daemon.sh  start namenode

八:拷贝元数据到另外的 namenode上,在没有被格式化namenode的节点,同时启动查看
bin/hdfs namenode -bootstrapStandby

九:创建znode在zk上,在一个namenode上面
bin/hdfs zkfc -formatZK


十:这个时候重启服务
sbin/stop-dfs.sh 
sbin/start-dfs.sh 



如图,先启动namenode,datanode 然后启动journalnodes,最后启动zkfc ,每个namenode对应一个zkfc 。
jps 查看所有java进程,看是否节点状态正常

十一:配置MapReduce
mapred-set.xml和yarn-site.xml
<configuration>
 <property>   
        <name>mapreduce.framework.name</name>   
        <value>yarn</value>   
 </property>   
</configuration>

<configuration>
    <!-- 指定nodemanager启动时加载server的方式为shuffle server -->
    <property>   
            <name>yarn.nodemanager.aux-services</name>   
            <value>mapreduce_shuffle</value>   
     </property> 
     <!-- 指定resourcemanager地址 -->
     <property>
            <name>yarn.resourcemanager.hostname</name>
            <value>host1</value>
      </property>
</configuration>

配置全部OK。这个时候可以启动 sbin/start-all.sh


你可能感兴趣的:(hadoop2.0 HA高可用笔记和搭建流程)