Hadoop2经典分布式部署模式

Hadoop2经典分布式部署模式

基于QJN的HA模式的分布式部署,不含Federation模块的实践是一个经典的Hadoop2的高可用的分布式部署模式。

1.准备测试环境

准备4台PC服务器做Hadoop2部署
ip hostname namenode fc datanode rm nodemanage QJN
10.71.84.237 hadoop201 Y Y Y Y Y Y
10.71.84.223 hadoop202 Y Y Y Y Y Y
10.71.84.222 hadoop203 N N Y N Y Y
10.71.84.238 hadoop204 N N Y N Y N
准备3台PC服务器做zookeeper部署
ip hostname
10.71.83.14 hadoop10
10.71.84.16 hadoop12
10.71.84.17 hadoop13

2.安装步骤

一、初始化每台linux系统设置

用root账户登录
  1. 安装centos6.4 x64的操作系统,安装过程略
  2. 安装成功后初始化每台机器的系统配置
    #增加hadoop组
    groupadd -g 4000 hadoop
    #增加hadoop用户
    useradd -g hadoop -c "hadoopuser" -p 111111 -u 3001 -m hadoop -d /home/hadoop
    #初始化hadoop用户的密码
    passwd hadoop
    #创建hadoop集群的数据与计算的应用目录
    mkdir /app/hadoop
    chown hadoop:hadoop /app/hadoop
    #利用root用户安装emacs工具
    yum install -y emacs
    #修改机器名称,根据不同的机器修改为不同的机器名
    hostname hadoop10
    

    emacs -nw /etc/sysconfig/network

    NETWORKING=yes
    HOSTNAME=hadoop201
    

    emacs -nw /etc/hosts

    10.71.84.237 hadoop201
    10.71.84.223 hadoop202
    10.71.84.222 hadoop203
    10.71.84.238 hadoop204
    10.71.83.14 hadoop10
    10.71.83.16 hadoop12
    10.71.83.17 hadoop13
    

    emacs -nw /etc/security/limits.d/90-nproc.conf 增加下面的内容

    *          soft    nproc     1024
    hadoop     soft    nproc     25535
    hadoop     hard    nproc     65535
    

    emacs -nw /etc/sysctl.conf 增加下面的内容

    fs.file-max = 655350
    

设置同步的时间服务器

1. >yum install -y ntp

2.emacs -nw /etc/ntp.conf

>注释掉
>#server 0.centos.pool.ntp.org iburst                                                             

>#server 1.centos.pool.ntp.org iburst                                                                 

>#server 2.centos.pool.ntp.org iburst

>#server 3.centos.pool.ntp.org iburst 

>增加国家授权时间服务器(北京邮电大学提供)

>server s1a.time.edu.cn

3.chkconfig --level 345 ntpd on

4.ntpdate s1a.time.edu.cn 

5.service ntpd start
用hadoop账户登录,修改环境变量
$ emacs -nw /home/hadoop/.bash_profile
    export JAVA_HOME=/app/hadoop/java/jdk1.6.0_38
    export CLASSPATH=$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
    export HADOOP_HOME=/app/hadoop/hadoop/hadoop-2.5.2
    export PATH=/usr/sbin:$PATH
    export PATH=$HADOOP_HOME/bin:$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH:$HOMR/bin:$PATH
用hadoop用户上传相关程序文件到 /app/hadoop
java的版本为1.6.0_38 x64
hadoop2的版本为2.5.2 x64 (apache提供的版本为32位版本,请下载此64位版本)
配置ssh免登陆(NN的自动切换)

涉及机器: hadoop201 hadoop202

配置方法:略

最终效果:hadoop201与hadoop202之间可以相互免登陆

二、每台服务器的Hadoop2相关核心配置文件

core-site.xml(/app/hadoop/hadoop/hadoop-2.5.2/etc/hadoop/core-site.xml)
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<!--
  Licensed under the Apache License, Version 2.0 (the "License");
  you may not use this file except in compliance with the License.
  You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

  Unless required by applicable law or agreed to in writing, software
  distributed under the License is distributed on an "AS IS" BASIS,
  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  See the License for the specific language governing permissions and
  limitations under the License. See accompanying LICENSE file.
