2018年03月25日 16:25:26 D调的Stanley 阅读数:2725 标签: hadoop HAssh免密登录hdfs HA配置hadoop完全分布式搭建zookeeper 配置 更多

个人分类: hadooplinux
 

首先创建5台虚拟机(最少三台),并且做好部署规划

ip地址

主机名

安装软件

进程

192.168.xx.120

master

jdk,hadoop,zookeeper

namenode,ZKFC,Resourcemanager

192.168.xx.121

master2

jdk,hadoop,zookeeper

namenode,ZKFC,Resourcemanager

192.168.xx.122

slave1

jdk,hadoop,zookeeper

natanode,nodemanager,zookeeper,Journalnode,

192.168.xx.123

slave2

jdk,hadoop,zookeeper

natanode,nodemanager,zookeeper,Journalnode,

192.168.xx.124

slave3

jdk,hadoop,zookeeper

natanode,nodemanager,zookeeper,Journalnode,

一、首先设置防火墙防火墙

立即关闭防火墙service iptables stop

设置防火墙开机不启动 chkconfig iptables off

设置 selinux 将SELINUX 改为disabled

二、编辑主机名映射

vi/etc/hosts

下载 ssh包获取scp命令

yuminstall openssh-clients

将hosts远程拷贝至后面四台机器

scp /etc/hostsmaster2:/etc/hosts

三、设置五台机器时间同步

最小化安装没有ntpdate这个软件,首先用yum命令下载

yum –y installntp

设置master 与指定时间服务器同步

ntpdate cn.pool.ntp.org

设置后面4台机器与master同步

修改master ntp配置文件

vi /etc/ntp.conf

讲restrict 上的网段改为自己的网段

注释server 服务器

在最下面添加两行server 和fudge内容

启动ntpd ,并设置为开机启动

关闭后面几台ntpd,并设置为开机不启动

同步master时间服务器

ntpdate master

四、创建普通用户

adduser hadoop

passwd hadoop 设置密码

五、SSH免密登录

切换到普通用户

在五台机器上都输入ssh-keygen –t rsa,然后一直按回车

将秘钥拷贝到五台机器上

ssh-copy-id master

ssh-copy-id master2

ssh-copy-id slave1

ssh-copy-id slave2

ssh-copy-id slave3

测试能否免密登录,设置成功!

在其他四台机器上重复以上操作

六、安装jdk

我这里是最小化安装不需要检查系统自己看装的jdk,如果不是需要卸载

通过下面两行命令查找卸载

rpm –qa |grep jdk

rpm –e –nodep

修改/opt/文件夹用户

chown –R hadoop:hadoop /opt/

创建 /opt/software文件夹,这个文件夹用来存放压缩包, 创建/opt/modules这个文件用来存放解压的软件

上传jdk到software

解压jdk到modules

配置环境变变量,切换到root用户vi /etc/profile 也可以在普通用户下修改vi ~/.bash_profile,在最后添加

保存退出,输入 source /etc/profile ,然后输入java -version验证版本

将java scp至其他几台机器

将配置文件scp至其他几台机器

七、进入slave1主机,安装配置zookeeper

上传zookeeper到software文件夹,并解压到modules

修改zookeeper配置文件

   

修改dataDir 路径,增加server配置信息

创建zkData文件夹并创建myid文件,在slave1输入1

scp zookeeper文件夹到slave2和slave3下

修改slave2和slave3 的myid文件

启动zookeeper,并验证状态

启动 bin/zkCli.sh,配置完成!

八、安装配置hadoop

上传hadoop到software文件夹,并解压到modules

配置hadoop环境变量

root vi /etc/profile, 记得source /etc/profile

修改hadoop 配置文件

修改 etc/hadoop 下的环境变量文件增加java环境变量

hadoop-env.sh mapred-env.sh yarn-env.sh

export JAVA_HOME=/opt/modules/jdk1.7.0_79

修改core-site.xml文件

  1.  
    <configuration>
  2.  
        <property>
  3.  
      <name>fs.defaultFS</name>
  4.  
            <value>hdfs://ns1</value>
  5.  
        </property>
  6.  
        <property>
  7.  
            <name>hadoop.tmp.dir</name>
  8.  
            <value>/opt/modules/App/hadoop-2.5.0/data/tmp</value>
  9.  
        </property>
  10.  
        <property>
  11.  
            <name>hadoop.http.staticuser.user</name>
  12.  
            <value>hadoop</value>
  13.  
        </property>
  14.  
        <property>
  15.  
            <name>ha.zookeeper.quorum</name>
  16.  
            <value>slave1:2181,slave2:2181,slave3:2181</value>
  17.  
        </property>
  18.  
    </configuration>

