概覽
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目錄就是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
?
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 plaincopy
<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
[html] view plaincopy
<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
[html] view plaincopy
<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>?
總結
以上是生活随笔為你收集整理的Hadoop自学笔记(七)Hadoop环境配置和优化的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。