記錄一次生產(chǎn)環(huán)境hadoop集群優(yōu)化以及pid文件缺失處理-創(chuàng)新互聯(lián)

一、優(yōu)化準(zhǔn)備

成都創(chuàng)新互聯(lián)專業(yè)為企業(yè)提供佳縣網(wǎng)站建設(shè)、佳縣做網(wǎng)站、佳縣網(wǎng)站設(shè)計(jì)、佳縣網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁(yè)設(shè)計(jì)與制作、佳縣企業(yè)網(wǎng)站模板建站服務(wù),十年佳縣做網(wǎng)站經(jīng)驗(yàn),不只是建網(wǎng)站,更提供有價(jià)值的思路和整體網(wǎng)絡(luò)服務(wù)。

優(yōu)化需要根據(jù)實(shí)際情況綜合分析

1、關(guān)閉系統(tǒng)swap分區(qū)(如果未關(guān)閉的話)

在Hadoop中,如果使用系統(tǒng)默認(rèn)設(shè)置,會(huì)導(dǎo)致swap分區(qū)被頻繁使用,集群會(huì)不斷發(fā)出警告。

對(duì)于每個(gè)作業(yè)處理的數(shù)據(jù)量和每個(gè)Task中用到的各種緩沖,用戶都是完全可控的。

echo "vm.swappiness = 0" >> /etc/sysctl.conf

說(shuō)明:盡量不使用交換分區(qū),注意不是禁用

2、資源和配置信息

2臺(tái)namenode,5臺(tái)datanode資源和配置信息

服務(wù)分布表如下所示:

記錄一次生產(chǎn)環(huán)境hadoop集群優(yōu)化以及pid文件缺失處理

軟件版本:

hadoop(hdfs+yarn) 2.7.3

hbase 1.2.4

查看CPU信息的命令:

查看CPU型號(hào)

# cat /proc/cpuinfo | grep name | cut -d: -f2 | uniq

查看物理CPU個(gè)數(shù)

# cat /proc/cpuinfo |grep "physical id" | sort | uniq -c | wc -l

查看沒(méi)有物理CPU中的core的個(gè)數(shù),也就是核數(shù)

# cat /proc/cpuinfo | grep "cpu cores" | uniq

查看邏輯CPU的個(gè)數(shù)

# cat /proc/cpuinfo | grep "processor" | wc -l

CPU總核數(shù)= 物理CPU個(gè)數(shù) * 每顆物理CPU的核數(shù)

總邏輯CPU數(shù) = 物理CPU個(gè)數(shù) * 每顆物理CPU的核數(shù) * 超線程數(shù)

資源情況:

內(nèi)存 16G

CPU8(8個(gè)物理CPU,單核,單線程)

3、dfs.datanode.max.xcievers (dfs.datanode.max.transfer.threads)

這兩個(gè)是一個(gè)參數(shù),只不過(guò)前邊一個(gè)是hadoop1.0之前的參數(shù),表示datanode上負(fù)責(zé)進(jìn)行文件操作的線程數(shù)。如果需要處理的文件過(guò)多,而這個(gè)參數(shù)設(shè)置得過(guò)低就會(huì)有一部分文件處理不過(guò)來(lái),就會(huì)報(bào)下面這個(gè)異常:

ERROR org.apache.hadoop.dfs.DataNode: DatanodeRegistration(192.168.10.103:50010,storageID=DS-1570581820-10.10.10.53-50010-1224117842339,infoPort=50075, ipcPort=50020):DataXceiver: java.io.IOException: xceiverCount 258 exceeds the limit of concurrent xcievers 256

linux系統(tǒng)中所有的文件操作都被綁定到一個(gè)socket上,進(jìn)一步具體可以把他看做是一個(gè)線程。而這個(gè)參數(shù)就是指定這種線程的個(gè)數(shù)。在datanode里面有一個(gè)專門(mén)的線程組來(lái)維護(hù)這些線程,同時(shí)有一個(gè)守護(hù)線程來(lái)監(jiān)視這個(gè)線程組的體量,它負(fù)責(zé)監(jiān)測(cè)線程數(shù)量是否到達(dá)上線,超過(guò)就拋出異常。因?yàn)槿绻@樣的線程過(guò)多,系統(tǒng)內(nèi)存就會(huì)暴掉。

