1. 程式人生 > >大資料叢集優化

大資料叢集優化

叢集優化

一個小叢集:1個master,10個datanode。 
最開始使用pig指令碼分析作業,後面作業執行時觀察發現,pig指令碼執行的小作業太多導致任務排程頻繁,叢集效率低。 
小作業太多的影響:

  1. 頻繁新建和關閉task,頻繁分配container會消耗資源。
  2. 一個oozie action先會啟動一個oozie laucher作業消耗一個container,然後再啟動實際的job,啟動的job首先會用個container啟動application master,然後在啟動計算的task 現在同時最多會有29個job,至少會有50個container不是在計算。

1 程式碼優化

  1. 增加5分鐘基礎作業時間粒度,5分鐘->15分鐘,減少Job數

  2. 合併15分鐘粒度作業,Pig->MR,grouping comparator,減少基礎資料重複讀取次數,減少Job數
  3. 合併5分鐘基礎作業,一個作業處理三種話單,去除冗餘欄位(各粒度時間),減少Job數,減少資料量

2 叢集引數配置

2.1 HDFS

  • HDFS塊大小:從預設的128MB調整為256MB,更大的塊大小(block)意味著更少的job,由於當前作業計算並不複雜,可以使用更大塊。
  • 複製因子:預設是3,現在修改為2。減少資料儲存量,可以減小話單上傳的時間消耗
  • DataNode處理程式計數:引數是dfs.datanode.handler.count 預設值是3,調整為30。datanode上用於處理RPC的執行緒數。預設為3,較大叢集,可適當調大些,比如8。需要注意的是,每新增一個執行緒,需要的記憶體增加。
  • NameNode處理程式計數:引數是dfs.namenode.handler.count 預設是30,建議值是47,現在調整為60.namenode或者jobtracker中用於處理RPC的執行緒數,預設是10,較大叢集,可調大些,比如64。 NameNode服務處理程式計數:引數是 dfs.namenode.service.handler.count,預設值是30,建議值是47,現在調整為60。NameNode 用於服務呼叫的伺服器執行緒數量。
  • 最大傳輸執行緒數:引數是一起配置的為:dfs.datanode.max.xcievers, dfs.datanode.max.transfer.threads對於datanode來說,就如同linux上的檔案控制代碼的限制,當datanode 上面的連線數操作配置中的設定時,datanode就會拒絕連線。 一般都會將此引數調的很大,40000+左右。

2.2 YARN

  • 每個作業的 Reduce 任務的預設數量:引數為mapreduce.job.reduces預設值為1,現在調整為30。通過觀察當前執行的job例項,觀察其reduce執行時間,發現時間消耗不足1秒,故不必啟用過多reduce。
  • 啟用 Ubertask 優化:Uber模式是Hadoop2.0針對MR小作業的優化機制。通過mapreduce.job.ubertask.enable來設定是否開啟小作業優化,預設為false。 如果用Job足夠小,則序列在的一個JVM完成該JOB,即MRAppMaster程序中,這樣比為每一個任務分配Container效能更好。關於Ubertask的詳細可以參考Ubertask模式
  • Map任務記憶體:引數為mapreduce.map.memory.mb,保持預設值1GB。
  • Reduce任務記憶體:引數為mapreduce.reduce.memory.mb,保持預設值1GB。
  • Map任務CPU虛擬核心:引數為mapreduce.map.cpu.vcores,為作業的每個 Map 任務分配的虛擬 CPU 核心數。預設每個map一個CPU,使用者提交應用程式時,可以指定每個任務需要的虛擬CPU個數。在MRAppMaster中,每個Map Task和Reduce Task預設情況下需要的虛擬CPU個數為1。
  • Reduce任務CPU虛擬核心:引數為mapreduce.reduce.cpu.vcores,說明 與Map任務CPU虛擬核心一致。
  • Map 任務最大堆疊:引數是mapreduce.map.java.opts.max.heap,Map 程序的最大 Java 堆疊(位元組)。該引數與mapreduce.reduce.java.opts.max.heap一樣,都是ClouderManager獨有的,標準的hadoop引數是mapreduce.map.java.optsmapreduce.reduce.java.opts
  • Reduce 任務最大堆疊: 同Map 任務最大堆疊。
  • 容器記憶體:引數是yarn.nodemanager.resource.memory-mb。表示該節點上YARN可使用的實體記憶體總量,預設是8192(MB),注意,如果你的節點記憶體資源不夠8GB,則需要調減小這個值,而YARN不會智慧的探測節點的實體記憶體總量。當前配置為24GB。
  • 容器虛擬 CPU 核心:引數是yarn.nodemanager.resource.cpu-vcores可以為容器分配的虛擬CPU核心的數量。叢集中每臺伺服器只有24個虛核,所以容器記憶體配24G記憶體就行,現在作業都小map、reduce都用不了太多記憶體,預設是1GB。多了也沒用,因為每個container至少要1個核。

