<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    paulwong

    hadoop優化

    1. 絡帶寬
      Hadoop集群的服務器在規劃時就在統一的交換機下,這是在官方文檔中建議的部署方式。

      但是我們的這臺交換機和其他交換機的互聯帶寬有限,所以在客戶端遇到了HDFS訪問速度慢的問題。

      把操作集群的客戶端也聯入DataNode的交換機內部,解決了這個問題。

    2. 系統參數
      對ulimit -c的修改也是官方文檔建議的修改,在集群只有10臺服務器時,并沒有遇到問題。
      隨著機器增加和任務增加,這個值需要改的更大。

    3. 配置文件管理
      這個集群用的是Cloudera發行的版本,配置文件默認存在/etc/hadoop/conf位置。這是一個只有root才能修改的位置。

      為了修改方便,我把配置文件統一保存在一臺機器上,修改后用腳本分發。保證所有服務器都是統一的配置。

    4. mapred.tasktracker.map.tasks.maximum
      這個參數控制每個TaskTracker同時運行的Map任務數。

      以前的設置是和CPU核數相同的,偶爾遇到任務擠占DataNode資源的問題。

      現在改成map+reduce+1==num_cpu_cores。

    5.  嚴格控制root權限
      Cloudera的發行版會創建一個hadoop用戶,各種守護進程都應該以這個用戶運行。

      曾經有誤操作(/usr/lib/hadoop/bin/hadoop datanode &)導致本地的數據目錄被root寫入新文件,于是正確啟動的hadoop用戶進程無法讀寫。

      所以現在的集群服務器不提供日常的root權限訪問。

    6. Java的GC模式
      在mapred.child.java.opts和HADOOP_OPTS都增加了-XX:+UseConcMarkSweepGC。

      JDK的文檔中推薦現代多核處理器系統,采用這種GC方式,可以充分利用CPU的并發能力。

      這個改動對性能的積極影響很大。

    7. 選擇正確的JDK
      這個集群有部分服務器的JDK用的是32位版本,不能創建-Xmx4g以上的進程。
      統一為x64版本的JDK。

    8. mapred.reduce.slowstart.completed.maps
      這個參數控制slowstart特性的時機,默認是在5%的map任務完成后,就開始調度reduce進程啟動,開始copy過程。

      但是我們的機器數量不多,有一次大量的任務堆積在JobTracker里,每個TaskTracker的map和reduce slots都跑滿了。

      由于map沒有足夠資源迅速完成,reduce也就無法結束,造成集群的資源互相死鎖。
      把這個參數改成了0.75,任務堆積的列表從平均10個,變成了3個。

    9. mapred.fairscheduler.preemption
      這個參數設為了true。以便fairscheduler在用戶最小資源不能滿足時,kill其他人的任務騰出足夠的資源。

      集群運行著各種類型的任務,有些map任務需要運行數小時。這個參數會導致這類任務被頻繁kill,幾乎無法完成。曾經有個任務在7小時內被kill了137次。

      可以通過調整fairscheduler的pool配置解決,給這種任務單獨配置一個minMap==maxMap的pool。

    10. mapred.jobtracker.completeuserjobs.maximum
      限制每個用戶在JobTracker的內存中保存任務的個數。
      因為這個參數過大,我們的JobTracker啟動不到24小時就會陷入頻繁的FullGC當中。

      目前改為5,JT平穩運行一天處理1500個任務,只占用800M內存。

      這個參數在>0.21.0已經沒有必要設置了,因為0.21版本改造了completeuserjobs的用法,會盡快的寫入磁盤,不再內存中長期存在了。

    11. mapred.jobtracker.update.faulty.tracker.interval和mapred.jobtracker.max.blacklist.percent
      一個寫錯的任務,會導致一大批TaskTracker進入黑名單,而且要24小時才能恢復。這種狀況對中小規模的集群性能影響是非常大的。只能通過手工重啟TaskTracker來修復。所以我們就修改了部分JobTracker的代碼,暴露了兩個參數:

      mapred.jobtracker.update.faulty.tracker.interval控制黑名單重置時間,默認是24小時不能改變,我們現在改成了1小時。

      mapred.jobtracker.max.blacklist.percent控制進入黑名單TT的比例,我們改成了0.2。
      我正在補充這兩個參數的TestCase,準備提交到trunk中。

    12. 多用hive少用streaming
      由于streaming的方便快捷,我們做了很多基于它的開發。但是由于streaming的任務在運行時還要有一個java進程讀寫stdin/out,有一定的性能開銷。

      類似的需求最好改用自定義的Deserializer+hive來完成。

    posted on 2012-09-24 23:28 paulwong 閱讀(817) 評論(0)  編輯  收藏 所屬分類: HADOOP 、云計算

    主站蜘蛛池模板: 亚洲综合日韩久久成人AV| 一区二区无码免费视频网站| 国产一区二区三区在线免费| 香蕉大伊亚洲人在线观看| 免费看黄视频网站| 一本色道久久综合亚洲精品蜜桃冫| 97性无码区免费| 精品亚洲AV无码一区二区三区 | 亚洲伊人成无码综合网| 深夜特黄a级毛片免费播放| 亚洲国产中文v高清在线观看| 二级毛片免费观看全程| 久久乐国产精品亚洲综合| 特级做A爰片毛片免费看无码 | 天天干在线免费视频| 亚洲成av人在线观看网站| 免费在线观看亚洲| 成人免费ā片在线观看| 亚洲AV永久无码精品成人| 久久久久久精品免费免费自慰| 亚洲自偷自偷在线成人网站传媒 | 亚洲一区二区观看播放| 亚洲Av无码国产情品久久 | 成人免费一区二区三区在线观看| 久久人午夜亚洲精品无码区| 久久激情亚洲精品无码?V| 精品在线免费观看| 亚洲avav天堂av在线网爱情| 国产麻豆剧传媒精品国产免费| av网站免费线看| 亚洲视频在线观看视频| 国产精品无码免费视频二三区 | 亚洲人成网站在线播放影院在线| 男女做羞羞的事视频免费观看无遮挡 | 亚洲精品成人片在线观看精品字幕| 久草视频在线免费看| 亚洲欧美自偷自拍另类视| 久久精品亚洲福利| 91在线手机精品免费观看| 鲁死你资源站亚洲av| 久久噜噜噜久久亚洲va久|