-->

<!-- Put site-specific property overrides in this file. -->

<configuration>
<property>
  <name>fs.defaultFS</name>
  <value>hdfs://cluster1</value>
</property>

<property>
  <name>hadoop.tmp.dir</name>
  <value>/app/hadoop/hadoop/tmp</value>
</property>
<property>
  <name>ha.zookeeper.quorum</name>
  <value>hadoop10:2181,hadoop12:2181,hadoop13:2181</value>
</property>
hdfs-site.xml(/app/hadoop/hadoop/hadoop-2.5.2/etc/hadoop/hdfs-site.xml)
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<!--
  Licensed under the Apache License, Version 2.0 (the "License");
  you may not use this file except in compliance with the License.
  You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

  Unless required by applicable law or agreed to in writing, software
  distributed under the License is distributed on an "AS IS" BASIS,
  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  See the License for the specific language governing permissions and
  limitations under the License. See accompanying LICENSE file.
-->

<!-- Put site-specific property overrides in this file. -->

<configuration>

    <property>
        <name>dfs.replication</name>
        <value>3</value>
    </property>

    <property>
        <name>dfs.nameservices</name>
        <value>cluster1</value>
    </property>

    <property>
        <name>dfs.ha.namenodes.cluster1</name>
        <value>hadoop201,hadoop202</value>
    </property>

    <property>
        <name>dfs.namenode.rpc-address.cluster1.hadoop201</name>
        <value>hadoop201:9000</value>
    </property>

    <property>
        <name>dfs.namenode.http-address.cluster1.hadoop201</name>
        <value>hadoop201:50070</value>
    </property>

    <property>
        <name>dfs.namenode.rpc-address.cluster1.hadoop202</name>
        <value>hadoop202:9000</value>
    </property>

    <property>
        <name>dfs.namenode.http-address.cluster1.hadoop202</name>
        <value>hadoop202:50070</value>
    </property>

    <property>
        <name>dfs.namenode.shared.edits.dir</name>
        <value>qjournal://hadoop201:8485;hadoop202:8485;hadoop203:8485/cluster1</value>
    </property>

    <property>
        <name>dfs.ha.automatic-failover.enabled.cluster1</name>
        <value>true</value>
    </property>

    <property>
        <name>dfs.client.failover.proxy.provider.cluster1</name>
        <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
    </property>

    <property>
        <name>dfs.journalnode.edits.dir</name>
        <value>/app/hadoop/hadoop/tmp/journal</value>
    </property>

    <property>
        <name>dfs.ha.fencing.methods</name>
        <value>sshfence</value>
    </property>

    <property>
        <name>dfs.ha.fencing.ssh.private-key-files</name>
        <value>/home/hadoop/.ssh/id_rsa</value>
    </property>

</configuration>
mapred-site.xml(/app/hadoop/hadoop/hadoop-2.5.2/etc/hadoop/mapred-site.xml)
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<!--
  Licensed under the Apache License, Version 2.0 (the "License");
  you may not use this file except in compliance with the License.
  You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

  Unless required by applicable law or agreed to in writing, software
  distributed under the License is distributed on an "AS IS" BASIS,
  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  See the License for the specific language governing permissions and
  limitations under the License. See accompanying LICENSE file.
-->

<!-- Put site-specific property overrides in this file. -->

<configuration>
<property>
  <name>mapreduce.framework.name</name>
  <value>yarn</value>
</property>
</configuration>
yarn-site.xml(/app/hadoop/hadoop/hadoop-2.5.2/etc/hadoop/yarn-site.xml)
<?xml version="1.0"?>
<!--
  Licensed under the Apache License, Version 2.0 (the "License");
  you may not use this file except in compliance with the License.
  You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

  Unless required by applicable law or agreed to in writing, software
  distributed under the License is distributed on an "AS IS" BASIS,
  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  See the License for the specific language governing permissions and
  limitations under the License. See accompanying LICENSE file.
-->
<configuration>