2.3 Oozie

Oozie Server 的 Java 堆疊大小 預設值為1GB,現在修改為4GB。

2.4 HBase

  • HBaseMaster的Java堆疊大小:暫無調整。

  • HBase Region Server處理程式計數:引數為hbase.regionserver.handler.count,預設值為30,調節至150.是RegionServer的請求處理IO執行緒數。較少的IO執行緒,適用於處理單次請求記憶體消耗較高的Big PUT場景(大容量單次PUT或設定了較大cache的scan,均屬於Big PUT)或ReigonServer的記憶體比較緊張的場景。 較多的IO執行緒,適用於單次請求記憶體消耗低,TPS要求非常高的場景。設定該值的時候,以監控記憶體為主要參考。 這裡需要注意的是如果server的region數量很少,大量的請求都落在一個region上,因快速充滿memstore觸發flush導致的讀寫鎖會影響全域性TPS,不是IO執行緒數越高越好。 壓測時,開啟Enabling RPC-level logging,可以同時監控每次請求的記憶體消耗和GC的狀況,最後通過多次壓測結果來合理調節IO執行緒數。

  • HBase RegionServer的Java堆疊大小(位元組):HBase regionserver堆疊能多大就多大,計算方式是RegionServer java堆大小= 伺服器總記憶體-已分配記憶體 (注意:此配置為優化索引入庫)

2.5 伺服器引數

  • 伺服器時鐘同步
  • 修改swappiness值 在所有伺服器上,使用root使用者執行
    1. # sysctl vm.swappiness=0
    2. # echo 'vm.swappiness=0'>> /etc/sysctl.conf
    3. # sysctl -p
  • 禁用透明巨頁
    1. # echo never >/sys/kernel/mm/redhat_transparent_hugepage/enabled

相關推薦

資料叢集優化

叢集優化一個小叢集:1個master,10個datanode。 最開始使用pig指令碼分析作業,後面作業執行時觀察發現,pig指令碼執行的小作業太多導致任務排程頻繁,叢集效率低。 小作業太多的影響:頻繁新建和關閉task,頻繁分配container會消耗資源。一個oozie

CDH資料叢集安全風險彙總

