Spark实践:CDH+Storm+Spark (on yarn 模式)集群部署

一、CDH部署环境:主机5台,普通用户stream免密; 本地yum源已配置,


1、环境准备

防火墙、selinux的状态disable、root免密、句柄数(每个主机上能打开的文件数)、/etc/hosts--分发(ansible工具批量分发);

2、做一个CM的yum源:

    ① 装http的rpm包,yum -install http(打开80端口)
    ② CM和CDH包放在war.wwwhtml/
    ③ yum -install mysql-server安装mysql;单机版
    ④ 建库;cm,am,rm
    ⑤ 下载jdbc驱动,建软链接,链接到usr/shell/java/mysql-connector-java.jar
    ⑥ JDK(CM的yum有):yum -install oracle--7个
    ⑦ 安装CM(有7个rpm):yum -install cloder-manager-server--1个
    ⑧ 数据库初始化:mysql的指令,不需要进入mysql命令行;CDH的命令;
    ⑨ CMS启动,7180端口打开网页;

3、CM注册

安装agent,10台一起装(默认,同时安装的个数):10-20分钟
② 安装CDH包:继续按钮:30分左右;
③ 分角色:

4、ansible的安装:

yum install epel-release
yum install ansible

5.ansible常用命令

# 检查主机连接
# ansible test -m ping

# 执行远程命令
# ansible all -m command -a 'uptime'

# 执行主控端脚本
# ansible all -m script -a '/etc/ansible/script/test.sh'

# 执行远程主机的脚本
# ansible all -m shell -a 'ps aux|grep zabbix'

# 类似shell
# ansible all -m raw -a "ps aux|grep zabbix|awk '{print \$2}'"

# 创建软链接
# ansible all -m file -a "src=/etc/resolv.conf dest=/tmp/resolv.conf state=link"

# 删除软链接
# ansible all -m file -a "path=/tmp/resolv.conf state=absent"

# 复制文件到远程服务器
# ansible all -m copy -a "src=/etc/ansible/ansible.cfg dest=/tmp/ansible.cfg owner=root group=root mode=0644"

# 指定主机

#ansible -i /etc/ansible/hosts all -m copy -a "src=test.conf dest=/etc/test.conf owner=root group=root mode=0644"

其中,第二个参数为用户组,在/etc/ansible/hosts中有添加各个组;

ansible -stream -m command -a 'mkdir /home/stream/zk' 为在stream的home下批量新建用户;

ansible -stream -m copy -a 'src=/home/stream/test.sh dest=/home/stream/' 复制本地的test.sh文件到其他主机上

二、storm部署

1、jdk安装及环境变量配置,略

2、zk集群部署,略

3、storm文件的分发和集群部署,略

storm的配置文件修改如下:

#配置zk的地址和端口和storm存放在zookeeper里目录

storm.zookeeper.server:

 -  “192.168.159.145”

 -  “192.168.159.144”

 -  “192.168.159.143”

storm.zookeeper.port: 21810

storm.zookeeper.root:  /storm_new10

#storm主节点的地址 web页面的端口

nimbus.host: “192.168.159.145”

ui.port: 8989

#每个worker使用的内存

worker.heap.memory.mb: 512


storm.local.dir: "/home/zyzx/apache-storm-0.9.5/data"

#配置工作节点上的进程端口。你配置一个端口,意味着工作节点上启动一个worker,在实际的生产环境中,我们需要根据实际的物理配置以及每个节点上的负载情况来配置这个端口的数量。在这里每个节点我象征性的配置5个端口。

supervisor.slots.ports:

- 6700

- 6701

- 6702

- 6703

- 6700

nimbus.thrift.max_buffer_size: 204876

worker.childopts: “-Xmx1024m”

启动:nohup storm  niumbus &

nohup storm suprivisor &

三、spark部署

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

 Standalone模式

    即独立模式,自带完整的服务,可单独部署到一个集群中,无需依赖任何其他资源管理系统。从一定程度上说,该模式是其他两种的基础。借鉴Spark开发模式,我们可以得到一种开发新型计算框架的一般思路:先设计出它的standalone模式,为了快速开发,起初不需要考虑服务(比如master/slave)的容错性,之后再开发相应的wrapper,将stanlone模式下的服务原封不动的部署到资源管理系统yarn或者mesos上,由资源管理系统负责服务本身的容错。目前Spark在standalone模式下是没有任何单点故障问题的,这是借助zookeeper实现的,思想类似于Hbase master单点故障解决方案。将Spark standalone与MapReduce比较,会发现它们两个在架构上是完全一致的: 