對(duì)于參數(shù)dfs.datanode.max.transfer.threads還依照現(xiàn)有配置 8192

  <property>

        <name>dfs.datanode.max.transfer.threads</name>

        <value>8192</value>

    </property>

默認(rèn)值:4096

4、dfs.namenode.handler.count

NameNode用來(lái)處理來(lái)自DataNode的RPC請(qǐng)求的線程數(shù)量

NameNode有一個(gè)工作線程池用來(lái)處理客戶端的遠(yuǎn)程過(guò)程調(diào)用及集群守護(hù)進(jìn)程的調(diào)用。處理程序數(shù)量越多意味著要更大的池來(lái)處理來(lái)自不同DataNode的并發(fā)心跳以及客戶端并發(fā)的元數(shù)據(jù)操作。對(duì)于大集群或者有大量客戶端的集群來(lái)說(shuō),通常需要增大參數(shù)dfs.namenode.handler.count的默認(rèn)值10。設(shè)置該值的一般原則是將其設(shè)置為集群大小的自然對(duì)數(shù)乘以20,即20logN,N為集群大小。如果該值設(shè)的太小,明顯的狀況就是DataNode在連接NameNode的時(shí)候總是超時(shí)或者連接被拒絕,但NameNode的遠(yuǎn)程過(guò)程調(diào)用隊(duì)列很大時(shí),遠(yuǎn)程過(guò)程調(diào)用延時(shí)就會(huì)加大。

集群大小是7,7的自然對(duì)數(shù)約等于2,所以這里的配置就是 20*log7 = 40

<property>

<name>dfs.namenode.handler.count</name>

<value>40</value>

</property>

默認(rèn)值:10

5、dfs.datanode.handler.count

DataNode用來(lái)連接NameNode的RPC請(qǐng)求的線程數(shù)量

設(shè)置為20

<property>

<name>dfs.datanode.handler.count</name>

<value>20</value>

</property>

默認(rèn)值:10

二、PID相關(guān)準(zhǔn)備

hadoop 及 hbase的pid文件默認(rèn)是放在/tmp下面的,這個(gè)你可以從啟動(dòng)關(guān)閉腳本中看出,不過(guò)這個(gè)目錄會(huì)定時(shí)清理。這就產(chǎn)生一個(gè)問(wèn)題,當(dāng)再次關(guān)閉服務(wù)的時(shí)候,服務(wù)pid文件丟失就會(huì)產(chǎn)生jps不顯示服務(wù),但是web的管理頁(yè)面可以正常訪問(wèn)的情況。我的解決辦法就是手動(dòng)生成缺水的pid文件,然后修改配置文件,重啟服務(wù)。

1、NameNode 、DataNode 以及SecondaryNameNode 的pid配置

hadoop-env.sh

export HADOOP_PID_DIR=/data/hadoop_data/pids

export HADOOP_SECURE_DN_PID_DIR=${HADOOP_PID_DIR}

JobHistory的pid配置

mapred-env.sh

export HADOOP_MAPRED_PID_DIR=/data/hadoop_data/pids

NodeManager和ResourceManager的pid配置

yarn-env.sh

export YARN_PID_DIR=/data/hadoop_data/pids

HMaster和HRegionServer 的pid配置

hbase-env.sh

export HBASE_PID_DIR=/data/hadoop_data/pids

PID文件的命令規(guī)則大家可以從腳本中找到

我這里并不是所有的pid文件路徑都沒(méi)有配置,需要配置的是MapReduce和yarn

2、集群中各節(jié)點(diǎn)服務(wù)啟動(dòng)情況以及PID文件存在情況

192.168.10.101:

$ jps

194921 HMaster

194352 DFSZKFailoverController