修改hdfs-site.xml文件

  1.  
    <configuration>
  2.  
    <property>
  3.  
    <name>dfs.replication</name>
  4.  
    <value>3</value>
  5.  
    </property>
  6.  
    <property>
  7.  
    <name>dfs.permissions.enabled</name>
  8.  
    <value>false</value>
  9.  
    </property>
  10.  
    <property>
  11.  
    <name>dfs.nameservices</name>
  12.  
    <value>ns1</value>
  13.  
    </property>
  14.  
    <property>
  15.  
    <name>dfs.blocksize</name>
  16.  
    <value>134217728</value>
  17.  
    </property>
  18.  
    <property>
  19.  
    <name>dfs.ha.namenodes.ns1</name>
  20.  
    <value>nn1,nn2</value>
  21.  
    </property>
  22.  
    <!-- nn1的RPC通信地址,nn1所在地址 -->
  23.  
    <property>
  24.  
    <name>dfs.namenode.rpc-address.ns1.nn1</name>
  25.  
    <value>master:8020</value>
  26.  
    </property>
  27.  
    <!-- nn1的http通信地址,外部访问地址 -->
  28.  
    <property>
  29.  
    <name>dfs.namenode.http-address.ns1.nn1</name>
  30.  
    <value>master:50070</value>
  31.  
    </property>
  32.  
    <!-- nn2的RPC通信地址,nn2所在地址 -->
  33.  
    <property>
  34.  
    <name>dfs.namenode.rpc-address.ns1.nn2</name>
  35.  
    <value>master2:8020</value>
  36.  
    </property>
  37.  
    <!-- nn2的http通信地址,外部访问地址 -->
  38.  
    <property>
  39.  
    <name>dfs.namenode.http-address.ns1.nn2</name>
  40.  
    <value>master2:50070</value>
  41.  
    </property>
  42.  
    <!-- 指定NameNode的元数据在JournalNode日志上的存放位置(一般和zookeeper部署在一起) -->
  43.  
    <property>
  44.  
    <name>dfs.namenode.shared.edits.dir</name>
  45.  
    <value>qjournal://slave1:8485;slave2:8485;slave3:8485/ns1</value>
  46.  
    </property>
  47.  
    <!-- 指定JournalNode在本地磁盘存放数据的位置 -->
  48.  
    <property>
  49.  
    <name>dfs.journalnode.edits.dir</name>
  50.  
    <value>/opt/modules/hadoop-2.5.0-cdh5.3.6/data/journal</value>
  51.  
    </property>
  52.  
    <!--客户端通过代理访问namenode,访问文件系统,HDFS 客户端与Active 节点通信的Java 类,使用其确定Active 节点是否活跃 -->
  53.  
    <property>
  54.  
    <name>dfs.client.failover.proxy.provider.ns1</name>
  55.  
    <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
  56.  
    </property>
  57.  
    <!--这是配置自动切换的方法,有多种使用方法,具体可以看官网,在文末会给地址,这里是远程登录杀死的方法 -->
  58.  
    <property>
  59.  
    <name>dfs.ha.fencing.methods</name>
  60.  
    <value>sshfence</value>
  61.  
    </property>
  62.  
    <!-- 这个是使用sshfence隔离机制时才需要配置ssh免登陆 -->
  63.  
    <property>
  64.  
    <name>dfs.ha.fencing.ssh.private-key-files</name>
  65.  
    <value>/home/hadoop/.ssh/id_rsa</value>
  66.  
    </property>
  67.  
    <!-- 配置sshfence隔离机制超时时间,这个属性同上,如果你是用脚本的方法切换,这个应该是可以不配置的 -->
  68.  
    <property>
  69.  
    <name>dfs.ha.fencing.ssh.connect-timeout</name>
  70.  
    <value>30000</value>
  71.  
    </property>
  72.  
    <!-- 这个是开启自动故障转移,如果你没有自动故障转移,这个可以先不配 -->
  73.  
    <property>
  74.  
    <name>dfs.ha.automatic-failover.enabled</name>
  75.  
    <value>true</value>
  76.  
    </property>
  77.  
    </configuration>

修改mapred-site.xml.template名称为mapred-site.xml并修改

  1.  
    <configuration>
  2.  
        <property>
  3.  
    <name>mapreduce.framework.name</name>
  4.  
    <value>yarn</value>
  5.  
        </property>
  6.  
        <property>
  7.  
         <name>mapreduce.jobhistory.address</name>
  8.  
         <value>master:10020</value>
  9.  
        </property>
  10.  
        <property>
  11.  
         <name>mapreduce.jobhistory.webapp.address</name>
  12.  
         <value>master:19888</value>
  13.  
        </property>
  14.  
    </configuration>