<property>
        <name>yarn.resourcemanager.ha.enabled</name>
        <value>true</value>
    </property>

    <property>
        <name>yarn.resourcemanager.ha.rm-ids</name>
        <value>rm1,rm2</value>
    </property>

    <property>
        <name>yarn.resourcemanager.hostname.rm1</name>
        <value>hadoop201</value>
    </property>

    <property>
        <name>yarn.resourcemanager.hostname.rm2</name>
        <value>hadoop202</value>
    </property>

    <property>
        <name>yarn.resourcemanager.recovery.enabled</name>
        <value>true</value>
    </property>

    <property>
        <name>yarn.resourcemanager.store.class</name>
        <value>org.apache.hadoop.yarn.server.resourcemanager.recovery.ZKRMStateStore</value>
    </property>

    <property>
        <name>yarn.resourcemanager.zk-address</name>
        <value>hadoop10:2181,hadoop12:2181,hadoop13:2181</value>
        <description>For multiple zk services, separate them with comma</description>
    </property>

    <property>
          <name>yarn.resourcemanager.cluster-id</name>
          <value>yarn-ha</value>
    </property>

</configuration>

三、集群启动并初始化

1.启动每台机器上面的JournalNode节点

涉及的机器为:hadoop201 hadoop202 hadoop203

步骤:hadoop用户登陆每台机器,使用 nohup /app/hadoop/hadoop/hadoop-2.5.2/sbin/hadoop-daemon.sh start journalnode &

2.启动NameNode节点,此时NN的状态都是standby状态(由于还没有启动FC)

涉及的机器为:hadoop201 hadoop202

步骤:

1.通过hadoop账户登陆hadoop201。执行 /app/hadoop/hadoop/hadoop-2.5.2/bin/hdfs zkfc –formatZK

2.继续在hadoop201这台机器上面,执行 nohup /app/hadoop/hadoop/hadoop-2.5.2/sbin/hadoop-daemon.sh start namenode &

3.通过hadoop账户登陆hadoop202。执行 /app/hadoop/hadoop/hadoop-2.5.2/bin/hdfs namenode -bootstrapStandby

4.继续在hadoop202上面,执行 nohup /app/hadoop/hadoop/hadoop-2.5.2/sbin/hadoop-daemon.sh start namenode &

最后通过jps命令查看进程状态,检查logs目录下面相关NN的log是否有异常。确保NN进程已经正常启动

3.启动FC(ZooKeeperFailoverController)进程

涉及的机器为:hadoop201 hadoop202

步骤:

1.通过hadoop账户登陆hadoop201。执行 nohup /app/hadoop/hadoop/hadoop-2.5.2/sbin/hadoop-daemon.sh start zkfc &

2.通过hadoop账户登陆hadoop202。执行 nohup /app/hadoop/hadoop/hadoop-2.5.2/sbin/hadoop-daemon.sh start zkfc &

最后通过jps命令查看进程状态,检查logs目录下面相关FC的log是否有异常。确保FC进程已经正常启动。此时,2个NN节点将由一个是active状态,另外一个是standby状态。

4.启动datanode节点

涉及的机器为:hadoop201 hadoop202 hadoop203 hadoop204

步骤:

1.通过hadoop账户登陆每一台机器。执行 nohup /app/hadoop/hadoop/hadoop-2.5.2/sbin/hadoop-daemon.sh start datanode &

最后通过jps命令查看进程状态,检查logs目录下面相关DN的log是否有异常。确保DN进程已经正常启动。

5.启动Yarn的Rm的HA模式

涉及的机器为:hadoop201 hadoop202

步骤:

1.通过hadoop账户登陆hadoop201。执行 nohup /app/hadoop/hadoop/hadoop-2.5.2/bin/yarn resourcemanager &

2.通过hadoop账户登陆hadoop202。执行 nohup /app/hadoop/hadoop/hadoop-2.5.2/bin/yarn resourcemanager &

最后通过jps命令查看进程状态,检查logs目录下面相关rm的log是否有异常。确保Yarn的rm进程已经正常启动。

6.启动Yarn的NodeManage

