热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

07Hadoop安装部署

Hadoop安装部署hadoop安装部署思维导图下载链接伪分布式伪分布部署操作系统环境依赖软件ssh,jdk安装JDKrpm-ijdk-7u67-linux-x64.rpmw
Hadoop安装部署

hadoop安装部署思维导图下载链接

伪分布式


伪分布部署


  • 操作系统环境

    • 依赖软件ssh,jdk

      • 安装JDK

        • rpm -i jdk-7u67-linux-x64.rpm

        • whereis java

          • 查看安装路径
      • SSH

        • ssh-keygen -t dsa -P ‘’ -f ~/.ssh/id_dsa
        • cat id_dsa.pub >> authorized_keys
        • ssh localhost
    • 环境的配置

      • vi + /etc/profile

        • export JAVA_HOME=/usr/java/jdk1.7.0_67
        • export PATH=PATH:PATH:PATH:JAVA_HOME/bin
      • source /etc/profile

    • 时间同步

    • hosts

      • IP映射
    • hostname

      • 主机名
  • 创建目录

    • mkdir -p /opt/sxt/
  • 解压、环境配置

    • tar xf hadoop-2.6.5.tar.gz -C /opt/sxt/

    • vi + /etc/profile

      • export HADOOP_HOME=/opt/sxt/hadoop-2.6.5
      • export PATH=PATH:PATH:PATH:HADOOP_HOME/bin:$HADOOP_HOME/sbin
  • 配置文件修改(cd /hadoop/etc/hadoop/)

    • vi hadoop-env.sh

    • vi mapred-env.sh

    • vi yarn-env.sh

    • vi core-site.xml

      fs.defaultFS
      hdfs://localhost:9000

      hadoop.tmp.dir
      /var/sxt/hadoop/pseudo

    • vi hdfs-site.xml

      dfs.replication
      1

      dfs.namenode.secondary.http-address
      localhost:50090

    • vi slaves

      • localhost
  • 格式化hdfs

    • hdfs namenode -format (只能格式化一次,再次启动集群不要执行)
  • 启动集群

    • start-dfs.sh
  • 浏览器访问

    • ss -nal
    • http://1.1.1.1:50070
  • 命令

    • hdfs

      • dfs

        • hdfs dfs

          • [-appendToFile … ]
          • [-cat [-ignoreCrc] …]
          • [-checksum …]
          • [-chgrp [-R] GROUP PATH…]
          • [-chmod [-R] PATH…]
          • [-chown [-R] [OWNER][:[GROUP]] PATH…]
          • [-copyFromLocal [-f] [-p] [-l] … ]
          • [-copyToLocal [-p] [-ignoreCrc] [-crc] … ]
          • [-count [-q] [-h]

            …]

          • [-cp [-f] [-p | -p[topax]] … ]
          • [-createSnapshot []]
          • [-deleteSnapshot ]
          • [-df [-h] [

            …]]

          • [-du [-s] [-h]

            …]

          • [-expunge]
          • [-get [-p] [-ignoreCrc] [-crc] … ]
          • [-getfacl [-R]

            ]

          • [-getfattr [-R] {-n name | -d} [-e en]

            ]

          • [-getmerge [-nl] ]
          • [-help [cmd …]]
          • [-ls [-d] [-h] [-R] [

            …]]

          • [-mkdir [-p]

            …]

          • [-moveFromLocal … ]
          • [-moveToLocal ]
          • [-mv … ]
          • [-put [-f] [-p] [-l] … ]
          • [-renameSnapshot ]
          • [-rm [-f] [-r|-R] [-skipTrash] …]
          • [-rmdir [–ignore-fail-on-non-empty] …]
          • [-setfacl [-R] [{-b|-k} {-m|-x }

            ]|[–set

            ]]

          • [-setfattr {-n name [-v value] | -x name}

            ]

          • [-setrep [-R] [-w]

            …]

          • [-stat [format]

            …]

          • [-tail [-f] ]
          • [-test -[defsz]

            ]

          • [-text [-ignoreCrc] …]
          • [-touchz

            …]

          • [-usage [cmd …]]
    • 实例

      • hdfs dfs -mkdir -p /user/root
      • hdfs dfs -ls -R /
      • hdfs dfs -put hadoop-2.6.5.tar.gz /user/root

全分布安装


全分布部署


  • 操作系统环境

    • hostname

      • 主机名
    • hosts

      • IP映射
    • 服务器设置

      • cat /etc/sysconfig/selinux

        • SELINUX=disabled
    • 时间同步

      • date -s “2020-2-6 16:24:40”
    • JDK

      • 安装JDK

        • rpm -i jdk-7u67-linux-x64.rpm

        • whereis java

          • 查看安装路径
      • 环境的配置

        • vi + /etc/profile

          • export JAVA_HOME=/usr/java/jdk1.7.0_67
          • export PATH=PATH:PATH:PATH:JAVA_HOME/bin
        • source /etc/profile

  • SSH

    • ssh-keygen -t dsa
    • ssh-copy-id ***
  • Hadoop配置文件

    • vi hadoop-env.sh

    • vi mapred-env.sh

    • vi yarn-env.sh

    • vi core-site.xml

      fs.defaultFS
      hdfs://node0001:9000

      hadoop.tmp.dir
      /var/sxt/hadoop/full

    • vi hdfs-site.xml

      dfs.replication
      3

      dfs.namenode.secondary.http-address
      node0002:50090

    • vi slaves

      • node0002
      • node0003
      • node0004
  • 存储小文件

    • hdfs dfs -D dfs.blocksize=1048276 -put test.txt