539317 JobHistoryServer

193972 NameNode

存在的pid文件:

目錄/data/hadoop_data/pids

hadoop-hduser-namenode.pid

hadoop-hduser-zkfc.pid

hbase-hduser-master.pid

192.168.10.102:

$ jps

371963 DFSZKFailoverController

371811 NameNode

372121 HMaster

存在的pid文件:

目錄/data/hadoop_data/pids

hadoop-hduser-namenode.pid

hadoop-hduser-zkfc.pid

hbase-hduser-master.pid

192.168.10.103:

$ jps

500043 JournalNode

500164 NodeManager

522618 HRegionServer

499932 DataNode

存在的pid文件:

目錄/data/hadoop_data/pids

hadoop-hduser-datanode.pid

hadoop-hduser-journalnode.pid

hbase-hduser-regionserver.pid

192.168.10.104:

$ jps

234784 NodeManager

234636 JournalNode

235070 HRegionServer

234525 DataNode

存在的pid文件:

目錄/data/hadoop_data/pids

hadoop-hduser-datanode.pid

hadoop-hduser-journalnode.pid

hbase-hduser-regionserver.pid

192.168.10.105:

$ jps

310371 HRegionServer

48404 NodeManager

48285 JournalNode

48174 DataNode

存在的pid文件:

目錄/data/hadoop_data/pids

hadoop-hduser-datanode.pid

hadoop-hduser-journalnode.pid

hbase-hduser-regionserver.pid

192.168.10.106:

$ jps

100855 HRegionServer

435319 DataNode

435456 NodeManager

存在的pid文件:

目錄/data/hadoop_data/pids

hadoop-hduser-datanode.pid

hbase-hduser-regionserver.pid

192.168.10.107:

$ jps

410010 NodeManager

484955 HRegionServer

409847 DataNode

存在的pid文件:

目錄/data/hadoop_data/pids

hadoop-hduser-datanode.pid

hbase-hduser-regionserver.pid

三、下面是具體的操作步驟

以下所有操作都是在hadoop集群服務(wù)管理用戶hduser下操作的

1、生成PID文件

根據(jù)實(shí)際情況創(chuàng)建相應(yīng)的PID文件

jps命令可以查看起著哪些服務(wù),然后查看pid文件目錄/data/hadoop_data/pids,如果服務(wù)啟動(dòng)但是沒(méi)有相應(yīng)的pid文件,則需要?jiǎng)?chuàng)建該服務(wù)的pid文件。

echo PID > /tmp/mapred-hduser-historyserver.pid

    /tmp/yarn-hduser-resourcemanager.pid

    /tmp/yarn-hduser-nodemanager.pid

2、停止服務(wù)

這里需要說(shuō)的是hadoop+hbase+zookeeper集群服務(wù)啟動(dòng)關(guān)閉順序

啟動(dòng)順序

zookeepeer->hadoop->hbase

停止順序

hbase->hadoop->zookeepeer

登錄到192.168.10.101(主hbase服務(wù)器,主namenode服務(wù)器)

停止hbase集群

$ cd /data/hbase/bin

$ ./stop-hbase.sh

停止hadoop集群

$ cd /data/hadoop/sbin

$ ./stop-all.sh

停止MapReduce歷史記錄服務(wù)

$ cd /data/hbase/bin

$ ./mr-jobhistory-daemon.sh stop historyserver

3、修改配置文件

備份要修改的配置文件

修改配置文件

vim /data/hadoop/etc/hadoop/mapred-env.sh

添加:

export HADOOP_MAPRED_PID_DIR=/data/hadoop_data/pids

vim /data/hadoop/etc/hadoop/yarn-env.sh

添加:

export YARN_PID_DIR=/data/hadoop_data/pids

vim /data1/hadoop/etc/hadoop/hdfs-site.xml

修改如下:

<property>

     <name>dfs.datanode.max.transfer.threads</name>

     <value>8192</value>

   </property>

添加如下:

