一、hadoop伪分布式环境搭建
二、hadoop集群HA模式搭建
三、hadoop集群HA模式(JN+ZK)+yarn搭建

角色分配

角色\服务器 node01 node02 node03 node04
zookeeper
journalnode
namenode
zkfc
datanode
resourceManager
nodeManager

一、环境准备

  1. 准备4台服务器,node01\node02\node03\node04
  2. node01能免密登录其他3台服务器,node02能免密其他3台服务器
  3. zk集群

二、应用搭建

  1. 安装ZK集群

    #--------------node02节点执行--------------------
    tar xf zookeeper-3.5.6.tar.gz
    mv zookeeper-3.5.6 /opt/bigdata
    cd /opt/bigdata/zookeeper-3.5.6/conf
    cp zoo_sample.cfg zoo.cfg
    vim zoo.cfg#修改行dataDir=/var/bigdata/hadoop/zk#增加行server.1=node02:2888:3888server.2=node03:2888:3888server.3=node04:2888:3888
    mkdir -p /var/bigdata/hadoop/zk
    echo 1 >> myid
    vi /etc/profileexport ZK_HOME=/opt/bigdata/zookeeper-3.5.6export PATH=原来的:$ZK_HOME/bin
    source /etc/profile#分发zk到node03和node04
    scp -r /opt/bigdata/zookeeper-3.5.6 node03:/opt/bigdata
    scp -r /opt/bigdata/zookeeper-3.5.6 node04:/opt/bigdata#--------------node03节点执行--------------------
    mkdir -p /var/bigdata/hadoop/zk
    echo 2 >> /var/bigdata/hadoop/zk/myid
    vi /etc/profileexport ZK_HOME=/opt/bigdata/zookeeper-3.5.6export PATH=原来的:$ZK_HOME/bin
    source /etc/profile#--------------node04节点执行--------------------
    mkdir -p /var/bigdata/hadoop/zk
    echo 3 >> /var/bigdata/hadoop/zk/myid
    vi /etc/profileexport ZK_HOME=/opt/bigdata/zookeeper-3.5.6export PATH=原来的:$ZK_HOME/bin
    source /etc/profile
    
  2. 修改hadoop的配置文件,node01~node04都要修改,

    core-site.xml配置修改,hadoop.apache.org官网地址参见

    <property><name>dfs.nameservices</name><value>hdfs://mycluster</value>
    </property>
    <property><name>ha.zookeeper.quorum</name><value>node02:2181,node03:2181,node04:2181</value>
    </property>
    

    hdfs-site.xml配置修改

    <!-- 配置角色 -->
    <property><name>dfs.replication</name><value>2</value>
    </property>
    <property><name>dfs.namenode.name.dir</name><value>/var/bigdata/hadoop/ha/dfs/name</value>
    </property><property><name>dfs.datanode.data.dir</name><value>/var/bigdata/hadoop/ha/dfs/data</value>
    </property>
    <!-- 配置角色 -->
    <!-- 配置高可用 -->
    <property><name>dfs.nameservices</name><value>mycluster</value>
    </property>
    <property><name>dfs.ha.namenodes.mycluster</name><value>nn1,nn2</value>
    </property>
    <property><name>dfs.namenode.rpc-address.mycluster.nn1</name><value>node01:8020</value>
    </property>
    <property><name>dfs.namenode.rpc-address.mycluster.nn2</name><value>node02:8020</value>
    </property>
    <property><name>dfs.namenode.http-address.mycluster.nn1</name><value>node01:50070</value>
    </property>
    <property><name>dfs.namenode.http-address.mycluster.nn2</name><value>node02:50070</value>
    </property>
    <!-- 配置journalnode在哪里启动 -->
    <property><name>dfs.namenode.shared.edits.dir</name><value>qjournal://node01:8485;node02:8485;node03:8485/mycluster</value>
    </property>
    <!-- journalnode的数据写在哪里 -->
    <property><name>dfs.journalnode.edits.dir</name><value>/var/bigdata/hadoop/ha/dfs/jn</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>
    <property><name>dfs.ha.fencing.ssh.private-key-files</name><!-- 这里一定要注意免密时使用的是dsa还是rsa,配置错误会导致2台NN的active状态无法迁移 --><value>/home/hadoop/.ssh/id_dsa</value>
    </property>
    <!-- 开启zkfc自动故障转移 -->
    <property><name>dfs.ha.automatic-failover.enabled</name><value>true</value>
    </property>
    

    slaves文件修改

    node02
    node03
    node04
    

    yarn的配置文件,复制mapred-site.xml.template,名称为mapred-site.xml:

    <property><name>mapreduce.framework.name</name><value>yarn</value>
    </property>
    

    修改yarn-site.xml:

    <property><name>yarn.nodemanager.aux-services</name><value>mapreduce_shuffle</value>
    </property>
    <property><name>yarn.resourcemanager.ha.enabled</name><value>true</value>
    </property>
    <property><name>yarn.resourcemanager.cluster-id</name><value>yarnCluster</value>
    </property>
    <property><name>yarn.resourcemanager.ha.rm-ids</name><value>rm1,rm2</value>
    </property>
    <property><name>yarn.resourcemanager.hostname.rm1</name><value>node03</value>
    </property>
    <property><name>yarn.resourcemanager.hostname.rm2</name><value>node04</value>
    </property>
    <property><name>yarn.resourcemanager.zk-address</name><value>node02:2181,node03:2181,node04:2181</value>
    </property>
    

    修改完配置后可以使用远程复制命令进行分发:

    #假如在node01修改
    scp core-site.xml hdfs-site.xml node02:`pwd`
    scp core-site.xml hdfs-site.xml node03:`pwd`
    scp core-site.xml hdfs-site.xml node04:`pwd`
    

