Hadoop自学笔记(七)Hadoop环境配置和优化

本文档介绍了Hadoop的故障排查、管理及优化。包括查看logs定位问题、Hadoop的存储位置、常见错误处理,如namespaceID不匹配。此外,还涉及管理员常见问题如节点的增减、数据校验、配置文件的默认与覆盖。优化方面,讨论了dfs.block.size等参数对性能的影响,并提供了使用MapReduce进行性能测试的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

概览

1. Hadoop Trouble Shooting

查看logs, 存储位置等

2. Hadoop Administration

常见Hadoop管理员面对的问题

3. Hadoop Optimization

如何根据环境配置,优化hadoop

学习如何使用Hadoop自带的工具来产生大数据用于性能测试



1. Trouble Shooting

logs的存储位置根目录的logs文件夹

logs按照machine, user, daemon来命名

hadoop-username-daemon-manchine.log

 

 

Hadoop的存储位置:根目录的tmp目录



从上图,右下角可以看出tmp目录就是Dfsmapred的根目录,从而也就是Hadoop的根目录


常见错误:执行格式化hadoop namenode-format后,重启start-all.sh

这时候,在HNData 那边,就会发现jps命令里面没有DataNode

这时候,可以查看log文件,看看错误在哪里

这里这个问题是格式化namenode的时候,其存储的DataNodenamespaceID变化了,但是在DataNode里面没有变化,在logs里面可以查到。只需要去修改相应的namespaceID即可。或者直接把DataNodetmp目录删掉。一般来说,DataNode启动起来以后,就可以去Web UI查看log而不需要在命令行里面看了。



2. Hadoop Administration

下面是一些Hadoop管理员常常面临的问题,这里只列出了问题,但是没有给出完整的答案,请自行查找答案

Commission/Decommission,what’s the process, what file you want to add?

Commissioning就是添加一个节点到slaves文件,然后配置mapred-site.xml即可。

Decommission就是添加一个exclude文件,可以把它从Slaves文件中删除

  

Check for corruption

使用fsck -delete可以删除不正常的Blocks

 

Default & Override Configs

Source目录下有default的配置

 

Copy data in, out, across clusters

使用MapReduce来完成

 

Tunning & Optimization

 

Trouble shooting jobs & Nodes

使用Log文件


Safe mode

只读模式

 

3. Hadoop Optimization

 

dfs.block.size

这个是每一个Mapper会分配到的数据大小;如果你的数据很大,而这个数值分配的很小,就会导致分成很多mapper,每一个mapper完成的很快,但是把这些mapper整合起来就会很花费时间。小的64mb, 大的256mb

 

Io.sort.mb的数量是io.sort.factor10倍,io.sort.factor是决定了缓存文件的数量

  

Mapred.map.tasks不是很重要,因为Mapper的数量主要dfs.block.size决定;

 

Mapred.reduce.tasks很重要,因为默认它只设了一个,合理的数量是:

(0.95 ~ 1.75) * nodes * r.max

其中r.max就是mapred.tasktracker.reduce.tasks.maximum

 

Mapred.tasktracker.map/reduce.tasks.maximum的数量是cpu核心数-1

 

Jvm内存大小 = (m.max + r.max) * java.pots

 

注意:要使用Commpression/decompression来节省网络带宽

 

 

检测MapReduce性能:

hadoop jar $HADOOP_PREFIX/hadoop-*examples*.jar teragen 5343800 /data/input

来生成一个大数据用于处理

 

来执行

hadoop jar $HADOOP_PREFIX/hadoop-*examples*.jar terasort5343800 /data/out

  

然后在Web UI里面查看运行时间,通过调整上面不同的配置来配置好时间。

 

(注意:如果使用虚拟机,优化过的配置可能并不会真的带来性能优化,因为虚拟机的缘故,返回运行会更慢)



附录:上面图片里的配置文件:

