CentOS7安裝CDH 第十三章:CDH資源池配置


相關文章鏈接

CentOS7安裝CDH 第一章:CentOS7系統安裝

CentOS7安裝CDH 第二章:CentOS7各個軟件安裝和啟動

CentOS7安裝CDH 第三章:CDH中的問題和解決方法

CentOS7安裝CDH 第四章:CDH的版本選擇和安裝方式

CentOS7安裝CDH 第五章:CDH的安裝和部署-CDH5.7.0

CentOS7安裝CDH 第六章:CDH的管理-CDH5.12

CentOS7安裝CDH 第七章:CDH集群Hadoop的HA配置

CentOS7安裝CDH 第八章:CDH中對服務和機器的添加與刪除操作

CentOS7安裝CDH 第九章:CDH中安裝Kafka

CentOS7安裝CDH 第十章:CDH中安裝Spark2

CentOS7安裝CDH 第十一章:離線升級CDH版本

CentOS7安裝CDH 第十二章:YARN的資源調優

CentOS7安裝CDH 第十三章:CDH資源池配置

CentOS7安裝CDH 第十四章:CDH的優化

1. 靜態資源池

在CDH中,一般情況下不建議使用靜態資源池,在CDH中默認的資源池是動態資源池,為什么不建議使用靜態資源池,原因如下:

假設給NodeManager分配了4G內存,剛剛開始使用的時候使用了3G,一段時間后任務增多,使用到了4G內存,當任務再增多時,靜態資源池會OOM,但動態資源池會從其他地方調集資源過來接着使用。

2. 動態資源池的三種默認使用池

1、使用池已在運行時指定 ,如果該池不存在則加以創建:

  hadoop jar -Dmapreduce.job.queuename=etl xxx.jar

  假如有資源池就使用etl,沒有創建etl

2、使用池 root.users.[username] ,如果該池不存在則加以創建:

  hadoop jar xxxx.jar

  以root來提交 root.users.root

  以hdfs來提交 root.users.hdfs

3、使用池 root.default:

  此規則始終滿足。不會使用后續規則

3. 使用動態資源池

3.1. 動態資源池的其中2種性質

1、根據多個項目一個大的資源池的性質:

  A項目(spark streaming),B項目(spark sql/hive)

  一個項目:

  spark streaming  10%

  hive 30%

  spark sql 60%

  ---Dmapreduce.job.queuename=root.sparkstreaming

2、根據一個項目一個大的資源池性質:

  生產項目product,開發項目develop, 測試項目qa, 默認資源池

  人員:

  product1、product2: product

  develop1、develop2: develop

  qa1、qa2: qa

3.2. 配置動態資源池示例

1、創建資源池product,develop,qa和default,這些都是root的子資源池,其中內存和CPU可以自己設置,但一般不設置,就只設置權重就可以了,記得修改后要刷新動態資源池:

  

  

2、創建我們自己的放置規則:

  

  當product1用戶提交hadoop jar xxxx.jar命令時,是使用的哪個資源池?

  product1用戶提交的時候,取用戶組是product,拼接root.product

  此時判斷root.product池在不在系統配置里?

  假如在,就使用root.product,假如不在,第二條規則

3、配置CDH集群的Java Home目錄:

   

  在所有主機界面的配置選項中,使用安裝JDK建議使用tar包解壓安裝,解壓的目錄為/usr/java下,配置好Java Home目錄后請到CDH主界面更新配置,如果不更新那該資源就不會生效。

4、開啟HDFS權限檢查(dfs.permissions):

  

5、創建用戶組和用戶:

  

6、開啟資源管理器ACL和設置相應的用戶或者用戶組:

  

  管理ACL的格式為:" 以逗號分隔的用戶列表+空格+以逗號分隔的用戶組列表" ,例如 "user1,user2 group1,group2"

7、不允許未聲明的池:

  

8、不使用默認隊列時的 Fair Scheduler 用戶:

  

9、生效配置,重啟服務:

  

  或點擊電源按鈕。

10、提交訪問控制:

  對root用戶進行設置:

  

  

  對其他用戶進行設置,以下以develop舉例,其他類似:

  

  

  在動態資源池中主要刷新動態資源池就可以生效了,不需要重啟服務。

3.3. 使用動態資源池示例

1、創建用戶和用戶組:

  

2、在HDFS中創建目錄:

  

3、給創建的目錄授權:

  hdfs dfs -chmod -R 777 /example

4、使用product1用戶上傳一個文件到創建的目錄下:

  

5、使用product1用戶在HDFS中創建一個文件夾:

  

6、使用product1用戶創建一個測試文件夾,並上傳到/example/input/目錄下:

  

7、進入到hadoop的跟目錄下,並找到hadoop自帶的測試jar包:

  

8、使用product1用戶執行此jar包下的wordcount程序:

hadoop jar \

/opt/cloudera/parcels/CDH/lib/hadoop-mapreduce/hadoop-mapreduce-examples-2.6.0-cdh5.16.1.jar \

wordcount \

/example/input \

/example/output1

錯誤一:/user目錄訪問權限問題,可以通過修改HDFS的/user目錄權限解決

修改前:

修改命令(需使用hdfs用戶來修改):

[hdfs@bigdata01 ~]$ hdfs dfs -chmod -R 777 /user/

修改后:

注:該文件列表中user文件夾可以進行修改,但一些業務數據的文件夾,比如hbase文件夾就不能進行修改了。

 

錯誤二:用戶根無法向隊列root.default提交應用程序

此錯誤為沒有將任務提交到product資源池中,可以將default資源池池設置成所有用戶都可以訪問即可,還可以進行其他設置,請去百度查看。

3.4. 提交一個spark程序中遇到的問題

1、當在CDH中安裝spark2后,提交spark程序的命令為spark2-submit \;

2、提交任務命令如下:

cd /opt/cloudera/parcels/SPARK2/lib/spark2/examples/jars

spark2-submit \

--master yarn \

--queue $QUEUE_NAME \

--class org.apache.spark.examples.GroupByTest \

spark-examples_2.11-2.2.0.cloudera4.jar

3、錯誤一

17/10/21 13:18:48 INFO spark.SparkContext: Successfully stopped SparkContext

Exception in thread "main" java.lang.IllegalArgumentException:

Required executor memory (1024+384 MB) is above the max threshold (1049 MB) of this cluster!

Please check the values of 'yarn.scheduler.maximum-allocation-mb' and/or 'yarn.nodemanager.resource.memory-mb'.

at org.apache.spark.deploy.yarn.Client.verifyClusterResources(Client.scala:334)

at org.apache.spark.deploy.yarn.Client.submitApplication(Client.scala:168)

需要在yarn中配置yarn.nodemanager.resource.memory-mb參數

4、錯誤二

job的日志 HDFS:

User [dr.who] is not authorized to view the logs for container_e25_1508567262904_0002_01_000001 in log file [i-bsbhj3uw_8041]

此時是沒有權限訪問hdfs中的日志,需要在hdfs的配置文件中查找core-site,然后添加如下配置:


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM