小编给大家分享一下Hadoop怎么优化,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!
我们提供的服务有:成都网站建设、成都网站制作、微信公众号开发、网站优化、网站认证、万年ssl等。为数千家企事业单位解决了网站和推广的问题。提供周到的售前咨询和贴心的售后服务,是有科学管理、有技术的万年网站制作公司
在用hadoop测试些程序,但是,用的数据都是小数据,用hadoop处理起来相当慢,每个文件就只有几KB,而文件有几百个,这样,20MB的数据运行完就要40多分钟,而且即使是4台机器,运行完也要14分钟,这完全是浪费了hadoop,最后发现,每台电脑只有两个Map,这就让Map过很相当漫长。查了一些资料,发现暂时有两项现在我用得着
1、设置Map数:
在conf文件夹中的mapred-site.xml文件里加入
mapred.tasktracker.map.tasks.maximum
格式如下:
mapred.tasktracker.map.tasks.maximum 10
这里只设置了10个,看网上说的一般一个节点的map数是30到300个,大家可以根据具体情况自行设置
2、设置JVM重用
默认是1,表示一个JVM上最多可以顺序执行的task数目(属于同一个Job)是1。也就是说一个task启一个JVM。
显然,这样每次用一次就重启JVM很浪费时间,所以可以把这个的重用次数设置大一点,我这里设置成-1,表示无限适用,直到最后把程序跑完。
和设置Map数差不多,同样是在mapred-site.xml中设置,如下:
mapred.job.reuse.jvm.num.tasks -1
不用再次格式化,可以直接运行。现在,即使是伪分布,运行刚才的程序只需要11分30秒。
笔者将继续学习,找到更合理的办法。同时,可以把数据进行压缩过后在运行程序,但是笔者暂时还没搞懂这个方法怎么用。
参考网址:
http://blog.csdn.net/wangqiaoshi/article/details/18142885
http://jerrylead.iteye.com/blog/1195335
3、Java heap space的解决办法:
这个表明java的虚拟的空间不够了。下面有两种方法可以解决:
①修改hadoop/bin文件夹中的hadoop文件:
找到“export HADOOP_OPTS=”这一行,修改如下:
export HADOOP_OPTS="-Xmx4096m"//将jvm的空间设置为4GB,也可以设置成你想要的
②(建议使用此方法)也可以修改mapred-site.xml文件:
加入如下内容:
mapred.child.java.opts -Xmx4096m
保存退出重启hadoop即可。
4、修改HDFS的块的大小:
默认是64MB,但是一般用128MB,而且有些特殊情况要把块改小一点。总之,很多情况,需要更改块的大小,方法如下:
修改conf文件夹中hdfs-site.xml的内容,加入如下内容:
dfs.block.size 自己想要的大小,单位是B
保存退出,格式化HDFS
以上是“Hadoop怎么优化”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注创新互联行业资讯频道!