core

  1. <configuration>  
  2. <property>  
  3. <name>fs.default.name</name>  
  4. <value>hdfs://HNName:10001</value>  
  5. <description>NameNode configuration. host/IP:port</description>  
  6. </property>  
  7.   
  8. <property>  
  9. <name>hadoop.tmp.dir</name>  
  10. <value>/usr/local/hadoop/tmp</value>  
  11. <description>Base for other directories</description>  
  12. </property>  
  13.   
  14. <property>  
  15. <name>fs.checkpoint.dir</name>  
  16. <value>disk1/hdfs/secondname,disk2/hdfs/secondname</value>  
  17. <description>Secondary NameNode storage</description>  
  18. </property>  
  19.   
  20. <property>  
  21. <name>webinterface.private.actions</name>  
  22. <value>true</value>  
  23. <description>Advanced options in Web UIs</description>  
  24. </property>  
  25.   
  26. </configuration>  

hdfs

  1. <configuration>  
  2. <property>  
  3. <name>dfs.name.dir</name>  
  4. <value>disk1/hdfs/name,disk2/hdfs/name</value>  
  5. <description>NameNode storage (fsimage)</description>  
  6. </property>  
  7.   
  8. <property>  
  9. <name>dfs.data.dir</name>  
  10. <value>disk1/hdfs/data,disk2/hdfs/data</value>  
  11. <description>DataNode block storage</description>  
  12. </property>  
  13.   
  14. <property>  
  15. <name>dfs.replication</name>  
  16. <value>3</value>  
  17. <description>Replication factor</description>  
  18. </property>  
  19.   
  20. <property>  
  21. <name>dfs.block.size</name>  
  22. <value>67108864</value>  
  23. <description>Size of blocks HDFS splits new files up by</description>  
  24. </property>  
  25.   
  26. <property>  
  27. <name>dfs.namenode.handler.count</name>  
  28. <value>10</value>  
  29. <description># threads Namenode uses to serve requests</description>  
  30. </property>  
  31.   
  32. <property>  
  33. <name>dfs.datanode.handler.count</name>  
  34. <value>3</value>  
  35. <description># threads DataNodes uses to serve requests</description>  
  36. </property>  
  37.   
  38. </configuration>  

mapred
  1. <configuration>  
  2. <property>  
  3. <name>mapred.job.tracker</name>  
  4. <value>HNName:10002</value>  
  5. <description>JobTracker configuration. host/IP:port</description>  
  6. </property>  
  7.   
  8. <property>  
  9. <name>mapred.local.dir</name>  
  10. <value>disk1/mapred/data,disk2/mapred/data</value>  
  11. <description>MapReduce intermediate storage</description>  
  12. </property>  
  13.   
  14. <property>  
  15. <name>io.sort.factor</name>  
  16. <value>10</value>  
  17. <description>Maximum # of streams to merge when sorting</description>  
  18. </property>  
  19.   
  20. <property>  
  21. <name>io.sort.mb</name>  
  22. <value>100</value>  
  23. <description>Size of memory buffer used when sorting map outputs</description>  
  24. </property>  
  25.   
  26. <property>  
  27. <name>mapred.map.tasks</name>  
  28. <value>2</value>  
  29. <description># of map tasks that can run simultaneously</description>  
  30. </property>  
  31.   
  32. <property>  
  33. <name>mapred.reduce.tasks</name>  
  34. <value>1</value>  
  35. <description># of reduce tasks that can run simultaneously</description>  
  36. </property>  
  37.   
  38. <property>  
  39. <name>mapred.tasktracker.map.tasks.maximum</name>  
  40. <value>2</value>  
  41. <description># of map slots on a TaskTracker</description>  
  42. </property>  
  43.   
  44. <property>  
  45. <name>mapred.tasktracker.reduce.tasks.maximum</name>  
  46. <value>2</value>  
  47. <description># of reduce slots on a TaskTracker</description>  
  48. </property>  
  49.   
  50. <property>  
  51. <name>mapred.child.java.opts</name>  
  52. <value>-Xmx200m</value>  
  53. <description>JVM options. Map/Reduce task memory.</description>  
  54. </property>  
  55.   
  56. </configuration> 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

文宇肃然

精神和物质鼓励你选一个吧

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值