0
点赞
收藏
分享

微信扫一扫

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

猎书客er 2022-03-30 阅读 87

概览

​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目录

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

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

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

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

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

这里这个问题是格式化namenode的时候,其存储的DataNode的namespaceID变化了,但是在DataNode里面没有变化,在logs里面可以查到。只需要去修改相应的namespaceID即可。或者直接把DataNode的tmp目录删掉。一般来说,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

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

dfs.block.size

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

Io.sort.mb的数量是io.sort.factor的10倍,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

​[html]

view plain

copy

  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. <property>
  8. <name>hadoop.tmp.dir</name>
  9. <value>/usr/local/hadoop/tmp</value>
  10. <description>Base for other directories</description>
  11. </property>
  12. <property>
  13. <name>fs.checkpoint.dir</name>
  14. <value>disk1/hdfs/secondname,disk2/hdfs/secondname</value>
  15. <description>Secondary NameNode storage</description>
  16. </property>
  17. <property>
  18. <name>webinterface.private.actions</name>
  19. <value>true</value>
  20. <description>Advanced options in Web UIs</description>
  21. </property>
  22. </configuration>

hdfs

​[html]

view plain

copy

  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. <property>
  8. <name>dfs.data.dir</name>
  9. <value>disk1/hdfs/data,disk2/hdfs/data</value>
  10. <description>DataNode block storage</description>
  11. </property>
  12. <property>
  13. <name>dfs.replication</name>
  14. <value>3</value>
  15. <description>Replication factor</description>
  16. </property>
  17. <property>
  18. <name>dfs.block.size</name>
  19. <value>67108864</value>
  20. <description>Size of blocks HDFS splits new files up by</description>
  21. </property>
  22. <property>
  23. <name>dfs.namenode.handler.count</name>
  24. <value>10</value>
  25. <description># threads Namenode uses to serve requests</description>
  26. </property>
  27. <property>
  28. <name>dfs.datanode.handler.count</name>
  29. <value>3</value>
  30. <description># threads DataNodes uses to serve requests</description>
  31. </property>
  32. </configuration>

mapred

​[html]

view plain

copy

  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. <property>  
  8. <name>mapred.local.dir</name>  
  9. <value>disk1/mapred/data,disk2/mapred/data</value>  
  10. <description>MapReduce intermediate storage</description>  
  11. </property>  
  12. <property>  
  13. <name>io.sort.factor</name>  
  14. <value>10</value>  
  15. <description>Maximum # of streams to merge when sorting</description>  
  16. </property>  
  17. <property>  
  18. <name>io.sort.mb</name>  
  19. <value>100</value>  
  20. <description>Size of memory buffer used when sorting map outputs</description>  
  21. </property>  
  22. <property>  
  23. <name>mapred.map.tasks</name>  
  24. <value>2</value>  
  25. <description># of map tasks that can run simultaneously</description>  
  26. </property>  
  27. <property>  
  28. <name>mapred.reduce.tasks</name>  
  29. <value>1</value>  
  30. <description># of reduce tasks that can run simultaneously</description>  
  31. </property>  
  32. <property>  
  33. <name>mapred.tasktracker.map.tasks.maximum</name>  
  34. <value>2</value>  
  35. <description># of map slots on a TaskTracker</description>  
  36. </property>  
  37. <property>  
  38. <name>mapred.tasktracker.reduce.tasks.maximum</name>  
  39. <value>2</value>  
  40. <description># of reduce slots on a TaskTracker</description>  
  41. </property>  
  42. <property>  
  43. <name>mapred.child.java.opts</name>  
  44. <value>-Xmx200m</value>  
  45. <description>JVM options. Map/Reduce task memory.</description>  
  46. </property>  
  47. </configuration> 
举报

相关推荐

0 条评论