1)  都是由master/slaves服务组成的,且起初master均存在单点故障,后来均通过zookeeper解决(Apache MRv1的JobTracker仍存在单点问题,但CDH版本得到了解决); 
2) 各个节点上的资源被抽象成粗粒度的slot,有多少slot就能同时运行多少task。不同的是,MapReduce将slot分为map slot和reduce slot,它们分别只能供Map Task和Reduce Task使用,而不能共享,这是MapReduce资源利率低效的原因之一,而Spark则更优化一些,它不区分slot类型,只有一种slot,可以供各种类型的Task使用,这种方式可以提高资源利用率,但是不够灵活,不能为不同类型的Task定制slot资源。总之,这两种方式各有优缺点。

Spark On Mesos模式

    这是很多公司采用的模式,官方推荐这种模式(当然,原因之一是血缘关系)。正是由于Spark开发之初就考虑到支持Mesos,因此,目前而言,Spark运行在Mesos上会比运行在YARN上更加灵活,更加自然。目前在Spark On Mesos环境中,用户可选择两种调度模式之一运行自己的应用程序(可参考Andrew Xia的“Mesos Scheduling Mode on Spark”): 

1)   粗粒度模式(Coarse-grained Mode):每个应用程序的运行环境由一个Dirver和若干个Executor组成,其中,每个Executor占用若干资源,内部可运行多个Task(对应多少个“slot”)。应用程序的各个任务正式运行之前,需要将运行环境中的资源全部申请好,且运行过程中要一直占用这些资源,即使不用,最后程序运行结束后,回收这些资源。举个例子,比如你提交应用程序时,指定使用5个executor运行你的应用程序,每个executor占用5GB内存和5个CPU,每个executor内部设置了5个slot,则Mesos需要先为executor分配资源并启动它们,之后开始调度任务。另外,在程序运行过程中,mesos的master和slave并不知道executor内部各个task的运行情况,executor直接将任务状态通过内部的通信机制汇报给Driver,从一定程度上可以认为,每个应用程序利用mesos搭建了一个虚拟集群自己使用。 

2)   细粒度模式(Fine-grained Mode):鉴于粗粒度模式会造成大量资源浪费,Spark On Mesos还提供了另外一种调度模式:细粒度模式,这种模式类似于现在的云计算,思想是按需分配。与粗粒度模式一样,应用程序启动时,先会启动executor,但每个executor占用资源仅仅是自己运行所需的资源,不需要考虑将来要运行的任务,之后,mesos会为每个executor动态分配资源,每分配一些,便可以运行一个新任务,单个Task运行完之后可以马上释放对应的资源。每个Task会汇报状态给Mesos slave和Mesos Master,便于更加细粒度管理和容错,这种调度模式类似于MapReduce调度模式,每个Task完全独立,优点是便于资源控制和隔离,但缺点也很明显,短作业运行延迟大。

Spark On YARN模式

    这是一种很有前景的部署模式。但限于YARN自身的发展,目前仅支持粗粒度模式(Coarse-grained Mode)。这是由于YARN上的Container资源是不可以动态伸缩的,一旦Container启动之后,可使用的资源不能再发生变化,不过这个已经在YARN计划中了。 

spark on yarn 的支持两种模式: 
1) yarn-cluster:适用于生产环境; 
2) yarn-client:适用于交互、调试,希望立即看到app的输出 

yarn-cluster和yarn-client的区别在于yarn appMaster,每个yarn app实例有一个appMaster进程,是为app启动的第一个container;负责从ResourceManager请求资源,获取到资源后,告诉NodeManager为其启动container。yarn-cluster和yarn-client模式内部实现还是有很大的区别。如果你需要用于生产环境,那么请选择yarn-cluster;而如果你仅仅是Debug程序,可以选择yarn-client。

    这三种分布式部署方式各有利弊,通常需要根据实际情况决定采用哪种方案。进行方案选择时,往往要考虑公司的技术路线(采用Hadoop生态系统还是其他生态系统)、相关技术人才储备等。上面涉及到Spark的许多部署模式,究竟哪种模式好这个很难说,需要根据你的需求,如果你只是测试Spark Application,你可以选择local模式。而如果你数据量不是很多,Standalone 是个不错的选择。当你需要统一管理集群资源(Hadoop、Spark等),那么你可以选择Yarn或者mesos,但是这样维护成本就会变高。 