<property>

  <name>dfs.namenode.handler.count</name>

  <value>40</value>

</property>

<property>

  <name>dfs.datanode.handler.count</name>

  <value>20</value>

</property>

vim /data/hbase/conf/hbase-env.sh

添加如下:

export HADOOP_HOME=/data/hadoop

vim /data/hbase/conf/hbase-site.xml

修改如下:

   <property>

    <name>hbase.rootdir</name>

    <value>hdfs://masters/hbase</value>

   </property>

在相應(yīng)的配置文件目錄把配置文件拷貝到其他節(jié)點(diǎn)

$ for ip in 102 103 104 105 106 107;do scp /data/hadoop/etc/hadoop/mapred-env.sh 192.168.10.$ip:/data/hadoop/etc/hadoop/;done

$ for ip in 102 102 104 105 106 107;do scp /data/hadoop/etc/hadoop/yarn-env.sh 192.168.10.$ip:/data/hadoop/etc/hadoop/;done

$ for ip in 102 102 104 105 106 107;do scp /data/hadoop/etc/hadoop/hdfs-site.xml 192.168.10.$ip:/data/hadoop/etc/hadoop/;done

$ for ip in 102 102 104 105 106 107;do scp /data/hbase/conf/hbase-env.sh 192.168.10.$ip:/data/hbase/conf/;done

$ for ip in 102 102 104 105 106 107;do scp /data/hbase/conf/hbase-site.xml 192.168.10.$ip:/data/hbase/conf/;done

移除 HBase 里面的不必要 log4j 的 jar 包

cd /data/hbase/lib

mv slf4j-log4j12-1.7.5.jar slf4j-log4j12-1.7.5.jar.bak

4、啟動(dòng)服務(wù)

啟動(dòng)hadoop集群

$ cd /data/hadoop/sbin

$ ./start-all.sh

啟動(dòng)hbase集群

$ cd /data/hbase/bin

$ ./start-hbase.sh

啟動(dòng)MapReduce歷史記錄服務(wù)

$ cd /data/hbase/bin

$ ./mr-jobhistory-daemon.sh start historyserver

5、驗(yàn)證

查看pid文件

192.168.10.101

$ cd /data/hadoop_data/pids

$ ll

total 24

-rw-r--r-- 1 hduser hadoop  7 Jun  6 22:48 hadoop-hduser-namenode.pid

-rw-r--r-- 1 hduser hadoop  7 Jun  6 22:48 hadoop-hduser-zkfc.pid

-rw-r--r-- 1 hduser hadoop  7 Jun  6 22:49 hbase-hduser-master.pid

-rw-r--r-- 1 hduser hadoop 33 Jun  6 22:49 hbase-hduser-master.znode

-rw-r--r-- 1 hduser hadoop  7 Jun  6 22:49 mapred-hduser-historyserver.pid

-rw-r--r-- 1 hduser hadoop  7 Jun  6 22:48 yarn-hduser-resourcemanager.pid

192.168.10.102

$ ll

total 12

-rw-r--r-- 1 hduser hadoop 7 Jun  6 22:48 hadoop-hduser-namenode.pid

-rw-r--r-- 1 hduser hadoop 7 Jun  6 22:48 hadoop-hduser-zkfc.pid

-rw-r--r-- 1 hduser hadoop 7 Jun  6 22:49 hbase-hduser-master.pid

192.168.10.103

$ ll

total 20

-rw-r--r-- 1 hduser hadoop  6 Jun  6 22:48 hadoop-hduser-datanode.pid

-rw-r--r-- 1 hduser hadoop  6 Jun  6 22:48 hadoop-hduser-journalnode.pid

-rw-r--r-- 1 hduser hadoop  6 Jun  6 22:49 hbase-hduser-regionserver.pid

-rw-r--r-- 1 hduser hadoop 43 Jun  6 22:49 hbase-hduser-regionserver.znode

-rw-r--r-- 1 hduser hadoop  6 Jun  6 22:48 yarn-hduser-nodemanager.pid

192.168.10.104

