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

注意:本博文只是听课的即时笔记,正确性和条理性不够完善!请谨慎参考!


概览

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

<configuration>
<property>
<name>fs.default.name</name>
<value>hdfs://HNName:10001</value>
<description>NameNode configuration. host/IP:port</description>
</property>

<property>
<name>hadoop.tmp.dir</name>
<value>/usr/local/hadoop/tmp</value>
<description>Base for other directories</description>
</property>

<property>
<name>fs.checkpoint.dir</name>
<value>disk1/hdfs/secondname,disk2/hdfs/secondname</value>
<description>Secondary NameNode storage</description>
</property>

<property>
<name>webinterface.private.actions</name>
<value>true</value>
<description>Advanced options in Web UIs</description>
</property>

</configuration>

hdfs

<configuration>
<property>
<name>dfs.name.dir</name>
<value>disk1/hdfs/name,disk2/hdfs/name</value>
<description>NameNode storage (fsimage)</description>
</property>

<property>
<name>dfs.data.dir</name>
<value>disk1/hdfs/data,disk2/hdfs/data</value>
<description>DataNode block storage</description>
</property>

<property>
<name>dfs.replication</name>
<value>3</value>
<description>Replication factor</description>
</property>

<property>
<name>dfs.block.size</name>
<value>67108864</value>
<description>Size of blocks HDFS splits new files up by</description>
</property>

<property>
<name>dfs.namenode.handler.count</name>
<value>10</value>
<description># threads Namenode uses to serve requests</description>
</property>

<property>
<name>dfs.datanode.handler.count</name>
<value>3</value>
<description># threads DataNodes uses to serve requests</description>
</property>

</configuration>

mapred

<configuration>
<property>
<name>mapred.job.tracker</name>
<value>HNName:10002</value>
<description>JobTracker configuration. host/IP:port</description>
</property>

<property>
<name>mapred.local.dir</name>
<value>disk1/mapred/data,disk2/mapred/data</value>
<description>MapReduce intermediate storage</description>
</property>

<property>
<name>io.sort.factor</name>
<value>10</value>
<description>Maximum # of streams to merge when sorting</description>
</property>

<property>
<name>io.sort.mb</name>
<value>100</value>
<description>Size of memory buffer used when sorting map outputs</description>
</property>

<property>
<name>mapred.map.tasks</name>
<value>2</value>
<description># of map tasks that can run simultaneously</description>
</property>

<property>
<name>mapred.reduce.tasks</name>
<value>1</value>
<description># of reduce tasks that can run simultaneously</description>
</property>

<property>
<name>mapred.tasktracker.map.tasks.maximum</name>
<value>2</value>
<description># of map slots on a TaskTracker</description>
</property>

<property>
<name>mapred.tasktracker.reduce.tasks.maximum</name>
<value>2</value>
<description># of reduce slots on a TaskTracker</description>
</property>

<property>
<name>mapred.child.java.opts</name>
<value>-Xmx200m</value>
<description>JVM options. Map/Reduce task memory.</description>
</property>

</configuration>


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值