· 从对比上看,mesos似乎是Spark更好的选择,也是被官方推荐的 
· 但如果你同时运行hadoop和Spark,从兼容性上考虑,Yarn是更好的选择。 · 如果你不仅运行了hadoop,spark。还在资源管理上运行了docker,Mesos更加通用。 
· Standalone对于小规模计算集群更适合!

四、hadoop分布模式部署

    spark的数据需要存储在hdfs上,而且spark的on yarn是最好的使用方式,因此在部署spark之前需要部署hadoop集群,含有hdfs和yarn组件;

Hadoop目录结构

  1. bin:Hadoop最基本的管理脚本和使用脚本的目录,这些脚本是sbin目录下管理
    脚本的基础实现,用户可以直接使用这些脚本管理和使用Hadoop
  2. etc:Hadoop配置文件所在的目录,包括core-site,xml、hdfs-site.xml、mapredsite.xml
  3. include:对外提供的编程库头文件(具体动态库和静态库在lib目录中),这些头
    文件均是用C++定义的,通常用于C++程序访问HDFS或者编写MapReduce程序
  4. lib:该目录包含了Hadoop对外提供的编程动态库和静态库,与include目录中的
    头文件结合使用
  5. libexec:各个服务对用的shell配置文件所在的目录,可用于配置日志输出、启动
    参数(比如JVM参数)等基本信息
  6. sbin:Hadoop管理脚本所在的目录,主要包含HDFS和YARN中各类服务的启动/关
    闭脚本
  7. share:Hadoop各个模块编译后的jar包所在的目录

Hadoop的配置文件

    配置文件介绍,在Hadoop中,Common、HDFS和MapReduce各有对应的配置文件,用于保存对应模块中可配置的参数。这些配置文件均为XML格式且由两部分构成:系统默认配置文件和管理员自定义配置文件。其中,系统默认配置文件分别是core-default.xml、hdfs-default.xml和mapred-default.xml,它们包含了所有可配置属性的默认值。而管理员自定义配置文件分别是core-site.xml、hdfs-site.xml和mapred-site.xml。它们由管理员设置,主要用于定义一些新的配置属性或者覆盖系统默认配置文件中的默认值。通常这些配置一旦确定,便不能被修改(如果想修改,需重新启动Hadoop)。需要注意的是,core-default.xml和core-site.xml属于公共基础库的配置文件,默认情况下,Hadoop总会优先加载它们。

默认配置文件:core-default.xml、hdfs-default.xml、mapred-default.xml、yarn-default.xml
特定配置文件:core-site.xml、hdfs-site.xml、mapred-site.xml、yarn-site.xml

特定的配置项覆盖默认中相同的配置项

    默认文件是只读的,可以从classpath中的jar文件中直接获取该文件,在特定大量的变量,通过定义和修改可以满足控制Hadoop配置的需要;

配置文件  描述
core-default.xml  默认的核心Hadoop属性配置文件,该配置文件在hadoop-common-2.7.3.jar
hdfs-default.xml  默认的HDFS属性配置文件,该配置文件在hadooop-hdfs-2.7.3.jar
mapred-default.xml  默认的MapReduce属性配置文件,该配置文件在hadoop-mapreduce-2.7.3.jar
yarn-default.xml  默认的YARN属性配置文件,该配置文件在hadoop-yarn-common-2.7.3.jar

Hadoop集群特定配置文件:

配置文件  描述
core-site.xml  特定的通用Hadoop属性配置文件,该配置文件会覆盖core-default.xml中相同配置项
hdfs-site.xml  特定的通用HDFS属性配置文件,该配置文件会覆盖hdfs-default.xml中相同配置项
mapred-site.xml  特定的通用MapReduce属性配置文件,该配置文件会覆盖mapred-default.xml中相同配置项
yarn-site.xml  特定的通用YARN属性配置文件,该配置文件会覆盖yarn-default.xml中相同配置项

配置Hadoop守护进程

脚本 描述
hadoop-ev.sh 设置Java主目录
yarn-env.sh 设置不同日志文件位置
mapred-env.sh 设置用于各种守护进程的JVM选项

守护进程配置变量:

守护进程  环境变量
名称节点  HADOOP_NAMEN_OPTS
数据节点  HADOOP_DATANODE_OPTS
辅助名称节点  HADOOP_SECONDARYNAMENODE_OPTS
资源管理器  YARN_RESOURCEMANAGER_OPTS
节点管理器  YARN_NODEMANAGER_OPTS