高可用HA


Hadoop 2.0产生背景


  • Hadoop 1.0中HDFS和MapReduce在高可用、扩展性等方面存在问题HDFS存在的问题(2个)

    • NameNode单点故障,难以应用于在线场景 HA(high availability高可用)
    • NameNode压力过大,且内存受限,影扩展性 F(federation联邦)
  • MapReduce存在的问题响系统

    • JobTracker访问压力大,影响系统扩展性
    • 难以支持除MapReduce之外的计算框架,比如Spark、Storm等

Hadoop 1.x与Hadoop 2.x


  • Hadoop 2.x由HDFS、MapReduce和YARN三个分支构成:

    • HDFS:NN Federation(联邦)、HA;

      • 2.X:只支持2个节点HA,3.0实现了一主多从
    • MapReduce:运行在YARN上的MR;

      • 离线计算,基于磁盘I/O计算
    • YARN:资源管理系统


HDFS 2.x


  • 解决HDFS 1.0中单点故障和内存受限问题。

  • 解决单点故障

    • HDFS HA:通过主备NameNode解决
    • 如果主NameNode发生故障,则切换到备NameNode上
  • 解决内存受限问题

    • HDFS Federation(联邦)
    • 水平扩展,支持多个NameNode;
    • (2)每个NameNode分管一部分目录;
    • (1)所有NameNode共享所有DataNode存储资源
  • 2.x仅是架构上发生了变化,使用方式不变

  • 对HDFS使用者透明

  • HDFS 1.x中的命令和API仍可以使用


HDFS 2.x HA


  • 主备NameNode

  • 解决单点故障(属性,位置)

    • 主NameNode对外提供服务,备NameNode同步主NameNode元数据,以待切换
    • 所有DataNode同时向两个NameNode汇报数据块信息(位置)
    • JNN:集群(属性)
    • standby:备,完成了edits.log文件的合并产生新的image,推送回ANN
  • 两种切换选择

    • 手动切换:通过命令实现主备之间的切换,可以用HDFS升级等场合
    • 自动切换:基于Zookeeper实现
  • 基于Zookeeper自动切换方案

    • ZooKeeper Failover Controller:监控NameNode健康状态,
    • 并向Zookeeper注册NameNode
    • NameNode挂掉后,ZKFC为NameNode竞争锁,获得ZKFC 锁的NameNode变为active

联邦


HDFS 2.x Federation


  • 通过多个namenode/namespace把元数据的存储和管理分散到多个节点中,使到namenode/namespace可以通过增加机器来进行水平扩展。
  • 能把单个namenode的负载分散到多个节点中,在HDFS数据规模较大的时候不会也降低HDFS的性能。可以通过多个namespace来隔离不同类型的应用,把不同类型应用的HDFS元数据的存储和管理分派到不同的namenode中。

高可用搭建理论(未设置自动故障转移)


安装部署


  • 环境

    • JDK

      • profile环境变量

        • export JAVA_HOME=/usr/java/jdk1.7.0_67
          PATH=PATH:PATH:PATH:JAVA_HOME/bin
    • SSH免密

      • NN需要分发公钥
  • hadoop

    • profile环境变量

      • export HADOOP_HOME=/opt/sxt/hadoop-2.6.5
        PATH=PATH:PATH:PATH:HADOOP_HOME/bin:$HADOOP_HOME/sbin
    • vi hadoop-env.sh

    • vi mapred-env.sh

    • vi yarn-env.sh

    • hdfs-site.xml

      dfs.replication
      3

    dfs.nameservices
    mycluster

    -
    dfs.ha.namenodes.mycluster
    nn1,nn2

    -
    dfs.namenode.rpc-address.mycluster.nn1
    node0001:8020


    dfs.namenode.rpc-address.mycluster.nn2
    node0002:8020

    -
    dfs.namenode.http-address.mycluster.nn1
    node0001:50070


    dfs.namenode.http-address.mycluster.nn2
    node0002:50070

    -
    dfs.namenode.shared.edits.dir
    qjournal://node0001:8485;node0002:8485;node0003:8485/mycluster

    -
    dfs.client.failover.proxy.provider.mycluster
    org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider

    -
    dfs.ha.fencing.methods
    sshfence


    dfs.ha.fencing.ssh.private-key-files
    /root/.ssh/id_rsa

    -
    dfs.journalnode.edits.dir
    /var/sxt/hadoop/ha/journalnode

    • vi core-site.xml

    fs.defaultFS
    hdfs://mycluster

    -
    hadoop.tmp.dir
    /var/sxt/hadoop/ha

    • vi slaves

      • node0002
      • node0003
      • node0004