三、启动

  1. 在启动node02~04服务器上的zk:zkServer.sh start
  2. 在node01~node03上启动JN:hadoop-daemon.sh start journalnode
  3. 选择一个NN做格式化(比如node01):hdfs namenode -format
  4. 启动这个NN:hadoop-daemon.sh start namenode
  5. 在另外一个NN节点:hdfs namenode -bootstrapStandby
  6. 在node01执行格式化ZK:hdfs zkfc -formatZK
  7. 在node01执行:start-dfs.sh
  8. 在node01启动yarn(此时会在node02/03/04节点启动nodemanager,但是并未启动resourceManager,另外由于配置文件配置的在node02/03/04启动nm,所以即使在node01启动也会被自动杀死),执行:start-yarn.sh
  9. 在node03和node04启动resourcemanager,执行:yarn-daemon.sh start resourcemanager
  10. =========================================
  11. 以后的启动流程为:
    node03~04:zkServer.sh start
    node01~03:hadoop-daemon.sh start journalnode
    node01(或node02):start-dfs.sh
    node01:start-yarn.sh
    node03~04:yarn-daemon.sh start resourcemanager

四、使用验证

hdfs的地址:
http://node01:50070 active
http://node02:50070 standby

yarn的地址:
http://node03:8088/
http://node04:8088/
yarn的standby节点访问首页时会自动跳转到active节点

mapreduce示例代码执行:

  1. 创建一个文件上传到hdfs

    touch createtxt.sh
    touch data.txt
    vim createtxt.sh# 写入以下内容for n in {1..100000};doecho "hello hadoop $n" >> data.txtdone
    chmod 700 createtxt.sh
    ./createtxt.sh
    hdfs dfs -mkdir -p /data/wc/input
    hdfs dfs -D dfs.blocksize=1048576 -put data.txt /data/wc/input
    
  2. 执行hadoop的mapreduce示例程序
    # 去到hadoop提供的示例程序目录
    cd /opt/bigdata/hadoop-2.6.5/share/hadoop/mapreduce
    # 执行单词统计的示例程序
    hadoop jar hadoop-mapreduce-examples-2.6.5.jar wordcount /data/wc/input /data/wc/output
    # 执行结束后查看hdfs目录下产出的文件
    hdfs dfs -ls /data/wc/output
    # 可以看到有2个文件
    Found 2 items
    -rw-r--r--   2 hadoop supergroup          0 2022-03-27 18:07 /data/wc/output/_SUCCESS
    -rw-r--r--   2 hadoop supergroup     788922 2022-03-27 18:07 /data/wc/output/part-r-00000
    

