Hadoop的奇技淫巧
(2-6为性能优化)(7-9为函数介绍)
1.在JobHistory里面可以看到job相关的一些信息,用start-all启动Hadoop时便可以进入端口号8088查看查看信息,但是无法进入端口号19888查看history。
只需要启动jobhistory即可,命令:mapred historyserver。想停止的话ctrl+c退出即可。
2.如果有很多小文件,单个文件产生一个mapper,资源比较浪费,把小文件预处理为大文件,再将大文件作为输入,可以节省很多的时间。使用CombineFileInputFormat(是Hadoop类库中的一个抽象类)也可以将多个文件打包到一个输入单元中,使性能得到提高。
3.dfs.block.size这个是块大小的设置,也就是说文件按照多大的size来切分块。一般来说,块的大小也决定了你map的数量。dfs.replication是复制数量的设置,不能为0。设置为1,就是在集群中存一份。设置为2,即做一份备份,也就是说数据在集群中有2份。这两项在hdfs-site.xml配置文件中设置。
4.Map阶段的输出首先存储在一定大小的内存缓冲区中,如果Map输出的大小超过一定限度,Map task就会将结果写入磁盘,等Map任务结束后再将它们复制到Reduce任务的节点上,如果数据量大,中间的数据交换会占用很多时间。可以通过将mapred.compress.map.output属性设置为true来对Map的输出数据进行压缩,同时还可以设置Map输出数据的压缩格式,通过设置mapred.map.output.compression.codec属性即可进行压缩格式的设置。
5.mapred.tasktracker.map.tasks.maximum的默认值是2,属性mapred.tasktracker.reduce.tasks.maximum的默认值也为2,可以在mapred-site.xml文件中将其设置为一个较大的值,提高整体性能。
6.mapred.child.java.opts这个参数是配置每个map或reduce使用的内存数量。默认的是200M。对于这个参数,我个人认为,如 果内存是8G,CPU有8个核,那么就设置成1G就可以了。实际上,在map和reduce的过 程中对内存的消耗并不大,但是如果配置的太小,则有可能出现”无可分配内存”的错误。
7.setup函数:在task启动之后只调用一次。可以将Map或Reduce函数中的重复处理放置到setup函数中,可以将Map或Reduce函数处理过程中可能使用的全局变量进行初始化,或从作业信息中获取全局变量,还可以监控task的启动。 setup只是对应task上的全局操作,而不是整个作业的全局操作。
8.cleanup函数:和setup函数正好相反,在task销毁之前执行一次。
9.run函数:如果想更完备的控制Map或者Reduce阶段,可以覆盖此函数,并像普通的Java类中的函数一样添加自己的控制内容,比如增加自己的task启动后和销毁之前的处理。
10.不断更新中…
Hadoop的奇技淫巧的更多相关文章
- Hadoop 中利用 mapreduce 读写 mysql 数据
Hadoop 中利用 mapreduce 读写 mysql 数据 有时候我们在项目中会遇到输入结果集很大,但是输出结果很小,比如一些 pv.uv 数据,然后为了实时查询的需求,或者一些 OLAP ...
- 初识Hadoop、Hive
2016.10.13 20:28 很久没有写随笔了,自打小宝出生后就没有写过新的文章.数次来到博客园,想开始新的学习历程,总是被各种琐事中断.一方面确实是最近的项目工作比较忙,各个集群频繁地上线加多版 ...
- hadoop 2.7.3本地环境运行官方wordcount-基于HDFS
接上篇<hadoop 2.7.3本地环境运行官方wordcount>.继续在本地模式下测试,本次使用hdfs. 2 本地模式使用fs计数wodcount 上面是直接使用的是linux的文件 ...
- hadoop 2.7.3本地环境运行官方wordcount
hadoop 2.7.3本地环境运行官方wordcount 基本环境: 系统:win7 虚机环境:virtualBox 虚机:centos 7 hadoop版本:2.7.3 本次先以独立模式(本地模式 ...
- 【Big Data】HADOOP集群的配置(一)
Hadoop集群的配置(一) 摘要: hadoop集群配置系列文档,是笔者在实验室真机环境实验后整理而得.以便随后工作所需,做以知识整理,另则与博客园朋友分享实验成果,因为笔者在学习初期,也遇到不少问 ...
- Hadoop学习之旅二:HDFS
本文基于Hadoop1.X 概述 分布式文件系统主要用来解决如下几个问题: 读写大文件 加速运算 对于某些体积巨大的文件,比如其大小超过了计算机文件系统所能存放的最大限制或者是其大小甚至超过了计算机整 ...
- 程序员必须要知道的Hadoop的一些事实
程序员必须要知道的Hadoop的一些事实.现如今,Apache Hadoop已经无人不知无人不晓.当年雅虎搜索工程师Doug Cutting开发出这个用以创建分布式计算机环境的开源软...... 1: ...
- Hadoop 2.x 生态系统及技术架构图
一.负责收集数据的工具:Sqoop(关系型数据导入Hadoop)Flume(日志数据导入Hadoop,支持数据源广泛)Kafka(支持数据源有限,但吞吐大) 二.负责存储数据的工具:HBaseMong ...
- Hadoop的安装与设置(1)
在Ubuntu下安装与设置Hadoop的主要过程. 1. 创建Hadoop用户 创建一个用户,用户名为hadoop,在home下创建该用户的主目录,就不详细介绍了. 2. 安装Java环境 下载Lin ...
随机推荐
- 如何解决WebkitBrowser使用出错“Failed to initialize activation context”
本文转载自:http://www.cnblogs.com/supjia/p/4695671.html 本篇文章主要介绍了"如何解决WebkitBrowser使用出错“Failed to in ...
- 【转】Java HashMap工作原理(好文章)
大部分Java开发者都在使用Map,特别是HashMap.HashMap是一种简单但强大的方式去存储和获取数据.但有多少开发者知道HashMap内部如何工作呢?几天前,我阅读了java.util.Ha ...
- php安装redis扩展
1.windows安装redis扩展 php_redis.dll (for windows) 的下载地址:http://windows.php.net/downloads/pecl/snaps/red ...
- Add LUN to ASM in Linux
# Create new LUN for Linux in the AMS2100 # echo "- - -" >/sys/class/scsi_host/host3/sc ...
- SQL Server 格式化时间 之 format函数
select format(getdate(),'yyyy-MM-dd HH:mm:ss'); 要注意 yyyy-MM-dd这里MM是大写的, HH:mm:ss这里HH是大写的,mm是小写的,大小写意 ...
- C# TextBox中只允许输入数字的方法
1.在Winform(C#)中要实现限制Textbox只能输入数字,一般的做法就是在按键事件中处理, 判断keychar的值.限制只能输入数字,小数点,Backspace,del这几个键.数字0-9所 ...
- MYSQL 安装更新,使用,管理,备份和安全等
如何安装更新,使用,管理,备份和安全,维护优化一个MYSQL系统. 一.MYSQL发展历史,特点.对SQL语法进行介绍 二.如何安装一个MYSQL系统 三四.如何利用SQL语言以及其他的客户工具对MY ...
- python(6)时间戳和北京时间互转,输出当前的时间和推到七天前的日期
项目发展的需要:(包含时间函数)time datetime 时间戳和北京时间互转 import time import datetime s = '2015-04-17 11:25:30' d = d ...
- DataGridView操作
C# DataGridView控件动态添加新行 DataGridView控件在实际应用中非常实用,特别需要表格显示数据时.可以静态绑定数据源,这样就自动为DataGridView控件添加相应的行.假如 ...
- ylbtech-Unitity-CS:Indexers
ylbtech-Unitity-CS:Indexers 1.A,效果图返回顶部 1.B,源代码返回顶部 1.B.1, // indexer.cs // 参数:indexer.txt using S ...