配置 yarn-site.xml

  1.  
    <configuration>
  2.  
        <property>
  3.  
    <name>yarn.nodemanager.aux-services</name>
  4.  
    <value>mapreduce_shuffle</value>
  5.  
        </property>
  6.  
        <!-- Site specific YARN configuration properties -->
  7.  
        <!--启用resourcemanager ha-->
  8.  
        <!--是否开启RM ha,默认是开启的-->
  9.  
        <property>
  10.  
         <name>yarn.resourcemanager.ha.enabled</name>
  11.  
         <value>true</value>
  12.  
        </property>
  13.  
        <!--声明两台resourcemanager的地址-->
  14.  
        <property>
  15.  
         <name>yarn.resourcemanager.cluster-id</name>
  16.  
         <value>rmcluster</value>
  17.  
        </property>
  18.  
        <property>
  19.  
         <name>yarn.resourcemanager.ha.rm-ids</name>
  20.  
         <value>rm1,rm2</value>
  21.  
        </property>
  22.  
        <property>
  23.  
         <name>yarn.resourcemanager.hostname.rm1</name>
  24.  
         <value>master</value>
  25.  
        </property>
  26.  
        <property>
  27.  
         <name>yarn.resourcemanager.hostname.rm2</name>
  28.  
         <value>master2</value>
  29.  
        </property>
  30.  
     
  31.  
        <!--指定zookeeper集群的地址-->
  32.  
        <property>
  33.  
         <name>yarn.resourcemanager.zk-address</name>
  34.  
            <value>slave1:2181,slave2:2181,slave3:2181</value>
  35.  
        </property>
  36.  
        <!--启用自动恢复,当任务进行一半,rm坏掉,就要启动自动恢复,默认是false-->
  37.  
        <property>
  38.  
         <name>yarn.resourcemanager.recovery.enabled</name>
  39.  
         <value>true</value>
  40.  
        </property>
  41.  
     
  42.  
        <!--指定resourcemanager的状态信息存储在zookeeper集群,默认是存放在FileSystem里面。-->
  43.  
        <property>
  44.  
         <name>yarn.resourcemanager.store.class</name>
  45.  
         <value>org.apache.hadoop.yarn.server.resourcemanager.recovery.ZKRMStateStore</value>
  46.  
        </property>
  47.  
     
  48.  
    </configuration>

配置slaves

scp hadoop到其他四台机器,拷贝之前删除share/doc文件

分别在master和master2的yarn-site.xml上添加

  1.  
    <property>
  2.  
    <name>yarn.resourcemanager.ha.id</name>
  3.  
    <value>rm1</value>
  4.  
    </property>
  5.  
    <property>
  6.  
    <name>yarn.resourcemanager.ha.id</name>
  7.  
    <value>rm2</value>
  8.  
    </property>

启动zookeeper

启动journalnode sbin/hadoop-deamon.sh startjournalnode

格式化master namenode bin/hdfs namenode –format

启动 master namenode sbin/hadoop-deamon.sh startnamenode

在master2上同步master namenode元数据 bin/hdfs namenode -bootstrapStandby

启动master2 namenode sbin/hadoop-deamon.sh startnamenode

此时进入 50070 web页面,两个namenode都是standby状态,这是可以先强制手动是其中一个节点变为active bin/hdfs haadmin –transitionToActive–forcemanual

此时master变为active

手动故障转移已经完成,接下来配置自动故障转移

先把整个集群关闭,zookeeper不关,输入bin/hdfs zkfc –formatZK,格式化ZKFC

在slave1上登录zookeeper

输入ls / ,发现多了一个hadoop-ha节点,这是配置应该没有问题

启动集群, 在master 输入 sbin/start-dfs.sh

此时一个节点stanby 一个节点active

现在kill掉master namenode进程, 刷新master页面

master自动切换为active,配置成功!

启动yarn,测试resourcemanager ha ,master1输入 sbin/start-yarn.sh

master2输入 sbin/yarn-daemaon.sh start resourcemanager

在web 端输入master2:8088自动跳转

Kill master rm进程

master2:8088 active

wordcount程序测试,在本地创建一个测试文件,并上传到hdfs上

查看输出文件 hadoop fs –cat /output1/part*,运行成功

关闭active rm ,再次运行wordcount



关闭active namenode,查看文件

查看成功,rm nn HA配置成功!