涉及的机器为:hadoop201 hadoop202 hadoop203 hadoop204

步骤:

1.通过hadoop账户登陆每一台机器。执行 nohup /app/hadoop/hadoop/hadoop-2.5.2/bin/yarn nodemanager &

最后通过jps命令查看进程状态,检查logs目录下面相关nm的log是否有异常。确保Yarn的nm进程已经正常启动。

7.NameNode的HA模式验证

我们设计了两个维度的测试矩阵:系统失效方式,客户端连接模型

系统失效有两种:

终止NameNode进程:

ZKFC主动释放锁

模拟机器OOM、死锁、硬件性能骤降等故障

NN机器掉电:

ZK锁超时

模拟网络和交换机故障、以及掉电本身
客户端连接也是两种:

已连接的客户端(持续拷贝96M的文件,1M每块)

通过增加块的数目,我们希望客户端会不断的向NN去申请新的块;一般是在第一个文件快结束或第二个文件刚开始拷贝的时候使系统失效。

新发起连接的客户端(持续拷贝96M的文件,100M每块) 因为只有一个块,所以在实际拷贝过程中失效并不会立刻导致客户端或DN报错,但下一次新发起连接的客户端会一开始就没有NN可连;一般是在第一个文件快结束拷贝时使系统失效。 针对每一种组合,我们反复测试10-30次,每次拷贝5个文件进入HDFS,因为时间不一定掐的很准,所以有时候也会是在第三或第四个文件的时候才使系统失效,不管如何,我们会在结束后从HDFS里取出所有文件,并挨个检查文件MD5,以确保数据的完整性。

测试结果如下:
ZKFC主动释放锁
    5-8秒切换(需同步edits)
    客户端偶尔会有重试(~10%)
    但从未失败
ZK锁超时
    15-20s切换(超时设置为10s)
    客户端重试几率变大(~75%)
    且偶有失败(~15%),但仅见于已连接客户端
可确保数据完整性
    MD5校验从未出错 +失败时客户端有Exception
我们的结论是:Hadoop 2.0里的HDFS HA基本可满足高可用性

总结:

Hadoop2提供了NN与Rm的HA模式,为生产系统提供了高可用的保证,而且Yarn对多种分布式计算提供更为高效的资源管理,官方也是建议大家升级到hadoop2。笔者认为hadoop2的最大优势就是yarn的资源管理,先进的管理模式使后续很多的分布式应用程序,例如:spark、storm与samza等都是基于yarn。

访问链接:

NN(hadoop201)节点访问链接 http://10.71.84.237:50070/dfshealth.htm

NN(hadoop202)节点访问链接 http://10.71.84.237:50070/dfshealth.htm

Yarn(hadoop201)RM访问链接 http://10.71.84.237:8088/cluster

时间: 2024-10-12 18:05:25

Hadoop2经典分布式部署模式的相关文章

Hadoop2 伪分布式部署

一.简介 二.安装部署 三.运行hadoop例子并测试部署环境 四.注意的地方 一.简介 Hadoop是一个由Apache基金会所开发的分布式系统基础架构,Hadoop的框架最核心的设计就是:HDFS和MapReduce.HDFS为海量的数据提供了存储,HDFS有高容错性的特点,并且设计用来部署在低廉的(low-cost)硬件上:而且它提供高吞吐量(high throughput)来访问应用程序的数据,适合那些有着超大数据集(large data set)的应用程序.HDFS放宽了(relax)

二、Hadoop-2.6的完全分布式安装模式

一.Hadoop的3中运行模式 1.1.单机模式.安装简单,几乎不用作任何配置,但仅限于调试用途: 1.2.伪分布式模式.在单节点上同时启动namenode.secondary namenode.datanode.JobTracker.TaskTracker 5个进程,模拟分布式运行的各个节点. 1.3.完全分布式模式.正常的Hadoop集群,由多个节点构成. 二.Hadoop-2.6的完全分布式安装模式 2.0.准备文件 (1)Jdk1.7(或其他版本):jdk-7u79-linux-x64.

hadoop2.5.1伪分布式部署