高可用搭建实操(自动故障转移)


高可用部署


  • hadoop

    • hdfs-site.xml

    dfs.ha.automatic-failover.enabled
    true

    • core-site.xml

    ha.zookeeper.quorum
    node0002:2181,node0003:2181,node0004:2181

  • zookeeper

    • profile环境变量

      • export ZOOKEEPER_HOME=/opt/sxt/zookeeper-3.4.6
        PATH=PATH:PATH:PATH:ZOOKEEPER_HOME/bin
    • zoo.cfg

      • dataDir=/var/sxt/zk
      • server.1=node0002:2888:3888
        server.2=node0003:2888:3888
        server.3=node0004:2888:3888
    • echo 1 >/var/sxt/zk/myid

    • 命令

      • zkServer.sh start
      • zkServer.sh status
  • 首次启动

    • zkServer.sh start

    • hadoop-daemon.sh start journalnode

    • hdfs namenode -format

    • hadoop-daemon.sh start namenode

    • hdfs namenode -bootstrapStandby

    • hdfs zkfc -formatZK

    • 验证

      • zkCli.sh

        • ls /
      • ls /hadoop-ha/mycluster

      • get /hadoop-ha/mycluster/ActiveBreadCrumb

      • get /hadoop-ha/mycluster/ActiveStandbyElectorLock

      • hadoop-daemon.sh stop zkf

    • start-dfs.sh

    • ss -nal

  • 之后启动

    • zkServer.sh start
    • start-dfs.sh

推荐阅读
  • Hadoop2.6.0 + 云centos +伪分布式只谈部署
    3.0.3玩不好,现将2.6.0tar.gz上传到usr,chmod-Rhadoop:hadophadoop-2.6.0,rm掉3.0.32.在etcp ... [详细]
  • 本文总结了初学者在使用dubbo设计架构过程中遇到的问题,并提供了相应的解决方法。问题包括传输字节流限制、分布式事务、序列化、多点部署、zk端口冲突、服务失败请求3次机制以及启动时检查。通过解决这些问题,初学者能够更好地理解和应用dubbo设计架构。 ... [详细]
  • 伸缩性|发生_分布式文件系统设计,该从哪些方面考虑?
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了分布式文件系统设计,该从哪些方面考虑?相关的知识,希望对你有一定的参考价值。点击上方关注“ ... [详细]
  • 本文介绍了Redis的基础数据结构string的应用场景,并以面试的形式进行问答讲解,帮助读者更好地理解和应用Redis。同时,描述了一位面试者的心理状态和面试官的行为。 ... [详细]
  • HDFS2.x新特性
    一、集群间数据拷贝scp实现两个远程主机之间的文件复制scp-rhello.txtroothadoop103:useratguiguhello.txt推pushscp-rr ... [详细]
  • React项目中运用React技巧解决实际问题的总结
    本文总结了在React项目中如何运用React技巧解决一些实际问题,包括取消请求和页面卸载的关联,利用useEffect和AbortController等技术实现请求的取消。文章中的代码是简化后的例子,但思想是相通的。 ... [详细]
  • 一句话解决高并发的核心原则
    本文介绍了解决高并发的核心原则,即将用户访问请求尽量往前推,避免访问CDN、静态服务器、动态服务器、数据库和存储,从而实现高性能、高并发、高可扩展的网站架构。同时提到了Google的成功案例,以及适用于千万级别PV站和亿级PV网站的架构层次。 ... [详细]
  • 先看看ElementUI里关于el-table的template数据结构:<template><el-table:datatableData><e ... [详细]
  • LVS实现负载均衡的原理LVS负载均衡负载均衡集群是LoadBalance集群。是一种将网络上的访问流量分布于各个节点,以降低服务器压力,更好的向客户端 ... [详细]
  • node.jsrequire和ES6导入导出的区别原 ... [详细]
  • 其实之前也有下载过完整的android源码,但是从来没有对这个做过一些总结,在加上最近需要经常去看,索性就在从新下载,编译一下,其实这些东西官网上面都有。http:sou ... [详细]
  • linux 禁止指定ip访问
    linux中如何禁止指定的ip访问呢?比如被别人暴力破解,被别人使用不同的密码尝试登录:所以我想直接禁用这些ip的访问.怎么办呢?解决方案:修改配置文件etchosts.deny把 ... [详细]
  • 现在比较流行使用静态网站生成器来搭建网站,博客产品着陆页微信转发页面等。但每次都需要对服务器进行配置,也是一个重复但繁琐的工作。使用DockerWeb,只需5分钟就能搭建一个基于D ... [详细]
  • 1223  drf引入以及restful规范
    [toc]前后台的数据交互前台安装axios插件,进行与后台的数据交互安装axios,并在main.js中设置params传递拼接参数data携带数据包参数headers中发送头部 ... [详细]
  • mapreduce源码分析总结
    这篇文章总结的非常到位,故而转之一MapReduce概述MapReduce是一个用于大规模数据处理的分布式计算模型,它最初是由Google工程师设计并实现的ÿ ... [详细]
author-avatar
留盏灯开扇门
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有