$ ll

total 20

-rw-r--r-- 1 hduser hadoop  7 Jun  6 22:48 hadoop-hduser-datanode.pid

-rw-r--r-- 1 hduser hadoop  7 Jun  6 22:48 hadoop-hduser-journalnode.pid

-rw-r--r-- 1 hduser hadoop  7 Jun  6 22:49 hbase-hduser-regionserver.pid

-rw-r--r-- 1 hduser hadoop 43 Jun  6 22:49 hbase-hduser-regionserver.znode

-rw-r--r-- 1 hduser hadoop  7 Jun  6 22:48 yarn-hduser-nodemanager.pid

192.168.10.105

$ ll

total 20

-rw-r--r-- 1 hduser hadoop  7 Jun  6 22:48 hadoop-hduser-datanode.pid

-rw-r--r-- 1 hduser hadoop  7 Jun  6 22:48 hadoop-hduser-journalnode.pid

-rw-r--r-- 1 hduser hadoop  7 Jun  6 22:49 hbase-hduser-regionserver.pid

-rw-r--r-- 1 hduser hadoop 43 Jun  6 22:49 hbase-hduser-regionserver.znode

-rw-r--r-- 1 hduser hadoop  7 Jun  6 22:48 yarn-hduser-nodemanager.pid

192.168.10.106

$ ll

total 16

-rw-r--r-- 1 hduser hadoop  7 Jun  6 22:48 hadoop-hduser-datanode.pid

-rw-r--r-- 1 hduser hadoop  7 Jun  6 22:49 hbase-hduser-regionserver.pid

-rw-r--r-- 1 hduser hadoop 43 Jun  6 22:49 hbase-hduser-regionserver.znode

-rw-r--r-- 1 hduser hadoop  7 Jun  6 22:48 yarn-hduser-nodemanager.pid

192.168.10.107

$ ll

total 16

-rw-r--r-- 1 hduser hadoop  7 Jun  6 22:48 hadoop-hduser-datanode.pid

-rw-r--r-- 1 hduser hadoop  7 Jun  6 22:49 hbase-hduser-regionserver.pid

-rw-r--r-- 1 hduser hadoop 43 Jun  6 22:49 hbase-hduser-regionserver.znode

-rw-r--r-- 1 hduser hadoop  7 Jun  6 22:48 yarn-hduser-nodemanager.pid

查看調(diào)用是否正常

注意事項(xiàng):

事項(xiàng)一:如果生產(chǎn)環(huán)境有監(jiān)控服務(wù)的腳本或者服務(wù)則需要先停止對(duì)于服務(wù)的監(jiān)控,以防止服務(wù)停止時(shí)觸發(fā)監(jiān)控,進(jìn)而自動(dòng)重啟服務(wù)。

事項(xiàng)二:一定記得把配置文件同步到每個(gè)節(jié)點(diǎn)(各節(jié)點(diǎn)配置文件一致的話)

參考:

官網(wǎng)文檔:

http://hadoop.apache.org/docs/r2.7.3/hadoop-project-dist/hadoop-common/ClusterSetup.html

官網(wǎng)配置參考:

http://hadoop.apache.org/docs/r2.7.3/hadoop-project-dist/hadoop-hdfs/hdfs-default.xml

參考文章:

https://blog.csdn.net/qq_26091271/article/details/50411383

https://www.cnblogs.com/hanganglin/p/4563716.html

https://blog.csdn.net/odailidong/article/details/79656188

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。

文章名稱:記錄一次生產(chǎn)環(huán)境hadoop集群優(yōu)化以及pid文件缺失處理-創(chuàng)新互聯(lián)
標(biāo)題來(lái)源:http://muchs.cn/article22/dshojc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供動(dòng)態(tài)網(wǎng)站、網(wǎng)頁(yè)設(shè)計(jì)公司、網(wǎng)站營(yíng)銷網(wǎng)站導(dǎo)航、做網(wǎng)站、響應(yīng)式網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

綿陽(yáng)服務(wù)器托管