可参阅官方文档 http://hadoop.apache.org/docs/current/hadoop-project-dist/hadoop-common/SingleCluster.html 文件下载: http://mirrors.hust.edu.cn/apache/hadoop/common/ 注:可直接使用2.5.2或2.6.0版本   都解决了2.5.1中不稳定bug 1       伪分布式部署 以测试通过的为例 Linux version 2.6.32-431.el6.x86

Hadoop2.X分布式集群部署

本博文集群搭建没有实现Hadoop HA,详细文档在后续给出,本次只是先给出大概逻辑思路. (一)hadoop2.x版本下载及安装 Hadoop 版本选择目前主要基于三个厂商(国外)如下所示: 基于Apache厂商的最原始的hadoop版本, 所有发行版均基于这个版本进行改进. 基于HortonWorks厂商的开源免费的hdp版本. 基于Cloudera厂商的cdh版本,Cloudera有免费版和企业版, 企业版只有试用期.不过cdh大部分功能都是免费的. (二)hadoop2.x分布式集群配置

大数据技术之_03_Hadoop学习_02_入门_Hadoop运行模式+【本地运行模式+伪分布式运行模式+完全分布式运行模式(开发重点)】+Hadoop编译源码(面试重点)+常见错误及解决方案

第4章 Hadoop运行模式4.1 本地运行模式4.1.1 官方Grep案例4.1.2 官方WordCount案例4.2 伪分布式运行模式4.2.1 启动HDFS并运行MapReduce程序4.2.2 启动YARN并运行MapReduce程序4.2.3 配置历史服务器4.2.4 配置日志的聚集4.2.5 配置文件说明4.3 完全分布式运行模式(开发重点)4.3.1 虚拟机准备4.3.2 编写集群分发脚本xsync4.3.3 集群配置4.3.4 集群单点启动4.3.5 SSH无密登录配置4.3.6

Apache Spark探秘:三种分布式部署方式比较

目前Apache Spark支持三种分布式部署方式,分别是standalone.spark on mesos和 spark on YARN,其中,第一种类似于MapReduce 1.0所采用的模式,内部实现了容错性和资源管理,后两种则是未来发展的趋势,部分容错性和资源管理交由统一的资源管理系统完成:让Spark运行在一个通用的资源管理系统之上,这样可以与其他计算框架,比如MapReduce,公用一个集群资源,最大的好处是降低运维成本和提高资源利用率(资源按需分配).本文将介绍这三种部署方式,并比

经典分布式系统设计

作者:潘罡 (Van Pan) @ Microsoft 在正式介绍Service Fabric之前,我们认为应该首先介绍分布式系统的经典架构. 理解了分布式系统的演进过程可以极大程度上帮助理解Service Fabric以及Azure服务中所有针对分布式系统的优秀产品. 简单系统模型 在IT时代初期,如果需要自行构建一个系统,需要完成以下工作. 采购服务器 在服务器中安装Web服务器 在服务器中安装数据库 向ISP申请静态IP 向服务器部署静态IP 向服务器中部署网站 向服务器中部署数据库原始数

MQ(部署模式)

MQ部署模式 1.master-slave部署模式 1)shared filesystem Master-Slave部署方式 主要是通过共享存储目录来实现master和slave的热备,所有的ActiveMQ应用都在不断地获取共享目录的控制权,哪个应用抢到了控制权,它就成为master. 多个共享存储目录的应用,谁先启动,谁就可以最早取得共享目录的控制权成为master,其他的应用就只能作为slave 2)shared database Master-Slave方式 与shared filesy

windows下hadoop的集群分布式部署

下面我们进行说明一下hadoop集群的搭建配置. 本文假设读者具有hadoop单机配置的基础,相同的部分不在重述. 以三台测试机为例搭建一个小集群,三台机器的ip分别为 192.168.200.1;192.168.200.2;192.168.200.3 cygwin,jdk的安装同windows下hadoop的单机伪分布式部署(1),这里略过. 1.配置 hosts 在三台机子的hosts文件中加入如下记录: 192.168.200.1 hadoop1  #master namenode 192