hadoop总结

一.hadoop环境搭建

  1.文件下载

     1.下载hadoop-3.0.3. .tar.gz文件

       下载地址:https://archive.apache.org/dist/hadoop/common/hadoop-3.0.3/hadoop-3.0.3.tar.gz

2.下载完成后解压到当前文件夹下

 tar –zxvf hadoop-3.0.3.tar.gz

2. 修改配置文件

    1. 设置ssh无密码登录

   1.编辑 etc/hosts 编写hosts文件。将主机名和ip地址的映射填写进去

       2.四台虚拟机上,使用   ssh-keygen -t rsa    一路按回车就行了。

   3. ①在master上将公钥放到authorized_keys里。切换到相应目录下(cd ~/.shh)执行命令:sudo cat id_rsa.pub >> authorized_keys

 

    ②将master上的authorized_keys放到其他linux的~/.ssh目录下。

       命令:sudo scp authorized_keys hadoop@ip:~/.ssh      

               sudo scp authorized_keys 远程主机用户名@远程主机名或ip:存放路径。

    ③修改authorized_keys权限,命令:chmod 644 authorized_keys

    ④测试是否成功

       ssh host2 输入用户名密码,然后退出,再次ssh host2不用密码,直接进入系统。这就表示成功了。

  2.修改hosts文件

      把原主机名改为master(在从主机上则改为slave1)  (根据自己情况修改)

  3. 修改配置文件hadoop-env.sh

        编辑此文件:修改JAVA_HOME、hadoop_home

   4. 修改配置文件core-site.xml,配置信息如下

      <configuration>

           <property>

                 <name>fs.defaultFS</name>

                 <value>hdfs://29.22.24.144:9000</value>

           </property>

           <property>

                 <name>hadoop.tmp.dir</name>

                 <value>/opt/hadoop-3.0.3/data</value>

           </property>

      </configuration>

   5. 修改配置文件hdfs-site.xml,配置信息如下

      <configuration>

           <property>

                <name>dfs.replication</name>

                <value>1</value>

           </property>

           <property>

                 <name>dfs.datanode.use.datanode.hostname</name>

                 <value>true</value>

           </property>

           <property>

                 <name>dfs.datanode.http.address</name>

                 <value>29.22.24.144:50075</value>

           </property>

      </configuration>

  6. 修改配置文件yarn-site.xml,配置信息如下

      <configuration>

           <property>

                  <name>yarn.nodemanager.aux-services</name>

                  <value>mapreduce_shuffle</value>

           </property>

      </configuration>

 7.修改配置文件mapred-site.xml,第一次若没有此文件,需要自己创建,配置信息如下

          <configuration>

           <property>

                <name>mapreduce.framework.name</name>

                  <value>yarn</value>

           </property>

           <property>

                 <name>yarn.app.mapreduce.am.env</name>

                 <value>HADOOP_MAPRED_HOME=/opt/hadoop-3.0.3</value>

           </property>

           <property>

                 <name>mapreduce.map.env</name>

                 <value>HADOOP_MAPRED_HOME=/opt/hadoop-3.0.3</value>

           </property>

           <property>

                 <name>mapreduce.reduce.env</name>

                 <value>HADOOP_MAPRED_HOME=/opt/hadoop-3.0.3</value>

           </property>

           <property>

                   <name>mapred.job.tracker.http.address</name>

                 <value>29.22.24.144:50030</value>

           </property>

           <property>

                  <name>mapred.task.tracker.http.address</name>

                 <value>29.22.24.144:50060</value>

           </property>

      </configuration>