etc/hadoop/hadoop-env.sh

    该脚本是hadoop所有组件启动时都需要读取脚本,设置hadoop的环境变量,设置JAVA_HOME和HADOOP_HOME及其用户等;

etc/hadoop/core-site.xml

官方详细配置参考文档:
http://hadoop.apache.org/docs/r2.7.3/hadoop-project-dist/hadoop-common/core-default.xml

属性  描述
hadoop-tmp-dir  其他所有领书目录的根目录,默认值:/tmp/hadoop-${user.name}
fs.defaultFS  在没有特殊配置的情况下,HDFS客户端使用的默认路径前缀由该属性配置
io.file.buffer-size  该属性指定了文件流的缓冲大小,这个换错那个的大小应该是硬件页面大小的整数倍,它决定了数据读取和写入操作过程中缓冲了多少数据,默认值4096
io.byte.per.checksum  Hadoop徐彤在数据写入时会计算校验和,并在读取数据是进行校验,这个过程对用户透明。该参数定义了多大的数据量进行一次校验和计算,默认值512字节
io.compression.codecs  一个由逗号分隔的可用压缩编码类的列表,用于压缩\解压缩数据
<configuration>
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://192.168.1.100:900</value>
        <description>192.168.1.100为服务器IP地址,其实也可以使用主机名</description>
    </property>
    <property>
        <name>io.file.buffer.size</name>
        <value>131072</value>
        <description>该属性值单位为KB,131072KB即为默认的64M</description>
    </property>
</configuration>

etc/hadoop/hdfs-site.xml

官方详细配置参考文档:
http://hadoop.apache.org/docs/r2.7.3/hadoop-project-dist/hadoop-hdfs/hdfs-default.xml

hdfs-*.xml文件集用于配置HDFS系统的运行时属性和各个数据节点上文件的物理存储相关的属性
 

配置nameNode

参数 属性值 解释
dfs.namenode.name.dir 在本地文件系统所在的NameNode的存储空间和持续化处理日志 如果这是一个以逗号分隔的目录列表,然 后将名称表被复制的所有目录,以备不时 需。
dfs.namenode.hosts/
dfs.namenode.hosts.exclude
Datanodes permitted/excluded列表 如有必要,可以使用这些文件来控制允许 数据节点的列表
dfs.blocksize 268435456 大型的文件系统HDFS块大小为256MB
dfs.namenode.handler.count 100 设置更多的namenode线程,处理从 datanode发出的大量RPC请求

范例如下:

<configuration>
    <property>
        <name>dfs.replication</name>
        <value>1</value>
        <description>分片数量,伪分布式将其配置成1即可</description>
    </property>
    <property>
        <name>dfs.namenode.name.dir</name>
        <value>file:/usr/local/hadoop/tmp/namenode</value>
        <description>命名空间和事务在本地文件系统永久存储的路径</description>
    </property>
    <property>
        <name>dfs.namenode.hosts</name>
        <value>datanode1, datanode2</value>
        <description>datanode1, datanode2分别对应DataNode所在服务器主机名</description>
    </property>
    <property>
        <name>dfs.blocksize</name>
        <value>268435456</value>
        <description>大文件系统HDFS块大小为256M,默认值为64M</description>
    </property>
    <property>
        <name>dfs.namenode.handler.count</name>
        <value>100</value>
        <description>更多的NameNode服务器线程处理来自DataNodes的RPCS</description>
    </property>
</configuration>

配置nameNode

参数 属性值 解释
dfs.datanode.data.dir 逗号分隔的一个DataNode上,它应该保存它的块的本地文件系统的路径列表 如果这是一个以逗号分隔的目录列表,那么数据将被存储在所有命名的目录,通常在不同的设备。
<configuration>
    <property>
        <name>dfs.datanode.data.dir</name>
        <value>file:/usr/local/hadoop/tmp/datanode</value>
        <description>DataNode在本地文件系统中存放块的路径</description>
    </property>
</configuration>

etc/hadoop/yarn-site.xml

  • 配置ResourceManager
