关注云端搜索技术:elasticsearch,nutch,hadoop,nosql,mongodb,hbase,cassandra 及Hadoop优化
Hadoop添加或调整的参数:
一、hadoop-env.sh
1、hadoop的heapsize的设置,默认1000
# The maximum amount of heap to use, in MB. Default is 1000.
# export HADOOP_HEAPSIZE=2000
2、改变pid的路径,pid文件默认在/tmp目录下,而/tmp是会被系统定期清理的
# The directory where pid files are stored. /tmp by default.
# export HADOOP_PID_DIR=/var/hadoop/pids
二、core-site.xml
1、hadoop.tmp.dir 是hadoop文件系统依赖的基础配置(默认值/tmp),尽量手动配置这个选项。
<property>
<name>hadoop.tmp.dir</name>
<value>/tmp/hadoop-${user.name}</value>
<description>A base for other temporary directories.</description>
</property>
2、SequenceFiles在读写中可以使用的缓存大小,可减少 I/O 次数。默认4096(byte),建议可设定为 65536 到 131072。
<property>
<name>io.file.buffer.size</name>
<value>4096</value>
<description>The size of buffer for use in sequence files.
The size of this buffer should probably be a multiple of hardware
page size (4096 on Intel x86), and it determines how much data is
buffered during read and write operations.</description>
</property>
三、hdfs-site.xml
1、默认hdfs里每個block是 67108864(64MB)。如果確定存取的文件块都很大可以改為 134217728(128MB)
<property>
<name>dfs.block.size</name>
<value></value>
<description>The default block size for new files.</description>
</property>
2、Hadoop启动时会进入safe mode,也就是安全模式,這时是不能写入数据的。只有当设置的的blocks(默认0.999f)达到最小的dfs.replication.min数量才会离开safe mode。
在 dfs.replication.min 设的比较大或 data nodes 数量比较多时会等比较久。
<property>
<name>dfs.safemode.threshold.pct</name>
<value>0.999f</value>
<description>
Specifies the percentage of blocks that should satisfy
the minimal replication requirement defined by dfs.replication.min.
Values less than or equal to 0 mean not to start in safe mode.
Values greater than 1 will make safe mode permanent.
</description>
</property>
3、指定namenode、datanode 的存储路径,默认保存在 ${hadoop.tmp.dir}/dfs/ 目录里。
<property>
<name>dfs.name.dir</name>
<value>${hadoop.tmp.dir}/dfs/name</value>
<description>Directory in NameNode's local filesystem to store HDFS's metadata.</description>
</property> <property>
<name>dfs.data.dir</name>
<value>${hadoop.tmp.dir}/dfs/data</value>
<description>Directory in a DataNode's local filesystem to store HDFS's file blocks.</description>
</property>
四、mapred-site.xml
1、缓存map中间结果的buffer大小(默认100MB)
map任务运算产生的中间结果并非直接写入磁盘。hadoop利用内存buffer对部分结果缓存,并在内存buffer中进行一些预排序来优化整个map的性能。
map在运行过程中,不停的向该buffer中写入计算结果,但是该buffer并不一定能将全部的map输出缓存下来,当map输出超出一定阈值,那么map就必须将该buffer中的数据写入到磁盘中去,这个过程在mapreduce中叫做spill,把io.sort.mb调大,则map的spill的次数就会降低,map任务对磁盘的操作变少,最终提高map的计算性能。
<property>
<name>io.sort.mb</name>
<value></value>
<description>
The total amount of buffer memory to use while sorting
files, in megabytes. By default, gives each merge stream 1MB, which should minimize seeks.
</description>
</property>
2、排序文件merge时,一次合并的文件上限(默认10)。
当map任务全部完成后,就会生成一个或者多个spill文件。map在正常退出之前,需要将这些spill合并(merge)成一个。
参数io.sort.factor调整merge行为,它表示最多能有多少并行的stream向merge文件中写入。
调大io.sort.factor,有利于减少merge次数,进而减少map对磁盘的读写频率,最终提高map的计算性能。
<property>
<name>io.sort.factor</name>
<value></value>
<description>The number of streams to merge at once while sorting files. This determines the number of open file handles. </description>
</property>
3、JobTracker的管理线程数(默认10)
<property>
<name>mapred.job.tracker.handler.count</name>
<value></value>
<description>
The number of server threads for the JobTracker. This should be roughly
% of the number of tasktracker nodes.
</description>
</property>
4、每个作业的map/reduce任务数(map默认2,reduce默认1)
<property>
<name>mapred.map.tasks</name>
<value></value>
<description>The default number of map tasks per job.Ignored when mapred.job.tracker is "local". </description>
</property> <property>
<name>mapred.reduce.tasks</name>
<value></value>
<description>The default number of reduce tasks per job. Typically set to %
of the cluster's reduce capacity, so that if a node fails the reduces
can still be executed in a single wave. Ignored when mapred.job.tracker is "local".
</description>
</property>
5、单个tasktracker节点最多可并行执行的map/reduce任务数(map默认2,reduce默认2)
<property>
<name>mapred.tasktracker.map.tasks.maximum</name>
<value></value>
<description>The maximum number of map tasks that will be run simultaneously by a task tracker. </description>
</property> <property>
<name>mapred.tasktracker.reduce.tasks.maximum</name>
<value></value>
<description>The maximum number of reduce tasks that will be run simultaneously by a task tracker. </description>
</property>
6、限制每个用户在JobTracker的内存中保存已完成任务的个数(默认100)。
任务被扔到历史作业之前完成的最大任务数,一般我们只会关注运行中的队列,所以可以考虑降低它的值,减少内存资源占用
这个参数在0.21.0以后的版本已经没有必要设置了,因为0.21版本改造了completeuserjobs的算法,让它尽快的写入磁盘,不再内存中长期存在了。
<property>
<name>mapred.jobtracker.completeuserjobs.maximum</name>
<value></value>
<description>The maximum number of complete jobs per user to keep
around before delegating them to the job history.
</description>
</property>
7、从map复制时reduce并行传送的值(默认5)
默认情况下,每个reduce只会有5个并行的下载线程从map复制数据,如果一个时间段内job完成的map有100个或者更多,那么reduce也最多只能同时下载5个map的数据。
所以这个参数比较适合map很多并且完成的比较快的job的情况下调大,有利于reduce更快的获取属于自己部分的数据。
<property>
<name>mapred.reduce.parallel.copies</name>
<value></value>
<description>The default number of parallel transfers run by reduce during the copy(shuffle) phase.</description>
</property>
8、Map的输出中间结果时是否压缩(默认false)
将这个参数设置为true时,那么map在写中间结果时,就会将数据压缩后再写入磁盘,读结果时也会采用先解压后读取数据。
这样做的后果就是:写入磁盘的中间结果数据量会变少,但是cpu会消耗一些用来压缩和解压。
所以这种方式通常适合job中间结果非常大,瓶颈不在cpu,而是在磁盘的读写的情况。说的直白一些就是用cpu换IO。
<property>
<name>mapred.compress.map.output</name>
<value>false</value>
<description>Should the outputs of the maps be compressed before being sent across the network. Uses SequenceFile compression. </description>
</property>
10、启动tasktracker的子进程时的heapsize设置(默认200M)
<property>
<name>mapred.child.java.opts</name>
<value>-Xmx200m -verbose:gc -Xloggc:/tmp/@taskid@.gc</value>
<description>Java opts for the task tracker child processes.
The following symbol, if present, will be interpolated: @taskid@ is
replaced
by current TaskID. Any other occurrences of '@' will go unchanged.
For example, to enable verbose gc logging to a file named for the taskid
in /tmp and to set the heap maximum to be a gigabyte, pass a 'value' of:
-Xmx1024m -verbose:gc -Xloggc:/tmp/@taskid@.gc The configuration variable mapred.child.ulimit can be used to control
the maximum virtual memory of the child processes.
</description>
</property>
关注云端搜索技术:elasticsearch,nutch,hadoop,nosql,mongodb,hbase,cassandra 及Hadoop优化的更多相关文章
- 百度和 Google 的搜索技术是一个量级吗?
著作权归作者所有. 商业转载请联系作者获得授权,非商业转载请注明出处. 作者:Kenny Chao 链接:http://www.zhihu.com/question/22447908/answer/2 ...
- 数据分析≠Hadoop+NoSQL
数据分析≠Hadoop+NoSQL 目录(?)[+] Hadoop让大数据分析走向了大众化,然而它的部署仍需耗费大量的人力和物力.在直奔Hadoop之前,是否已经将现有技术推向极限 ...
- 复杂的1秒--图解Google搜索技术
谷歌(Google),一个非常成功,但又十分神秘,而且带有几分理想化色彩的互联网搜索巨人,它还是一家相当了不起的广告公司,谷歌首页上的那个搜索按钮是其年赢利200亿美元的杀手级应用,也是Interne ...
- Solr搜索技术
Solr搜索技术 今日大纲 回顾上一天的内容: 倒排索引 lucene和solr的关系 lucene api的使用 CRUD 文档.字段.目录对象(类).索引写入器类.索引写入器配置类.IK分词器 查 ...
- 搜索技术---solr
solr 企业站内搜索技术选型 在一些大型门户网站.电子商务网站等都需要站内搜索功能,使用传统的数据库查询方式实现搜索无法满足一些高级的搜索需求,比如:搜索速度要快.搜索结果按相关度排序.搜索内容格式 ...
- 1.搜索引擎的历史,搜索引擎起步,发展,繁荣,搜索引擎的原理,搜索技术用途,信息检索过程,倒排索引,什么是Lucene,Lucene快速入门
一: 1 搜索引擎的历史 萌芽:Archie.Gopher Archie:搜索FTP服务器上的文件 Gopher:索引网页 2 起步:Robot(网络机器人)的出现与spider(网络爬虫) ...
- 渐进反馈式搜索技术助力运维工程师——Linux命令高效检索
日常生活工作中,我们通过搜索引擎查询相关资料时,经常遇到不知如何指定准确关键词的情况,仅仅根据指定大概范围的关键词时,搜索结果往往不能尽如人意. <信息导航>APP最新版本(Ver 1.1 ...
- 【SpringBoot】搜索框架ElasticSearch介绍和整合SpringBoot
========================12章 搜索框架ElasticSearch介绍和整合SpringBoot ============================= 加入小D课堂技术交 ...
- 12章 搜索框架ElasticSearch介绍和整合SpringBoot 4节课
1.搜索引擎知识和搜索框架elasticsearch基本介绍 简介:通过京东电商 介绍什么是搜索引擎,和开源搜索框架ElasticSearch6.x新特性介绍 前言:介绍ES的主要特点和使用场 ...
随机推荐
- iOS MVVM 参考
实践干货!猿题库 iOS 客户端架构设计 ReactiveCocoa入门教程 ReactiveCocoa入门教程——第二部 谈谈MVVM和MVC,使用swift集成RFP框架(ReactiveCoco ...
- iOS 专题 之 界面开发 之 控件
iOS 之 UIViewController iOS 之 Navagation Button iOS 之 UIButton iOS 之 UITextField iOS 之 UIStackView iO ...
- C++中vector 容器的基本操作
vector是一种简单高效的容器,具有自动内存管理功能.对于大小为n的vector容器,它的元素下标是0~n-1. vector有二个重要方法: begin(): 返回首元素位置的迭代器. ...
- Myeclipse快捷键集合
Ctrl+1 快速修复(最经典的快捷键,就不用多说了)Ctrl+D: 删除当前行 Ctrl+Alt+↓ 复制当前行到下一行(复制增加)Ctrl+Alt+↑ 复制当前行到上一行(复制增加)Alt+↓ 当 ...
- delphi中panel控件应用
delphi中的panel控件是怎么使用的?研究了很久了,还是搞不懂,只知道把它放到form上面,其他操作一律不懂了,有谁可以请教一下,如何把其他控件放到里面去呢?谢谢 提问者采纳 直接把控件放到 ...
- c# silverlight
分享 tsc 条码打印机 打印控件 调用方法 , c# silverlight 下载 TSCLIB.dll http://download.csdn.net/detail/peiyu_peiyu/47 ...
- Servlet3.1规范和JSP2.3规范
JSR 340: Java Servlet 3.1 Specification https://jcp.org/en/jsr/detail?id=340 http://files.cnblogs.co ...
- angular实现form验证
先上效果页面:https://lpdong.github.io/myForm-1/ 其中几个知识点 1.angularJs提供了几个新的type类型: type="password" ...
- 私有云存储搭建(owncloud)
第一步.搭建LAMP(基于linux7.1.1503) 1 配置yum(网络加本地,下面为网络) [vault.centos.org_7.1.1503_os_x86_64_] name=added f ...
- (二)Windows下Redis的主从复制
Redis拥有非常强大的主从复制功能,而且还支持一个master可以拥有多个slave,而一个slave又可以拥有多个slave,从而形成强大的多级服务器集群架构.目前在同一台window下安装三个r ...