hadoop完全分布式搭建HA(高可用)的更多相关文章

  1. Hadoop集群搭建-HA高可用(手动切换模式)(四)

    步骤和集群规划 1)保存完全分布式模式配置 2)在full配置的基础上修改为高可用HA 3)第一次启动HA 4)常规启动HA 5)运行wordcount 集群规划: centos虚拟机:node-00 ...

  2. Hadoop HA高可用集群搭建(Hadoop+Zookeeper+HBase)

    声明:作者原创,转载注明出处. 作者:帅气陈吃苹果 一.服务器环境 主机名 IP 用户名 密码 安装目录 master188 192.168.29.188 hadoop hadoop /home/ha ...

  3. Hadoop 3.1.2(HA)+Zookeeper3.4.13+Hbase1.4.9(HA)+Hive2.3.4+Spark2.4.0(HA)高可用集群搭建

    目录 目录 1.前言 1.1.什么是 Hadoop? 1.1.1.什么是 YARN? 1.2.什么是 Zookeeper? 1.3.什么是 Hbase? 1.4.什么是 Hive 1.5.什么是 Sp ...

  4. hadoop 集群HA高可用搭建以及问题解决方案

    hadoop 集群HA高可用搭建 目录大纲 1. hadoop HA原理 2. hadoop HA特点 3. Zookeeper 配置 4. 安装Hadoop集群 5. Hadoop HA配置 搭建环 ...

  5. 大数据Hadoop的HA高可用架构集群部署

        1 概述 在Hadoop 2.0.0之前,一个Hadoop集群只有一个NameNode,那么NameNode就会存在单点故障的问题,幸运的是Hadoop 2.0.0之后解决了这个问题,即支持N ...

  6. linux -- 基于zookeeper搭建yarn的HA高可用集群

    linux -- 基于zookeeper搭建yarn的HA高可用集群 实现方式:配置yarn-site.xml配置文件 <configuration> <property> & ...

  7. HA高可用的搭建

    HA 即 (high available)高可用,又被叫做双机热备,用于关键性业务. 简单理解就是,有两台机器A和B,正常是A提供服务,B待命闲置,当A宕机或服务宕掉,会切换至B机器继续提供服务.常用 ...

  8. CentOS7+Hadoop2.7.2(HA高可用+Federation联邦)+Hive1.2.1+Spark2.1.0 完全分布式集群安装

    1 2 2.1 2.2 2.3 2.4 2.5 2.6 2.7 2.8 2.9 2.9.1 2.9.2 2.9.2.1 2.9.2.2 2.9.3 2.9.3.1 2.9.3.2 2.9.3.3 2. ...

  9. centos HA高可用集群 heartbeat搭建 heartbeat测试 主上停止heartbeat服务 测试脑裂 两边都禁用ping仲裁 第三十二节课

    centos   HA高可用集群  heartbeat搭建 heartbeat测试  主上停止heartbeat服务  测试脑裂  两边都禁用ping仲裁  第三十二节课 heartbeat是Linu ...

随机推荐

  1. Java获取正在执行的函数名

    利用StackTrace堆栈轨迹获取某个时间的调用堆栈状态. package com.dsp.demo; public class TechDemo { public static void main ...

  2. Hibernate与MyBatis的对比

    Hibernate与MyBatis的对比总结,希望大家指出不对之处. 第一章 Hibernate与MyBatis Hibernate 是当前最流行的O/R mapping框架,它出身于sf.net,现 ...

  3. APK防反编译技术

    APK防反编译技术 下载地址:地址 我们的APK实际上就是一个ZIP压缩文件,里面包括有一个classes.dex.我们编译后生成的程序代码就所有在那里了, 通过apktool等工具能够轻松地将它们反 ...

  4. 用C++做微信公众平台开发的后台开发时,用sha1加密验证的方法

    微信公众平台开发时,须要验证消息是否来自微信server,这要用到sha1加密算法.官网上给的是php的sha函数,C++中要用到以下这个函数: 一.引入头文件: #include<openss ...

  5. hive kettle 学习笔记

    学习网址 http://wiki.pentaho.com/display/BAD/Transforming+Data+within+Hive

  6. Java初学者必学的JSTL

    所谓JSTL就是标签库  JSP Standard Tag Library,如果做为java初学者你看不懂那些$符号的话,就有必要来了解一下JSTL,如果你看到满眼的<%}%>(Scrip ...

  7. PowerDesigner使用技巧(转载)

    1.如何打开PowerDesigner 快捷工具栏 paletteTools(工具栏)--> customsize toolbars(自定义工具栏)-->勾选 palette(调色板) 2 ...

  8. kafka学习之-server.properties详细说明

    http://blog.csdn.net/lizhitao/article/details/25667831  -- 参考文章 http://kafka.apache.org/documentatio ...

  9. [转]python的requests发送/上传多个文件

    1.需要的环境 Python2.X Requests 库 2.单字段发送单个文件 在requests中发送文件的接口只有一种,那就是使用requests.post的files参数, 请求形式如下:   ...

  10. Java编程思想学习笔记——初始化与清理(二)

    成员初始化 Java尽力保证:所有变量在使用前都能得到适当的初始化. 方法的局部变量:未初始化,编译错误. void f(){ int i; // System.out.println(i);//编译 ...