一,風險分為內部和外部 首先內部: CDH大資料叢集部署過程中會自動建立以服務命名的使用者,如圖所示 使用者名稱(login_name):口令位置(passwd):使用者標識號(UID):使用者組標識號(GID):註釋性描述(users):主目錄(home_directory):登陸shell(Shel

記一次hadoop資料叢集生產事故

陸續對原有的hadoop、hbase叢集做了擴容,增加了幾個節點,中間沒有重啟過,今天早上發現一個hregionserver服務停止了,就先啟動服務,沒想到啟動之後一直有訪問資料的出錯,嘗試對整個hbase叢集進行重啟出現了下面的錯誤: $ start-hbase.sh master running

CentOS5/6/7系統下搭建安裝Amabari資料叢集時出現SSLError: Failed to connect. Please check openssl library versions.錯誤的解決辦法(圖文詳解)

        不多說,直接上乾貨!         ========================== Creating target directory... ======================

網路配置、防火牆 (資料叢集環境)Linux防火牆

網路配置、防火牆 1.大資料叢集環境,形成叢集區域網,使用機器名替代真實IP,如何完成IP地址與機器名的對映? 1)修改機器名 在CenterOS7,使用hostname命令,修改當前機器名,如果重啟節點機器名失效;修改/etc/hostname配置檔案(內容:自定義機器名 例:p

資料叢集架之——nginx 反向代理的安裝配置文件。

二、Nginx安裝配置     1.安裝gcc     方式1 - yum線上安裝:         //yum install gcc     

雲端計算與資料 叢集搭建 學習筆記

雲集群的搭建 一、虛擬機器設定:   1.開啟ESXI虛擬機器;(本人所用)   2.網路設定為橋接模式   3.按F2設定系統,輸入密碼   4.Restart Manangement Network   5.esc 退出 加硬碟:   1.開啟虛擬機器給出的ip地址,檢視VWware ES

docker部署分散式資料叢集hadoop、spark、hive、jdk、scala、

(一)1 用docker建立映象並搭建三個節點容器的hadoop及spark服務 包括:mysql,hadoop,jdk,spark,hive,scala,sqoop docker已經安裝並且啟動 #搜尋centos映象: docker search centos #拉取

HA機制的資料叢集的搭建過程

叢集規劃 說明: 1、在hadoop2.0中通常由兩個NameNode組成,一個處於active狀態,另一個處於standby狀態。Active NameNode對外提供服務,而Standby NameNode則不對外提供服務,僅同步active nameno

資料叢集:CDH 6.0.X 完整版 安裝

CDH 6.0.x 安裝步驟 前沿 一CDH6新功能介紹 二:下面開始進行CDH6安裝前的準備工作: 1、配置主機名和hosts解析(所有節點) 2、關閉防火牆 3、關閉SELinux 4、新增定時任務 5、禁用

D001.5 Docker搭建資料叢集環境(基礎篇)

0x00 教程內容 0x01 Docker的安裝 1. 2. 3. 0x02 Docker的簡單操作 1. 2. 3. 0x03 Docker資料卷 Docker的資料卷與Centos的

從零開始的Hadoop資料叢集(偽)搭建,全免費VirtualBox虛擬機器Ubuntu版,學習向,超詳細---(一)

     在公司工作了一段時間了,大資料平臺都是公司的運維人員搭建維護的,自己也想親自搭建一套,純粹為了學習和提高自己,也為了以後自己研究用。公司的環境不太適合亂來,自己的就可以隨意玩了。     寫這個也是為了記錄自己學習的過程,同時給大家提供一個參考,想要學習大資料的也

資料叢集搭建之節點的網路配置過程(二)

緊接著上一章來設定windows的vmnet8的ip地址和虛擬機器中centos的ip地址。 NAT虛擬網路的配置圖如下圖所示: 1、這裡根據VMware中得到的閘道器地址去設定vmnet8的ip地址。 閘道器地址檢視: 2、得到的閘道器地址後去

資料Spark優化讀取Hbase--region 提高並行數過程詳細解析

一. Hbase 的 region 我們先簡單介紹下 Hbase 的 架構和 region : 從物理叢集的角度看,Hbase 叢集中,由一個 Hmaster 管理多個 HRegionServer,其中每個 HRegionServer 都對應一臺物理機器,一臺 HRegionServer

超越Spark,資料叢集計算的生產實踐(內含福利)

Spark擁有一個龐大的、不斷增長的社群,還有在企業環境中不可或缺的生態系統。這些生態系統提供了不同生產環境案例所需的許多功能。一般來說,Spark應用做的是機器學習演算法、日誌聚合分析或者商務智慧相關的運算,因為它在許多領域都有廣泛的應用,包括商務智慧、資料倉庫、推薦系

資料叢集JVM調優&記憶體管理

大資料叢集的工作,很大一部分精力花在了調整叢集的jvm引數上面。由於現在的開源大資料產品無論是Hadoop、Hbase、yarn還是Spark等等,都運行於jvm環境中,因此而產生的垃圾收集問題是影響叢集可用性的是工作中的重點。 本文首先歸納一些常見的因jvm垃圾收集導

CDH資料平臺優化---hdfs優化

        hdfs作為大資料底層的分散式檔案系統,在大資料生態圈中起著很重要的作用,hdfs檔案系統的效能直接影響著大資料平臺效能。故對hdfs做有效的優化顯得尤其重要。現對hdfs優化總結如下: core-default.xml h

CDH資料平臺優化---作業系統優化

在安裝cdh大資料平臺之前,為了得到更高的效率,需要從作業系統層面做一些簡單的優化。優化主要有以下幾點: 1.Disable the tuned Service systemctl stop tuned systemctl disable tuned 2.Disabling Tr

資料叢集下filesystem測試工具之filebench

簡介 Filebench 是一款檔案系統性能的自動化測試工具,它通過快速模擬真實應用伺服器的負載來測試檔案系統的效能。它不僅可以模擬檔案系統微操作(如 copyfiles, createfiles, randomread, randomwrite ),而且可以模擬複雜的應用程式(如 varmail,

資料庫提高查詢效率(較資料優化方法

1、資料庫設計方面: (1)建立索引 (2)分割槽(MySQL,如按時間分割槽) (3)儘量使用固定長度欄位和限制欄位長度。(如VARCHAR2(10);優勢:①降低物理儲存空間 ②提高資料庫處理速度 ③附帶校驗資料是否合法功能 2、在資料庫I/O方面: (1)增加緩衝區