8.配置slaves 文件(在3.X以后修改为workers

把原本的localhost删掉,改为slave1(根据具体情况修改)

3.环境变量配置

      export HADOOP_HOME=/opt/hadoop-3.0.3

      export HADOOP_CONF_DIR=${HADOOP_HOME}/etc/hadoop

      export HADOOP_MAPRED_HOME=${HADOOP_HOME}

      export HADOOP_COMMON_HOME=${HADOOP_HOME}

      export HADOOP_HDFS_HOME=${HADOOP_HOME}

      export HADOOP_COMMON_LIB_NATIVE_DIR=${HADOOP_HOME}/lib/native

      export HADOOP_YARN_HOME=$HADOOP_HOME

      export YARN_HOME=$HADOOP_HOME

      export YARN_CONF_DIR=$HADOOP_HOME/etc/hadoop

          export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$HADOOOP_HOME/lib

      export HDFS_DATANODE_USER=root

      export HDFS_DATANODE_SECURE_USER=root

      export HDFS_SECONDARYNAMENODE_USER=root

      export HDFS_NAMENODE_USER=root

      export YARN_NODEMANAGER_USER=root

      export YARN_RESOUCEMANAGER_USER=root

4.配置其余服务器

   将主机上的hadoop复制到a和b和c机器上。使用下面的命令:

    scp -r /opt/hadoop-3.0.3/ a:/opt

   scp -r /opt/hadoop-3.0.3/  b: :/opt

   scp -r /opt/hadoop-3.0.3/  c: :/opt

需要各自配置自己的环境变量 (保证各服务器之间能ping通)

然后分别在a和b和c机器上,执行hadoop命令,看是否安装成功

4.第一次启动需格式化namenode

     hdfs namenode -format

5.启动hadoop服务

   cd /o     pt/hadoop-3.0-3/sbin

  ./start-all.sh  启动所有服务(停止所有服务 ./stop-all.sh)

  ./start-dfs.sh  启动hdfs服务(停止hdfs服务./stop-hdfs.sh)

  ./start-yarn.sh 启动yarn服务(停止yarn服务 ./stop-all.sh)

6.jps命令查看启动情况

如何出现以下进程, 则说明启动成功

4977 ResourceManager

4738 SecondaryNameNode

5508 AmbariServer

2885 NameNode

5094 NodeManager

7288 Jps

4554 DataNode

 

安装启动中常遇问题总结

1.启动yarn时出现YARN_RESOURCEMANAGER_USERYARN_NODEMANAGER_USER未定义情况。

 解决方式:在start-yarn.sh中添加以下两行配置

   YARN_RESOURCEMANAGER_USER=root

   YARN_NODEMANAGER_USER=root

2.启动中找不到JAVA_HOME 情况

  解决方式:在配置文件hadoop-env.sh中配置JAVA_HOME时要用绝对路径

3.启动服务后无法访问50070

  1.确保防火墙是关闭的,关闭命令:chkconfig iptables off

  2.hadoop3.0以上一些默认端口发生变化,发生变化的端口主要有以下几个:

  Namenode 端口:

     50470 --> 9871

     50070 --> 9870

     8020 --> 9820

Secondary NN 端口:

     50091 --> 9869

     50090 --> 9868

Datanode 端口:

     50020 --> 9867

     50010 --> 9866

     50475 --> 9865

     50075 --> 9864

  3.hdfs-site.xml中添加以下配置恢复50070端口

<property> 

     <name>dfs.http.address</name>

         <value>29.22.24.144:50070</value>

</property>

二.hadoop基本简介

  Hadoop是一个由Apache基金会所开发的分布式系统基础架构。是一种分布式数据和计算的框架。它很擅长存储大量的半结构化的数据集。数据可以随机存放,所以一个磁盘的失败并不会带来数据丢失。Hadoop也非常擅长分布式计算——快速地跨多台机器处理大型数据集合。Hadoop实现了一个分布式文件系统(Hadoop Distributed File System),简称HDFS。HDFS有高容错性的特点,并且设计用来部署在低廉的(low-cost)硬件上;而且它提供高吞吐量(high throughput)来访问应用程序的数据,适合那些有着超大数据集(large data set)的应用程序。HDFS放宽了(relax)POSIX的要求,可以以流的形式访问(streaming access)文件系统中的数据。

Hadoop的框架最核心的设计就是:HDFSMapReduceHDFS为海量的数据提供了存储,而MapReduce则为海量的数据提供了计算。

   HDFS 的架构是基于一组特定的节点构建的,这是由它自身的特点决定的。这些节点包括 NameNode(仅一个),它在 HDFS 内部提供元数据服务;DataNode,它为 HDFS 提供存储块。由于仅存在一个 NameNode,因此这是 HDFS 的一个缺点(单点失败)。

   存储在 HDFS 中的文件被分成块,然后将这些块复制到多个计算机中(DataNode)。这与传统的 RAID 架构大不相同。块的大小(通常为 64MB)和复制的块数量在创建文件时由客户机决定。NameNode 可以控制所有文件操作。HDFS 内部的所有通信都基于标准的 TCP/IP 协议。

    NameNode。 是一个通常在 HDFS 实例中的单独机器上运行的软件。它负责管理文件系统名称空间和控制外部客户机的访问。NameNode 决定是否将文件映射到 DataNode 上的复制块上。对于最常见的 3 个复制块,第一个复制块存储在同一机架的不同节点上,最后一个复制块存储在不同机架的某个节点上。注意,这里需要您了解集群架构。实际的 I/O事务并没有经过 NameNode,只有表示 DataNode 和块的文件映射的元数据经过 NameNode。当外部客户机发送请求要求创建文件时,NameNode 会以块标识和该块的第一个副本的 DataNode IP 地址作为响应。这个 NameNode 还会通知其他将要接收该块的副本的 DataNode。NameNode 在一个称为 FsImage 的文件中存储所有关于文件系统名称空间的信息。这个文件和一个包含所有事务的记录文件(这里是 EditLog)将存储在 NameNode 的本地文件系统上。FsImage 和 EditLog 文件也需要复制副本,以防文件损坏或 NameNode 系统丢失。NameNode本身不可避免地具有SPOF(Single Point Of Failure)单点失效的风险,主备模式并不能解决这个问题,通过Hadoop Non-stop namenode才能实现100% uptime可用时间。

     DataNode 也是一个通常在 HDFS实例中的单独机器上运行的软件。Hadoop 集群包含一个 NameNode 和大量 DataNode。DataNode 通常以机架的形式组织,机架通过一个交换机将所有系统连接起来。Hadoop 的一个假设是:机架内部节点之间的传输速度快于机架间节点的传输速度。DataNode 响应来自 HDFS 客户机的读写请求。它们还响应来自 NameNode 的创建、删除和复制块的命令。NameNode 依赖来自每个 DataNode 的定期心跳(heartbeat)消息。每条消息都包含一个块报告,NameNode 可以根据这个报告验证块映射和其他文件系统元数据。如果 DataNode 不能发送心跳消息,NameNode 将采取修复措施,重新复制在该节点上丢失的块

      Hadoop 的最常见用法之一是 Web 搜索。虽然它不是唯一的软件框架应用程序,但作为一个并行数据处理引擎,它的表现非常突出。Hadoop 最有趣的方面之一是 Map and Reduce 流程,它受到Google开发的启发。这个流程称为创建索引,它将 Web爬行器检索到的文本 Web 页面作为输入,并且将这些页面上的单词的频率报告作为结果。然后可以在整个 Web 搜索过程中使用这个结果从已定义的搜索参数中识别内容。

       Hadoop是一种分布式数据和计算的框架。它很擅长存储大量的半结构化的数据集。数据可以随机存放,所以一个磁盘的失败并不会带来数据丢失。Hadoop也非常擅长分布式计算——快速地跨多台机器处理大型数据集合。

  

其余一些概念介绍:

HBase: 类似Google BigTable的分布式NoSQL列数据库。(HBase和Avro已经于2010年5月成为顶级 Apache 项目)

Hive:数据仓库工具,由Facebook贡献。

Zookeeper:分布式锁设施,提供类似Google Chubby的功能,由Facebook贡献。

Avro:新的数据序列化格式与传输工具,将逐步取代Hadoop原有的IPC机制。

Pig: 大数据分析平台,为用户提供多种接口。

Ambari:Hadoop管理工具,可以快捷的监控、部署、管理集群。

Sqoop:于在HADOOP与传统的数据库间进行数据的传递。

Hadoop优点

     高可靠性:Hadoop按位存储和处理数据的能力值得人们信赖。

     高扩展性:Hadoop是在可用的计算机集簇间分配数据并完成计算任务的,这                      些集簇可以方便地扩展到数以千计的节点中。

     高效性:Hadoop能够在节点之间动态地移动数据,并保证各个节点的动态平衡,                   因此处理速度非常快。

     高容错性:Hadoop能够自动保存数据的多个副本,并且能够自动将失败的任务重                     新分配。

     低成本:与一体机、商用数据仓库以及QlikView、Yonghong Z-Suite等数据集市相                   比,hadoop是开源的,项目的软件成本因此会大大降低。

缺点:

      (1)低延迟数据访问 
           比如毫秒级 
           低延迟与高吞吐率 
      (2)小文件存取 
           占用NameNode大量内存 
           寻道时间超过读取时间 
      (3)并发写入/文件随机修改 
           一个文件只能有一个写者 
 

三 :yarn介绍

YARN的基本思想是将资源调度和任务调度分开,主要方法是创建一个全局的ResourceManager(RM)和若干个针对应用程序的ApplicationMaster(AM)。这里的应用程序是指传统的MapReduce作业或作业的DAG(有向无环图)。YARN 分层结构的本质是 ResourceManager。这个实体控制整个集群并管理应用程序向基础计算资源的分配。ResourceManager 将各个资源部分(计算、内存带宽等)精心安排给基础 NodeManager(YARN 的每节点代理)。ResourceManager 还与 ApplicationMaster 一起分配资源,与 NodeManager 一起启动和监视它们的基础应用程序

YARN提交job的源码流程

 

四:主要端口简介

   9000 : NameNode节点进程

   50070: NameNode Web的管理端口

  50010DataNode控制进程

  50075DataNode 对应的Jetty服务器,DataNode Web 的管理端口

  50020DataNode RPC

  8088YARN  ResourceManager服务端口

五:hadoop三大核心知识

1.HDFS是分布式文件系统

HDFS是分布式文件系统,有高容错性的特点,可以部署在价格低廉的服务器上,主要包含namenode和datanode。

Namenode是hdfs中文件目录和文件分配管理者,它保存着文件名和数据块的映射管理,数据块和datanode列表的映射关系。其中文件名和数据块的关系保存在磁盘上,但是namenode上不保存数据块和datanode列表的关系,该列表是通过datanode上报建立起来的。

简单存取操作步骤:

     1.必须创建一个输入目录

      hadoop fs -mkdir /user

          hadoop fs –mkdir /user/登录名

      hadoop fs -mkdir /user/登录名/input

       2. 使用put命令将数据文件从本地系统传输并存储到Hadoop文件系统。

     hadoop fs -put /usr/file.txt  /user/root/input

       3. 使用cat命令查看HDFS中的数据

      hadoop fs -cat /user/root/input/文件名

      4. 使用get命令将文件从HDFS获取到本地文件系统

         hadoop fs -get /user/output/ /home/hadoop_tp/

在此出现的问题:

    hadoop fs –mkdir /user/回报:mkdir: Cannot create directory /usr. Name node is in safe mode错误

   导致原因:hdfs进入安全模式

   解决措施:hadoop  dfsadmin -safemode leave

注:在hadoop 2.x以后版本支持hdfs dfs命令

2:yarn简介及其一些基本操作命令

YARN主要包括几种角色

ResourceManager(RM):主要接收客户端任务请求,接收和监控NodeManager(NM)的资源情况汇报,负责资源的分配与调度,启动和监控ApplicationMaster(AM),一个集群只有一个。

NodeManager:主要是节点上的资源管理,启动Container运行task计算,上报资源、container情况给RM和任务处理情况给AM,整个集群有多个。

ApplicationMaster:主要是单个Application(Job)的task管理和调度,向RM进行资源的申请,向NM发出launch Container指令,接收NM的task处理状态信息。每个应用有一个。

Container:是YARN中资源的抽象,它封装了某个节点上一定量的资源(CPU和内存两类资源)

 3.  MapReduce并行处理框架,实现任务分解和调度

MapReduce是hadoop的一种离线计算框架,适合离线批处理,具有很好的容错性和扩展性,适合简单的批处理任务。缺点启动开销大,任务多使用磁盘效率比较低。

MapReduce是处理大量半结构化数据集合的编程模型。编程模型是一种处理并结构化特定问题的方式。例如,在一个关系数据库中,使用一种集合语言执行查询,如SQL。告诉语言想要的结果,并将它提交给系统来计算出如何产生计算。还可以用更传统的语言(C++,Java),一步步地来解决问题。这是两种不同的编程模型,MapReduce就是另外一种。

MapReduce:并行计算框架,0.20前使用 org.apache.hadoop.mapred 旧接口,0.20版本开始引入org.apache.hadoop.mapreduce的新API

 

一个MapReduce作业通常会把输入的数据集切分为若干独立的数据块,由map任务(task)以完全并行的方式处理它们。框架会对map的输出先进行排序,然后把结果输入给reduce任务。通常作业的输入和输出都会被存储在文件系统中。整个框架负责任务的调度和监控,以及重新执行已经失败的任务。通常,MapReduce框架和分布式文件系统是运行在一组相同的节点上的,计算节点和存储节点通常在一起。这种配置允许框架在那些已经存好数据的节点上高效地调度任务,这可以使整个集群的网络带宽被非常高效地利用。

一个MapReduce任务包含一般会这几个部分:Map、Shuffle(Sort、Partitioner、Combiner、Merge、Sort)、Reduce。

MapReduce和Hadoop是相互独立的,实际上又能相互配合工作得很好

 

简单mapReduce操作简述:

1. 在myeclipse的项目管理器列表中右击新建Java项目,选择export,选择导出为“JAR file”格式

 2.在hdfs分布式数据管理中上传需要统计的文件

3.执行导出的jar项目文件

格式:hadoop jar [jar文件位置] [jar主类] [HDFS输入位置] [HDFS输出位置]

 

 附件:几个核心配置文件简介

一、core-site.xml

<?xml version="1.0" encoding="UTF-8"?>

<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<configuration>

    <!--Yarn 需要使用 fs.defaultFS 指定NameNode URI -->

        <property>

                <name>fs.defaultFS</name>

                <value>hdfs://mycluster</value>

        </property>

        <!--Trash机制-->

        <property>

                <!--多长时间创建CheckPoint NameNode截点上运行的CheckPointer 从Current文件夹创建CheckPoint;默认:0 由fs.trash.interval项指定 -->

                <name>fs.trash.checkpoint.interval</name>

                <value>0</value>

        </property>

        <property>

                <!--多少分钟.Trash下的CheckPoint目录会被删除,该配置服务器设置优先级大于客户端,默认:0 不删除 -->

                <name>fs.trash.interval</name>

                <value>1440</value>

        </property>

         <!--指定hadoop临时目录, hadoop.tmp.dir 是hadoop文件系统依赖的基础配置,很多路径都依赖它。如果hdfs-site.xml中不配 置namenode和datanode的存放位置,默认就放在这>个路径中 -->

        <property>  

                <name>hadoop.tmp.dir</name>

                <value>/opt/soft/hadoop/tmp</value>

        </property>

         <!-- 指定zookeeper地址 -->

        <property>

                <name>ha.zookeeper.quorum</name>

                <value>hadoop000:2181,hadoop001:2181,hadoop002:2181</value>

        </property>

         <!--指定ZooKeeper超时间隔,单位毫秒 -->

        <property>

                <name>ha.zookeeper.session-timeout.ms</name>

                <value>2000</value>

        </property>

        <property>

           <name>hadoop.proxyuser.root.hosts</name>

           <value>*</value>

        </property>

        <property>

            <name>hadoop.proxyuser.root.groups</name>

            <value>*</value>

       </property>

      <property>

          <name>io.compression.codecs</name>

          <value>org.apache.hadoop.io.compress.GzipCodec,

            org.apache.hadoop.io.compress.DefaultCodec,

            org.apache.hadoop.io.compress.BZip2Codec,

            org.apache.hadoop.io.compress.SnappyCodec

          </value>

      </property>

</configuration>

二、hdfs-site.xml(HA)

<?xml version="1.0" encoding="UTF-8"?>

<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<configuration>

    <!--HDFS超级用户 -->

    <property>

        <name>dfs.permissions.superusergroup</name>

        <value>root</value>

    </property>

 

    <!--开启web hdfs -->

    <property>

        <name>dfs.webhdfs.enabled</name>

        <value>true</value>

    </property>

    <property>

        <name>dfs.namenode.name.dir</name>

        <value>/opt/soft/hadoop/data/dfs/name</value>

        <description> namenode 存放name table(fsimage)本地目录(需要修改)</description>

    </property>

    <property>

        <name>dfs.namenode.edits.dir</name>

        <value>${dfs.namenode.name.dir}</value>

        <description>namenode粗放 transaction file(edits)本地目录(需要修改)</description>

    </property>

    <property>

        <name>dfs.datanode.data.dir</name>

        <value>/opt/soft/hadoop/data/dfs/data</value>

        <description>datanode存放block本地目录(需要修改)</description>

    </property>

    <property>

        <name>dfs.replication</name>

        <value>3</value>

    </property>

    <!-- 块大小256M (默认128M) -->

    <property>

        <name>dfs.blocksize</name>

        <value>268435456</value>

    </property>

      <!--HDFS高可用配置 -->

    <!--指定hdfs的nameservice为mycluster,需要和core-site.xml中的保持一致 -->

    <property>

        <name>dfs.nameservices</name>

        <value>mycluster</value>

    </property>

    <property>

        <!--设置NameNode IDs 此版本最大只支持两个NameNode -->

        <name>dfs.ha.namenodes.mycluster</name>

        <value>nn1,nn2</value>

    </property>

 

    <!-- Hdfs HA: dfs.namenode.rpc-address.[nameservice ID] rpc 通信地址 -->

    <property>

        <name>dfs.namenode.rpc-address.mycluster.nn1</name>

        <value>hadoop000:8020</value>

    </property>

    <property>

        <name>dfs.namenode.rpc-address.mycluster.nn2</name>

        <value>hadoop001:8020</value>

    </property>

    <!-- Hdfs HA: dfs.namenode.http-address.[nameservice ID] http 通信地址 -->

    <property>

        <name>dfs.namenode.http-address.mycluster.nn1</name>

        <value>hadoop000:50070</value>

    </property>

    <property>

        <name>dfs.namenode.http-address.mycluster.nn2</name>

        <value>hadoop001:50070</value>

    </property>

    <!--保证数据恢复 -->

    <property>

        <name>dfs.journalnode.http-address</name>

        <value>0.0.0.0:8480</value>

    </property>

    <property>

        <name>dfs.journalnode.rpc-address</name>

        <value>0.0.0.0:8485</value>

    </property>

    <property>

        <!--设置JournalNode服务器地址,QuorumJournalManager 用于存储editlog -->

        <!--格式:qjournal://<host1:port1>;<host2:port2>;<host3:port3>/<journalId> 端口同journalnode.rpc-address -->

        <name>dfs.namenode.shared.edits.dir</name>

        <value>qjournal://hadoop000:8485;hadoop001:8485;hadoop002:8485/mycluster</value>

    </property>

 

    <property>

        <!--JournalNode存放数据地址 -->

        <name>dfs.journalnode.edits.dir</name>

        <value>/opt/soft/hadoop/data/dfs/jn</value>

    </property>

    <!--DataNode editlog同步-->

    <property>

        <!--DataNode,Client连接Namenode识别选择Active NameNode策略 -->

                             <!-- 配置失败自动切换实现方式 -->

        <name>dfs.client.failover.proxy.provider.mycluster</name>

        <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>

    </property>

    <!--Namenode fencing -->

    <!--Failover后防止停掉的Namenode启动,造成两个服务 -->

    <property>

        <name>dfs.ha.fencing.methods</name>

        <value>sshfence</value>

    </property>

    <property>

        <name>dfs.ha.fencing.ssh.private-key-files</name>

        <value>/root/.ssh/id_rsa</value>

    </property>

    <property>

        <!--多少milliseconds 认为fencing失败 -->

        <name>dfs.ha.fencing.ssh.connect-timeout</name>

        <value>30000</value>

    </property>

 

    <!--NameNode auto failover base ZKFC and Zookeeper-->

    <!--开启基于Zookeeper  -->

    <property>

        <name>dfs.ha.automatic-failover.enabled</name>

        <value>true</value>

    </property>

    <!--动态许可datanode连接namenode列表 -->

     <property>

       <name>dfs.hosts</name>

       <value>/opt/soft/hadoop/etc/hadoop/slaves</value>

     </property>

</configuration>

三、mapred-site.xml

<?xml version="1.0" encoding="UTF-8"?>

<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<configuration>

    <!-- 配置 MapReduce Applications -->

    <property>

        <name>mapreduce.framework.name</name>

        <value>yarn</value>

    </property>

    <!-- JobHistory Server     <!-- 配置 MapReduce JobHistory Server 地址 ,默认端口10020 -->

    <property>

        <name>mapreduce.jobhistory.address</name>

        <value>hadoop000:10020</value>

    </property>

    <!-- 配置 MapReduce JobHistory Server web ui 地址, 默认端口19888 -->

    <property>

        <name>mapreduce.jobhistory.webapp.address</name>

        <value>hadoop001:19888</value>

    </property>

 

<!-- 配置 Map段输出的压缩,snappy-->

  <property>

      <name>mapreduce.map.output.compress</name>

      <value>true</value>

  </property>

  <property>

      <name>mapreduce.map.output.compress.codec</name>

      <value>org.apache.hadoop.io.compress.SnappyCodec</value>

   </property>

</configuration>

四、yarn-site.xml(HA)

 

<?xml version="1.0" encoding="UTF-8"?>

<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<configuration>

    <!-- nodemanager 配置 ================================================= -->

    <property>

        <name>yarn.nodemanager.aux-services</name>

        <value>mapreduce_shuffle</value>

    </property>

    <property>

        <name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>

        <value>org.apache.hadoop.mapred.ShuffleHandler</value>

    </property>

    <property>

        <name>yarn.nodemanager.localizer.address</name>

        <value>0.0.0.0:23344</value>

        <description>Address where the localizer IPC is.</description>

    </property>

    <property>

        <name>yarn.nodemanager.webapp.address</name>

        <value>0.0.0.0:23999</value>

        <description>NM Webapp address.</description>

    </property>

    <!-- HA 配置-->

    <!-- Resource Manager Configs -->

    <property>

        <name>yarn.resourcemanager.connect.retry-interval.ms</name>

        <value>2000</value>

    </property>

    <property>

        <name>yarn.resourcemanager.ha.enabled</name>

        <value>true</value>

    </property>

    <property>

        <name>yarn.resourcemanager.ha.automatic-failover.enabled</name>

        <value>true</value>

    </property>

    <!-- 使嵌入式自动故障转移。HA环境启动,与 ZKRMStateStore 配合 处理fencing -->

    <property>

        <name>yarn.resourcemanager.ha.automatic-failover.embedded</name>

        <value>true</value>

    </property>

    <!-- 集群名称,确保HA选举时对应的集群 -->

    <property>

        <name>yarn.resourcemanager.cluster-id</name>

        <value>yarn-cluster</value>

    </property>

    <property>

        <name>yarn.resourcemanager.ha.rm-ids</name>

        <value>rm1,rm2</value>

    </property>

    <!--这里RM主备结点需要单独指定,(可选)

    <property>

         <name>yarn.resourcemanager.ha.id</name>

         <value>rm2</value>

     </property>

     -->

    <property>

        <name>yarn.resourcemanager.scheduler.class</name>

        <value>org.apache.hadoop.yarn.server.resourcemanager.scheduler.fair.FairScheduler</value>

    </property>

    <property>

        <name>yarn.resourcemanager.recovery.enabled</name>

        <value>true</value>

    </property>

    <property>

        <name>yarn.app.mapreduce.am.scheduler.connection.wait.interval-ms</name>

        <value>5000</value>

    </property>

    <!-- ZKRMStateStore 配置 -->

    <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>hadoop000:2181,hadoop001:2181,hadoop002:2181</value>

    </property>

    <property>

        <name>yarn.resourcemanager.zk.state-store.address</name>

        <value>hadoop000:2181,hadoop001:2181,hadoop002:2181</value>

    </property>

    <!-- Client访问RM的RPC地址 (applications manager interface) -->

    <property>

        <name>yarn.resourcemanager.address.rm1</name>

        <value>hadoop000:23140</value>

    </property>

    <property>

        <name>yarn.resourcemanager.address.rm2</name>

        <value>hadoop001:23140</value>

    </property>

    <!-- AM访问RM的RPC地址(scheduler interface) -->

    <property>

        <name>yarn.resourcemanager.scheduler.address.rm1</name>

        <value>hadoop000:23130</value>

    </property>

    <property>

        <name>yarn.resourcemanager.scheduler.address.rm2</name>

        <value>hadoop001:23130</value>

    </property>

    <!-- RM admin interface -->

    <property>

        <name>yarn.resourcemanager.admin.address.rm1</name>

        <value>hadoop000:23141</value>

    </property>

    <property>

        <name>yarn.resourcemanager.admin.address.rm2</name>

        <value>hadoop001:23141</value>

    </property>

    <!--NM访问RM的RPC端口 -->

    <property>

        <name>yarn.resourcemanager.resource-tracker.address.rm1</name>

        <value>hadoop000:23125</value>

    </property>

    <property>

        <name>yarn.resourcemanager.resource-tracker.address.rm2</name>

        <value>hadoop001:23125</value>

    </property>

    <!-- RM web application 地址 -->

    <property>

        <name>yarn.resourcemanager.webapp.address.rm1</name>

        <value>hadoop000:8088</value>

    </property>

    <property>

        <name>yarn.resourcemanager.webapp.address.rm2</name>

        <value>hadoop001:8088</value>

    </property>

    <property>

        <name>yarn.resourcemanager.webapp.https.address.rm1</name>

        <value>hadoop000:23189</value>

    </property>

    <property>

        <name>yarn.resourcemanager.webapp.https.address.rm2</name>

        <value>hadoop001:23189</value>

    </property>

    <property>

       <name>yarn.log-aggregation-enable</name>

       <value>true</value>

    </property>

    <property>

         <name>yarn.log.server.url</name>

         <value>http://hadoop000:19888/jobhistory/logs</value>

    </property>

    <property>

        <name>yarn.nodemanager.resource.memory-mb</name>

        <value>2048</value>

    </property>

    <property>

        <name>yarn.scheduler.minimum-allocation-mb</name>

        <value>1024</value>

        <discription>单个任务可申请最少内存,默认1024MB</discription>

     </property>

  <property>

    <name>yarn.scheduler.maximum-allocation-mb</name>

    <value>2048</value>

    <discription>单个任务可申请最大内存,默认8192MB</discription>

  </property>

   <property>

       <name>yarn.nodemanager.resource.cpu-vcores</name>

       <value>2</value>

     </property>

</configuration>

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值