FreeBSD下安装配置Hadoop集群(性能调优)
生活随笔
收集整理的這篇文章主要介紹了
FreeBSD下安装配置Hadoop集群(性能调优)
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
hadoop的性能調(diào)優(yōu)是個(gè)比較艱難的事情,由于這個(gè)系統(tǒng)的整個(gè)環(huán)境比較復(fù)雜,對(duì)于接觸時(shí)間不長(zhǎng)的人來說,配置都很難,更別說找出性能優(yōu)化的點(diǎn)了。
性能優(yōu)化涉及的方面很廣,操作系統(tǒng),網(wǎng)絡(luò)配置,配置文件,調(diào)度器等等,抓出幾點(diǎn)來說,但不敢說這幾點(diǎn)就是別人所遇到的性能瓶頸,拋磚引玉而已。應(yīng)用場(chǎng)景不同,優(yōu)化配置肯定是各不相同的。
對(duì)于操作系統(tǒng)和網(wǎng)絡(luò)環(huán)境的調(diào)優(yōu),這個(gè)需要講的東西就太多了,無(wú)法在一篇文章里贅述。集中于幾個(gè)關(guān)鍵詞:sysctl,ulimit,hosts文件,內(nèi)網(wǎng)配置。
盡量把hadoop集群配置在內(nèi)網(wǎng)地址上,這就不用多說了吧。
下面主要探討hadoop的配置文件和調(diào)度器的選擇和開發(fā)。
以我公司的hadoop集群舉例來說,主要是用了數(shù)據(jù)壓縮和索引和對(duì)調(diào)度器策略的優(yōu)化。
使用壓縮是一個(gè)不錯(cuò)的選擇,比如我們自己的集群用的是LZO的壓縮方式,壓縮比大概是原始數(shù)據(jù)的1/3,也就是說,1G的原始日志大概能壓縮成300Mb左右,一方面壓縮比不錯(cuò),另一方面,讀取速度也很不錯(cuò),配合的是Native的lzo庫(kù)。一個(gè)叫hadoop-gpl的東西。前一陣子泰國(guó)水災(zāi),硬盤難買,以壓縮的方式也可以多撐一陣子。
如果給lzo建立索引,效果就更好了
當(dāng)然你需要先安裝hadoopgpl。core-site.xml <property>
????????????????<name>io.compression.codecs</name>
????????????????<value>org.apache.hadoop.io.compress.DefaultCodec,com.hadoop.compression.lzo.LzoCodec,com.hadoop.compression.lzo.LzopCodec,org.apache.hadoop.io.compress.GzipCodec,org.apache
.hadoop.io.compress.BZip2Codec</value>
? ? ? ??</property>
????????<property>
????????????????<name>io.compression.codec.lzo.class</name>
????????????????<value>com.hadoop.compression.lzo.LzoCodec</value>
? ? ? ??</property>
mapred-site.xml <property>
????????????????<name>mapred.compress.map.output</name>
????????????????<value>true</value>
? ? ? ??</property>
????????<property>
????????????????<name>mapred.map.output.compression.codec</name>
????????????????<value>com.hadoop.compression.lzo.LzoCodec</value>
? ? ? ??</property>
????????<property>
????????????????<name>mapred.child.java.opts</name>
????????????????<value>-Djava.library.path=/opt/hadoopgpl/native/Linux-amd64-64</value>
? ? ? ??</property>
當(dāng)然每臺(tái)服務(wù)器都需要定義這個(gè)才可以。
還有一個(gè)很重要的優(yōu)化是槽位的設(shè)置和調(diào)度器的選擇,這個(gè)直接關(guān)系到hadoop的計(jì)算能力。相同硬件情況下,配置好的集群的在計(jì)算相同任務(wù)的情況下,要比配置糟糕的集群快幾倍乃至幾十倍。
對(duì)于map/reduce槽位的配置還有job對(duì)java虛擬機(jī)的配置,我目前總結(jié)的規(guī)律大概是這樣,namenode的槽位總數(shù)相加和等于CPU數(shù)量,同時(shí)map槽位數(shù)大概是reduce槽位的3倍,也就是這樣,如果你有一個(gè)8核的服務(wù)器,map數(shù)量就應(yīng)該是6,reduce數(shù)量是2。對(duì)于datanode,我們需要他的計(jì)算能力強(qiáng)一些,就把map和reduce槽位總和設(shè)置成cpu數(shù)量的2倍,同時(shí)map數(shù)是reduce數(shù)量的3倍,同樣是8核的datanode,map數(shù)就是12,reduce數(shù)就是4。對(duì)于內(nèi)存的使用,還是拿配置文件舉例說明吧。
mapred-site on namenode:<property>
????????<name>mapred.tasktracker.map.tasks.maximum</name>
????????<value>6</value>
????????<final>true</final>
????</property>
????<property>
????????<name>mapred.tasktracker.reduce.tasks.maximum</name>
????????<value>2</value>
????????<final>true</final>
????</property>
????<property>
????????<name>mapred.child.java.opts</name>
????????<value>-Xmx1536M</value>
????</property>
mapred-site on datanode:<property>
????????<name>mapred.tasktracker.map.tasks.maximum</name>
????????<value>12</value>
????????<final>true</final>
????</property>
????<property>
????????<name>mapred.tasktracker.reduce.tasks.maximum</name>
????????<value>4</value>
????????<final>true</final>
????</property>
????<property>
????????<name>mapred.map.child.java.opts</name>
????????<value>-Xmx1224M</value>
????</property>
????<property>
????????<name>mapred.reduce.child.java.opts</name>
????????<value>-Xmx2048M</value>
????</property>
對(duì)于map槽位的內(nèi)存占用,我的理解是這樣,內(nèi)存總數(shù)/CPU核數(shù)/4,上下可以浮動(dòng)幾百兆。對(duì)于reduce槽位是內(nèi)存總數(shù)/cpu核數(shù)/2。
然后簡(jiǎn)單說下調(diào)度器的問題,hadoop默認(rèn)的調(diào)度器是FIFO,就是先入先出,通常來說,這就比較夠用了。但是如果集群規(guī)模較小,計(jì)算任務(wù)又比較多,還需要細(xì)分不同任務(wù)的槽位分配,就還是配置其他的調(diào)度器比較好。
常用的有兩種第三方調(diào)度器,yahoo開發(fā)的Capacity Scheduler和Facebook貢獻(xiàn)的Fair Scheduler。翻譯過來叫計(jì)算能力調(diào)度器和公平調(diào)度器,可能大家聽公平調(diào)度器聽的比較多,不過目前我們公司主要是用計(jì)算能力調(diào)度器。
因?yàn)榕渲玫腦ML太長(zhǎng),我就不貼了,需要了解計(jì)算能力調(diào)度器的配置方法,可以訪問我的同事老趙的技術(shù)博客。
http://blog.csdn.net/azhao_dn/article/details/7070327
在我們的應(yīng)用場(chǎng)景里,計(jì)算能力被分為了3類,每個(gè)分類的map/reudce槽位數(shù)是不同的,根據(jù)統(tǒng)計(jì)平時(shí)的計(jì)算量來固定分配的槽位數(shù)。default,rush,和hive,其中普通的streaming的計(jì)算方式放入default的分類中執(zhí)行,日志清洗和入庫(kù)單獨(dú)使用rush分類,hive,顧名思義,就是給hive數(shù)據(jù)庫(kù)單獨(dú)使用的。這個(gè)分配的map/reduce是最多的。平時(shí)定時(shí)任務(wù)的70%左右都是用hive跑的,臨時(shí)數(shù)據(jù)查詢95%依賴hive。
這樣做的好處是計(jì)算任務(wù)的計(jì)算能力被隔離,互不干擾。可根據(jù)業(yè)務(wù)需求進(jìn)行分類。避免任務(wù)搶占造成的資源大量消耗。
性能優(yōu)化涉及的方面很廣,操作系統(tǒng),網(wǎng)絡(luò)配置,配置文件,調(diào)度器等等,抓出幾點(diǎn)來說,但不敢說這幾點(diǎn)就是別人所遇到的性能瓶頸,拋磚引玉而已。應(yīng)用場(chǎng)景不同,優(yōu)化配置肯定是各不相同的。
對(duì)于操作系統(tǒng)和網(wǎng)絡(luò)環(huán)境的調(diào)優(yōu),這個(gè)需要講的東西就太多了,無(wú)法在一篇文章里贅述。集中于幾個(gè)關(guān)鍵詞:sysctl,ulimit,hosts文件,內(nèi)網(wǎng)配置。
盡量把hadoop集群配置在內(nèi)網(wǎng)地址上,這就不用多說了吧。
下面主要探討hadoop的配置文件和調(diào)度器的選擇和開發(fā)。
以我公司的hadoop集群舉例來說,主要是用了數(shù)據(jù)壓縮和索引和對(duì)調(diào)度器策略的優(yōu)化。
使用壓縮是一個(gè)不錯(cuò)的選擇,比如我們自己的集群用的是LZO的壓縮方式,壓縮比大概是原始數(shù)據(jù)的1/3,也就是說,1G的原始日志大概能壓縮成300Mb左右,一方面壓縮比不錯(cuò),另一方面,讀取速度也很不錯(cuò),配合的是Native的lzo庫(kù)。一個(gè)叫hadoop-gpl的東西。前一陣子泰國(guó)水災(zāi),硬盤難買,以壓縮的方式也可以多撐一陣子。
如果給lzo建立索引,效果就更好了
當(dāng)然你需要先安裝hadoopgpl。core-site.xml <property>
????????????????<name>io.compression.codecs</name>
????????????????<value>org.apache.hadoop.io.compress.DefaultCodec,com.hadoop.compression.lzo.LzoCodec,com.hadoop.compression.lzo.LzopCodec,org.apache.hadoop.io.compress.GzipCodec,org.apache
.hadoop.io.compress.BZip2Codec</value>
? ? ? ??</property>
????????<property>
????????????????<name>io.compression.codec.lzo.class</name>
????????????????<value>com.hadoop.compression.lzo.LzoCodec</value>
? ? ? ??</property>
mapred-site.xml <property>
????????????????<name>mapred.compress.map.output</name>
????????????????<value>true</value>
? ? ? ??</property>
????????<property>
????????????????<name>mapred.map.output.compression.codec</name>
????????????????<value>com.hadoop.compression.lzo.LzoCodec</value>
? ? ? ??</property>
????????<property>
????????????????<name>mapred.child.java.opts</name>
????????????????<value>-Djava.library.path=/opt/hadoopgpl/native/Linux-amd64-64</value>
? ? ? ??</property>
當(dāng)然每臺(tái)服務(wù)器都需要定義這個(gè)才可以。
還有一個(gè)很重要的優(yōu)化是槽位的設(shè)置和調(diào)度器的選擇,這個(gè)直接關(guān)系到hadoop的計(jì)算能力。相同硬件情況下,配置好的集群的在計(jì)算相同任務(wù)的情況下,要比配置糟糕的集群快幾倍乃至幾十倍。
對(duì)于map/reduce槽位的配置還有job對(duì)java虛擬機(jī)的配置,我目前總結(jié)的規(guī)律大概是這樣,namenode的槽位總數(shù)相加和等于CPU數(shù)量,同時(shí)map槽位數(shù)大概是reduce槽位的3倍,也就是這樣,如果你有一個(gè)8核的服務(wù)器,map數(shù)量就應(yīng)該是6,reduce數(shù)量是2。對(duì)于datanode,我們需要他的計(jì)算能力強(qiáng)一些,就把map和reduce槽位總和設(shè)置成cpu數(shù)量的2倍,同時(shí)map數(shù)是reduce數(shù)量的3倍,同樣是8核的datanode,map數(shù)就是12,reduce數(shù)就是4。對(duì)于內(nèi)存的使用,還是拿配置文件舉例說明吧。
mapred-site on namenode:<property>
????????<name>mapred.tasktracker.map.tasks.maximum</name>
????????<value>6</value>
????????<final>true</final>
????</property>
????<property>
????????<name>mapred.tasktracker.reduce.tasks.maximum</name>
????????<value>2</value>
????????<final>true</final>
????</property>
????<property>
????????<name>mapred.child.java.opts</name>
????????<value>-Xmx1536M</value>
????</property>
mapred-site on datanode:<property>
????????<name>mapred.tasktracker.map.tasks.maximum</name>
????????<value>12</value>
????????<final>true</final>
????</property>
????<property>
????????<name>mapred.tasktracker.reduce.tasks.maximum</name>
????????<value>4</value>
????????<final>true</final>
????</property>
????<property>
????????<name>mapred.map.child.java.opts</name>
????????<value>-Xmx1224M</value>
????</property>
????<property>
????????<name>mapred.reduce.child.java.opts</name>
????????<value>-Xmx2048M</value>
????</property>
對(duì)于map槽位的內(nèi)存占用,我的理解是這樣,內(nèi)存總數(shù)/CPU核數(shù)/4,上下可以浮動(dòng)幾百兆。對(duì)于reduce槽位是內(nèi)存總數(shù)/cpu核數(shù)/2。
然后簡(jiǎn)單說下調(diào)度器的問題,hadoop默認(rèn)的調(diào)度器是FIFO,就是先入先出,通常來說,這就比較夠用了。但是如果集群規(guī)模較小,計(jì)算任務(wù)又比較多,還需要細(xì)分不同任務(wù)的槽位分配,就還是配置其他的調(diào)度器比較好。
常用的有兩種第三方調(diào)度器,yahoo開發(fā)的Capacity Scheduler和Facebook貢獻(xiàn)的Fair Scheduler。翻譯過來叫計(jì)算能力調(diào)度器和公平調(diào)度器,可能大家聽公平調(diào)度器聽的比較多,不過目前我們公司主要是用計(jì)算能力調(diào)度器。
因?yàn)榕渲玫腦ML太長(zhǎng),我就不貼了,需要了解計(jì)算能力調(diào)度器的配置方法,可以訪問我的同事老趙的技術(shù)博客。
http://blog.csdn.net/azhao_dn/article/details/7070327
在我們的應(yīng)用場(chǎng)景里,計(jì)算能力被分為了3類,每個(gè)分類的map/reudce槽位數(shù)是不同的,根據(jù)統(tǒng)計(jì)平時(shí)的計(jì)算量來固定分配的槽位數(shù)。default,rush,和hive,其中普通的streaming的計(jì)算方式放入default的分類中執(zhí)行,日志清洗和入庫(kù)單獨(dú)使用rush分類,hive,顧名思義,就是給hive數(shù)據(jù)庫(kù)單獨(dú)使用的。這個(gè)分配的map/reduce是最多的。平時(shí)定時(shí)任務(wù)的70%左右都是用hive跑的,臨時(shí)數(shù)據(jù)查詢95%依賴hive。
這樣做的好處是計(jì)算任務(wù)的計(jì)算能力被隔離,互不干擾。可根據(jù)業(yè)務(wù)需求進(jìn)行分類。避免任務(wù)搶占造成的資源大量消耗。
轉(zhuǎn)載于:https://blog.51cto.com/slaytanic/823321
總結(jié)
以上是生活随笔為你收集整理的FreeBSD下安装配置Hadoop集群(性能调优)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: GestureDetector.OnGe
- 下一篇: OFBiz + Opentaps 目录管