参数 属性值 解释
yarn.resourcemanager.address 客户端对ResourceManager主机通过 host:port 提交作业 host:port
yarn.resourcemanager.scheduler.address ApplicationMasters 通过ResourceManager主机访问host:port跟踪调度程序获资源 host:port
yarn.resourcemanager.resource-tracker.address NodeManagers通过ResourceManager主机访问host:port host:port
yarn.resourcemanager.admin.address 管理命令通过ResourceManager主机访问host:port host:port
yarn.resourcemanager.webapp.address ResourceManager web页面host:port. host:port
yarn.resourcemanager.scheduler.class ResourceManager 调度类(Scheduler class) CapacityScheduler(推荐),FairScheduler(也推荐),orFifoScheduler
yarn.scheduler.minimum-allocation-mb 每个容器内存最低限额分配到的资源管理器要求 以MB为单位
yarn.scheduler.maximum-allocation-mb 资源管理器分配给每个容器的内存最大限制 以MB为单位
yarn.resourcemanager.nodes.include-path/
yarn.resourcemanager.nodes.exclude-path
NodeManagers的permitted/excluded列表 如有必要,可使用这些文件来控制允许NodeManagers列表

范例如下:

<configuration>
    <property>
        <name>yarn.resourcemanager.address</name>
        <value>192.168.1.100:8081</value>
        <description>IP地址192.168.1.100也可替换为主机名</description>
    </property>
    <property>
        <name>yarn.resourcemanager.scheduler.address</name>
        <value>192.168.1.100:8082</value>
        <description>IP地址192.168.1.100也可替换为主机名</description>
    </property>
    <property>
        <name>yarn.resourcemanager.resource-tracker.address</name>
        <value>192.168.1.100:8083</value>
        <description>IP地址192.168.1.100也可替换为主机名</description>
    </property>
    <property>
        <name>yarn.resourcemanager.admin.address</name>
        <value>192.168.1.100:8084</value>
        <description>IP地址192.168.1.100也可替换为主机名</description>
    </property>
    <property>
        <name>yarn.resourcemanager.webapp.address</name>
        <value>192.168.1.100:8085</value>
        <description>IP地址192.168.1.100也可替换为主机名</description>
    </property>
    <property>
        <name>yarn.resourcemanager.scheduler.class</name>
        <value>FairScheduler</value>
        <description>常用类:CapacityScheduler、FairScheduler、orFifoScheduler</description>
    </property>
    <property>
        <name>yarn.scheduler.minimum</name>
        <value>100</value>
        <description>单位:MB</description>
    </property>
    <property>
        <name>yarn.scheduler.maximum</name>
        <value>256</value>
        <description>单位:MB</description>
    </property>
    <property>
        <name>yarn.resourcemanager.nodes.include-path</name>
        <value>nodeManager1, nodeManager2</value>
        <description>nodeManager1, nodeManager2分别对应服务器主机名</description>
    </property>
</configuration>
  • 配置NodeManager
参数 属性值 解释
yarn.nodemanager.resource.memory-mb givenNodeManager即资源的可用物理内存,以MB为单位 定义在节点管理器总的可用资源,以提供给运行容器
yarn.nodemanager.vmem-pmem-ratio 最大比率为一些任务的虚拟内存使用量可能会超过物理内存率 每个任务的虚拟内存的使用可以通过这个比例超过了物理内存的限制。虚拟内存的使用上的节点管理器任务的总量可以通过这个比率超过其物理内存的使用
yarn.nodemanager.local-dirs 数据写入本地文件系统路径的列表用逗号分隔 多条存储路径可以提高磁盘的读写速度
yarn.nodemanager.log-dirs 本地文件系统日志路径的列表逗号分隔 多条存储路径可以提高磁盘的读写速度
yarn.nodemanager.log.retain-seconds 10800 如果日志聚合被禁用。默认的时间(以秒为单位)保留在节点管理器只适用日志文件
yarn.nodemanager.remote-app-log-dir logs HDFS目录下的应用程序日志移动应用上完成。需要设置相应的权限。仅适用日志聚合功能
yarn.nodemanager.remote-app-log-dir-suffix logs 后缀追加到远程日志目录。日志将被汇总到yarn.nodemanager.remote­app­logdir/{user}/${thisParam} 仅适用日志聚合功能。
<configuration>
    <property>
        <name>yarn.nodemanager.resource.memory-mb</name>
        <value>256</value>
        <description>单位为MB</description>
    </property>
    <property>
        <name>yarn.nodemanager.vmem-pmem-ratio</name>
        <value>90</value>
        <description>百分比</description>
    </property>
    <property>
        <name>yarn.nodemanager.local-dirs</name>
        <value>/usr/local/hadoop/tmp/nodemanager</value>
        <description>列表用逗号分隔</description>
    </property>
    <property>
        <name>yarn.nodemanager.log-dirs</name>
        <value>/usr/local/hadoop/tmp/nodemanager/logs</value>
        <description>列表用逗号分隔</description>
    </property>
    <property>
        <name>yarn.nodemanager.log.retain-seconds</name>
        <value>10800</value>
        <description>单位为S</description>
    </property>
    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce-shuffle</value>
        <description>Shuffle service 需要加以设置的MapReduce的应用程序服务</description>
    </property>