hadoop集群HA模式(JN+ZK)+yarn搭建相关推荐

  1. 学习笔记Hadoop(五)—— Hadoop集群的安装与部署(2)—— Hadoop集群部署模式、配置固定IP

    一.Hadoop集群部署模式 Hadoop的安装部署的模式一共有三种: 独立模式(本地模式) standalone 默认的模式,无需运行任何守护进程(daemon),所有程序都在单个JVM上执行.由于 ...

  2. Redis高可用集群-哨兵模式(Redis-Sentinel)搭建配置教程【Windows环境】

    ================================================= 人工智能教程.零基础!通俗易懂!风趣幽默!大家可以看看是否对自己有帮助! 点击查看高清无码教程 == ...

  3. flink集群standalone模式安装

    Flink完全分布式集群安装 - 知乎 Flink安装及使用 - Ruthless - 博客园 flink基本原理 - 阿凡卢 - 博客园Apache Flink1.13.x HA集群部署_willb ...

  4. Hadoop集群安装部署_伪分布式集群安装_02

    文章目录 一.解压安装 1. 安装包上传 2. 解压hadoop安装包 二.修改Hadoop相关配置文件 2.1. hadoop-env.sh 2.2. core-site.xml 2.3. hdfs ...

  5. Hadoop集群配置

    伪分布集群安装 配置环境 linux系统:Centos7 虚拟机:VMware Workstation 16 Pro 一台Linux机器,也可以称为是一个节点,上面安装的有JDK环境 最上面的是Had ...

  6. 大数据讲课笔记3.3 Hadoop集群配置

    文章目录 零.学习目标 一.导入新课 二.新课讲解 (一)配置Hadoop集群 1.在master虚拟机上配置hadoop (1)编辑Hadoop环境配置文件 - hadoop-env.sh (2)编 ...

  7. 【Hadoop集群】-集群搭建踩的那些坑之hadoop篇

    上篇文章说了在集群搭建的时候首先要开启ssh的公钥验证,只有开启了公钥验证后才能够使用公钥登录,但是在开启并生成公钥后还需要对秘钥文件进行授权处理,一般生成的authorized_keys可能文件的归 ...

  8. Hadoop集群搭建(五:Hadoop HA集群模式的安装)

    实验 目的 要求 目的: 1.Hadoop的高可用完全分布模式的安装和验证 要求: 完成Hadoop的高可用完全分布模式的安装: Hadoop的相关服务进程能够正常的启动: HDFS能够正常的使用: ...

  9. Flink (四) Flink 的安装和部署- Flink on Yarn 模式 / 集群HA / 并行度和Slot

    接上一篇 Flink (三) Flink 的安装和部署- -Standalone模式 3. Flink  提交到 Yarn Flink on Yarn 模式的原理是依靠 YARN 来调度 Flink ...

最新文章

  1. 计算机学硕哪些学校好考,什么学校研究生好考,计算机专业研究生哪个学校好考一点...
  2. 如何快速的vue init 属于自己的vue模板?
  3. 清华数为大数据应用低代码开发工具DWF 2021成长回顾
  4. 程序员的十层楼(8~9层)
  5. Spinal Cage Fusion
  6. Linux驱动编程 step-by-step (六) 用户地址检测 简单模块调试 以及一些杂项
  7. mysql一对多增删改查_SpringBoot+MySql+ElementUI实现一对多的数据库的设计以及增删改查的实现...
  8. UIView方法,属性的集合
  9. 浏览器文件分段断点上传简单示例(python 篇)
  10. matlab dll 通达信,通达信DLL插件实战篇,怎样制作我们想要的函数
  11. 石墨烯在生物医学上应用的研究进展_石墨烯在润滑油中的应用
  12. 什么是用户实体行为分析(UEBA)
  13. 工程经济—技术方案经济效果评价
  14. vsftpd虚拟账户(虚拟用户,ubuntu16,舍弃虚拟用户配置文件)
  15. cap 2 加州房价预测
  16. 什么是数据指标体系?
  17. 网站实现快速排名的原理与影响
  18. HTML页面设置ico图标
  19. MySql 8.0.19安装
  20. 小伙子利用C++设计出最难的“数独游戏”,让C++重回巅峰!

热门文章

  1. Echars的下载和使用
  2. 《第六周RFID作业》物联112118 林家辉
  3. 农村商业银行服务器未收到证书,不及时更新“证书” 当心网银U盾失效
  4. 高考,你们一定要加油
  5. Java--十大排序算法之归并排序
  6. mysql概念模型中的3种基本联系_在概念模型中,通常用实体联系图表示数据的结构,其 3 个要的元素是( )、( )和( )。_学小易找答案...
  7. 实时控制软件第二周作业 停车场门禁控制系统的状态机设计
  8. 【83】secureCRT 7.0登录Ubuntu 20.04提示key exchange failed
  9. Java 核心技术专题
  10. 在vim中写python程序_在Vim中运行Python代码