</configuration>

etc/hadoop/mapred-site.xml

官方详细配置参考文档:
http://hadoop.apache.org/docs/r2.7.3/hadoop-mapreduce-client/hadoop-mapreduce-client-core/mapred-default.xml

MRv1被YARN取代,这是YARN和MRv1的对比:
http://blog.csdn.net/wee_mita/article/details/52717645

mapred-site.xml是提高Hadoop MapReduce性能的关键配置文件,这个配置文件保护了与CPU、内存、磁盘I/O和网络相关的参数。

  • 配置mapreduce
参数 属性值 解释
mapreduce.framework.name yarn 执行框架设置为 Hadoop YARN.
mapreduce.map.memory.mb 1536 对maps更大的资源限制的.
mapreduce.map.java.opts -Xmx2014M maps中对jvm child设置更大的堆大小
mapreduce.reduce.memory.mb 3072 设置 reduces对于较大的资源限制
mapreduce.reduce.java.opts -Xmx2560M reduces对 jvm child设置更大的堆大小
mapreduce.task.io.sort.mb 512 更高的内存限制,而对数据进行排序的效率
mapreduce.task.io.sort.factor 100 在文件排序中更多的流合并为一次
mapreduce.reduce.shuffle.parallelcopies 50 通过reduces从很多的map中读取较多的平行 副本
<configuration>
    <property>
        <name> mapreduce.framework.name</name>
        <value>yarn</value>
        <description>执行框架设置为Hadoop YARN</description>
    </property>
    <property>
        <name>mapreduce.map.memory.mb</name>
        <value>1536</value>
        <description>对maps更大的资源限制的</description>
    </property>
    <property>
        <name>mapreduce.map.java.opts</name>
        <value>-Xmx2014M</value>
        <description>maps中对jvm child设置更大的堆大小</description>
    </property>
    <property>
        <name>mapreduce.reduce.memory.mb</name>
        <value>3072</value>
        <description>设置 reduces对于较大的资源限制</description>
    </property>
    <property>
        <name>mapreduce.reduce.java.opts</name>
        <value>-Xmx2560M</value>
        <description>reduces对 jvm child设置更大的堆大小</description>
    </property>
    <property>
        <name>mapreduce.task.io.sort</name>
        <value>512</value>
        <description>更高的内存限制,而对数据进行排序的效率</description>
    </property>
    <property>
        <name>mapreduce.task.io.sort.factor</name>
        <value>100</value>
        <description>在文件排序中更多的流合并为一次</description>
    </property>
    <property>
        <name>mapreduce.reduce.shuffle.parallelcopies</name>
        <value>50</value>
        <description>通过reduces从很多的map中读取较多的平行副本</description>
    </property>
</configuration>
  • 配置mapreduce的JobHistory服务器
参数 属性值 解释
maprecude.jobhistory.address MapReduce JobHistory Server host:port 默认端口号 10020
mapreduce.jobhistory.webapp.address MapReduce JobHistory Server Web UIhost:port 默认端口号 19888
mapreduce.jobhistory.intermediate-done-dir /mr­history/tmp 在历史文件被写入由MapReduce作业
mapreduce.jobhistory.done-dir /mr­history/done 目录中的历史文件是由MR JobHistory Server管理
<configuration>
    <property>
        <name> mapreduce.jobhistory.address</name>
        <value>192.168.1.100:10200</value>
        <description>IP地址192.168.1.100可替换为主机名</description>
    </property>
    <property>
        <name>mapreduce.jobhistory.webapp.address</name>
        <value>192.168.1.100:19888</value>
        <description>IP地址192.168.1.100可替换为主机名</description>
    </property>
    <property>
        <name>mapreduce.jobhistory.intermediate-done-dir</name>
        <value>/usr/local/hadoop/mr­history/tmp</value>
        <description>在历史文件被写入由MapReduce作业</description>
    </property>
    <property>
        <name>mapreduce.jobhistory.done-dir</name>
        <value>/usr/local/hadoop/mr­history/done</value>
        <description>目录中的历史文件是由MR JobHistoryServer管理</description>
    </property>
</configuration>
发布了62 篇原创文章 · 获赞 158 · 访问量 32万+

猜你喜欢

转载自blog.csdn.net/yezonggang/article/details/83041386