CDH集羣安裝&測試總結

0.緒論

以前徹底沒有接觸過大數據相關的東西,都是書上啊,媒體上各類吹噓啊,我對大數據,集羣啊,分佈式計算等等概念真是高山仰止,充滿了仰望之情,以爲這些東西是這樣的:html

這裏寫圖片描述

當我搭建的過程當中,發現這些東西是這樣的:java

這裏寫圖片描述

對於初學者來講,我認爲缺點以下:node

  • 1.須要控制,配置的東西太多,而且配置對應並非很清晰(之後優化集羣是否會有很高含金量?)
  • 2.整個集羣,我覺的從硬件到軟件總體來講仍是穩定性有待提升,尤爲CDH 集羣這塊一會這個主機失去聯繫,一會NameNode掛,一會monitor掛,整個使用過程就是在不斷的掛,看日誌,挑錯。基本離自動化,智能化還有很大距離。

CDH集羣測試主要包括如下幾個方面的內容:python

1.裝機(pxe),搭建服務器集羣基礎環境
2.安裝CDH集羣,調試集羣的健康情況,使集羣可用
3.測試集羣性能,優化集羣,使用測試框架(如Intel的HiBench框架)測試集羣性能linux

1.基礎建設簡稱基建

上一篇文章,咱們已經介紹了集羣安裝操做系統的大殺器:git

pxe無人值守安裝linux機器筆記github

在批量安裝完畢系統以後,本節主要圍繞搭建CDH集羣的基礎建設進行介紹,基礎建設簡稱基建,主要是爲了支撐CDH集羣后序工做流暢進行的一系列Linux系統的設置工做,基礎建設工做沒有作好,後面安裝使用集羣過程當中會出現不少莫名奇妙的錯誤。基建主要包括,免密登陸,時間同步,格式化硬盤,掛載目錄等一些設置,下面爲你們分別介紹:算法

1.1 創建主機分發腳本

新建一個host文件裏面逐行設置爲主機ip
eg.sql

192.168.1.1
192.168.1.2
192.168.1.3shell

新建一個自定義腳本文件:

#!/bin/sh
host= `cat host`
for i in $host
do
echo $i
#將須要分發的命令複製在此處
Done

1.2 免密碼登錄

配置免密碼登陸
1. 執行ssh-keygen命令,點擊兩次「回車」,生成/root/.ssh/id_rsa.pub文件;(使用腳本分發下面兩條命令)
2. cat /root/.ssh/id_rsa.pub >> /root/.ssh/authorized_keys
3. scp -r /root/.ssh $hostname:/root/

1.3 配置主機基礎環境

  • 修改默認語言爲英文

    vi /etc/sysconfig/i18n
    LANG=」en_US.UTF-8」

  • 修改host文件

    scp /etc/hosts root@$i:/etc

  • 關閉防火牆以及SELinux

    ssh $i ‘service iptables stop’
    ssh $i ‘chkconfig iptables off’
    ssh $i ‘service ip6tables stop’
    ssh $i ‘chkconfig ip6tables off’
    ssh $i ‘setenforce 0’
    ssh $i ‘echo ‘service iptables stop’ >> /etc/rc.local’
    ssh $i ‘echo ‘service ip6tables stop’ >> /etc/rc.local’
    ssh $i ‘sed -i ‘s/SELINUX=enforcing/SELINUX=disabled/g’ /etc/selinux/config’

  • 同步時間 啓動ntp服務,每5分鐘向服務器同步一次(還需修改時間服務器上的部分配置,具體請百度)

    ssh $i ‘cat >>/var/spool/cron/root << EOF
    */5 * * * * /usr/sbin/ntpdate serverIP> /dev/null 2>&1
    EOF’
    ssh $i ‘echo ‘SYNC_HWCLOCK=yes’ >> /etc/sysconfig/ntpd’
    ssh $i ‘hwclock -w’

  • 修改用戶句柄限制

    ssh $i ‘cat >> /etc/security/limits.conf << EOF
    Hadoop soft nofile 65000
    hadoop hard nofile 65000
    hadoop soft nproc 401408
    hadoop hard nproc 401408
    * soft nofile 65000
    * hard nofile 65000
    * soft nproc 401408
    * hard nproc 401408
    EOF’

  • 創建掛載目錄(根據本身的硬盤個數)

    ssh $i ‘mkdir /data01 /data02 /data03 /data04 /data05 /data06 /data07 /data08 /data09 ‘

  • 格式化硬盤(需批量執行,此處腳本有待升級)

    ssh $i
    ‘parted /dev/sdb mklabel gpt
    yes
    parted /dev/sdb mkpart primary 0% 100%
    mkfs.ext4 -T largefile /dev/sdb1

  • 修改/etc/fstab文件

    ssh $i ‘cat >> /etc/fstab << EOF
    /dev/sdb1 /data01 ext4 defaults,noatime 0 0

  • 掛載目錄

    ssh $i
    ‘mount /dev/sdb1 /data01

  • 關閉swap交換分區

    ssh $i ‘swapoff -a’
    ssh $i ‘sysctl -w vm.swappiness=0’
    ssh $i ‘echo ‘vm.swappiness=0’ >> /etc/sysctl.conf’

  • 關閉大內存頁面

    ssh $i ‘cat >> /sys/kernel/mm/transparent_hugepage/defrag << EOF
    never
    EOF

    ssh $i ‘cat >> /etc/rc.local << EOF
    echo never > /sys/kernel/mm/redhat_transparent_hugepage/defrag
    EOF

  • 卸載自帶的Java環境,能夠根據本身的java版本卸載
    檢查集羣機器是否安裝過openJDK,若是有安裝過,請卸載,執行命令 :

    rpm -qa | grep jdk
    rpm -e xxx #xxx爲上一步輸出的rpm包名

    ssh $i
    ‘rpm -e –nodeps java-1.6.0-openjdk-1.6.0.0-1.66.1.13.0.el6.x86_64
    rpm -e –nodeps java-1.5.0-gcj-1.5.0.0-29.1.el6.x86_64
    rpm -e –nodeps java-1.6.0-openjdk-devel-1.6.0.0-1.66.1.13.0.el6.x86_64
    rpm -e –nodeps java-1.6.0-openjdk-javadoc-1.6.0.0-1.66.1.13.0.el6.x86_64’

  • 安裝pscp和scala包

    ssh $i ‘rpm -i /root/rpms/pssh-2.3.1-5.el6.noarch.rpm /root/rpms/scala-2.10.4.rpm’

  • 配置java1.8.0_66環境

    scp -r /usr/java/jdk1.8.0_66 root@$i:/usr/java/
    ssh $i ‘rm -rf /usr/java/lastest’
    ssh $i ‘ln -s /usr/java/jdk1.8.0_66 /usr/java/lastest’

    ssh $i ‘cat >> /etc/profile << EOF
    JAVA_HOME=/usr/java/jdk1.8.0_66
    CLASS_PATH=.:\$JAVA_HOME/lib/dt.jar:\$JAVA_HOME/lib/tools.jar
    export JAVA_HOME
    PATH=\$HOME/bin:\$JAVA_HOME/bin:\$PATH
    export PATH
    export CLASS_PATH
    EOF’

    scp /etc/profile root@$i:/etc/
    ssh $i ‘source /etc/profile’

    done

  • 時間同步

    ssh $i ‘service ntpd stop
    ntpdate lcgm2
    ssh $i ‘hwclock -w’
    ssh $i ‘chkconfig ntpd on’
    done

  • 配置yum源,開啓http服務
    Yum源先mount在var/www/html/下面,在
    /etc/yum.repos.d/rhel-source.repo文件修改內容

這裏寫圖片描述

一些可能用到的命令:

創建多級目錄: mkdir -p /x/xx
查看系統是否開啓cloudera相關服務:chkconfig –list|grep cloudera
查看eth0網卡網絡速度:ethtool eth0|grep -i speed

2.安裝配置Cloudera-Manager(離線)

在線安裝方式因爲須要安裝的安裝包過大,時間可能很是長,建議你們下載安裝包進行離線安裝。主要安裝Cloudera Manager Server 和Agent。

2.1 離線倉庫安裝準備

在cloudrea下載離線倉庫,下載地址
下載cm5:
https://archive.cloudera.com/cm5/repo-as-tarball/5.8.0/cm5.8.0-centos6.tar.gz
下載cdh5:
https://archive.cloudera.com/cdh5/parcels/5.8.0/
列表:
CDH-5.8.0-1.cdh5.8.0.p0.42-el6.parcel
CDH-5.8.0-1.cdh5.8.0.p0.42-el6.parcel.sha1
manifest.json
下載驗證:https://archive.cloudera.com/cm5/redhat/6/x86_64/cm/5.8.0/repodata/
下載安裝腳本:
http://archive.cloudera.com/cm5/installer/latest/cloudera-manager-installer.bin

2.2 主節點解壓安裝

cloudera manager的目錄默認位置在/opt下,解壓:tar xzvf cloudera-manager*.tar.gz將解壓後的cm-5.*和cloudera目錄放到/opt目錄下(相似在windows把軟件安裝在D:/software)。

爲Cloudera Manager 5創建數據庫,能夠用MySQL,或者自帶的postgresql ,本文采用自帶的數據庫進行測試。

配置離線倉庫地址:

  1. 開啓apache服務:service httpd start
  2. 將下載的cloudera倉庫移到/var/www/html目錄下,調整目錄結構:

這裏寫圖片描述

cdh5目錄結構:

這裏寫圖片描述

cm5目錄結構:

這裏寫圖片描述

chmod u+x cloudera-manager-installer.bin,而後./*.bin該文件相關啓動腳本,就能夠進入安裝界面進行安裝啦。

service cloudera-scm-server start (這個啓動有點慢,能夠關注日誌變更狀況 )
service cloudera-scm-agent start

其中,日誌所在路徑是
/var/log/cloudera-scm-server/cloudera-scm-server.log
啓動server後,使用:

/sbin/iptables -I INPUT -p tcp –dport 7180 -j ACCEPT ( 打開7180端口 )

2.3 配置集羣

  • 1.根據CM引導界面,用戶名admin ,密碼admin。選擇Cloudera Express 免費版。點擊下一步到爲CDH集羣安裝指定主機。
    這裏寫圖片描述

這裏寫圖片描述

  • 2.輸入須要安裝集羣的機器IP地址,包括Cloudera Manager Server 機器。

  • 3.選擇集羣的安裝方式,選擇使用數據包,CDH版本選擇自定義,並輸入yum源地址(基建中已經配置了的)
    這裏寫圖片描述

這裏寫圖片描述
(上圖連接地址https可能會出錯)

升級過程當中遇到的問題
提示Error Cannot retrieve repository metadata [repomod.xml] for cloudera-cdh5.Please verify its path and try again

(1) 檢查機器的yum及cloudera的yum源配置是否正確
(2) 在Cloudera升級步驟(5)中填寫的apache上cm5包地址是否正確,協議應該使用http而不是https,否則就會出現這種錯誤
(3) 若沒有顯示本地parcel包,多是路徑填寫錯誤,能夠根據配置的遠程yum地址從新填寫。

  • 4.集羣安裝狀態,能夠看到每臺集羣的安裝狀態,若是正常則進入下一步。

  • 5.選擇要安裝的CDH組件,咱們選擇安裝HBase、HDFS、Hive、Spark、YARN、Zookeeper服務。點擊繼續(hibench測試主要須要這幾個組件),角色服務分配參考以下:

這裏寫圖片描述

  • 6. CM會檢測安裝環境,可能會提示一處安裝警告,好比:
    cloudera 建議將/proc/sys/vm/swappiness設置爲0,當前設置爲60,
    則咱們須要在集羣每臺機器上執行命令:

echo 0> /proc/sys/vm/swappiness

王道就是有錯就看日誌調試。
這裏寫圖片描述

  • 7.選擇集羣機器的角色分配,對於默認的選擇均可以選擇在Master機器上,固然像Second NameNode能夠選擇在非NameNode機器上。注意Cloudera Management Service都選Master。

  • 8.數據庫配置。根據建立數據表選擇所對應的服務便可。

  • 9.集羣設置。選擇默認,集羣開始安裝,完成,訪問集羣serverIP:7180/cmf,ok。

2.4 集羣基本優化

2.4.1 關閉Linux THG服務

檢查集羣中的各個主機的THG(對虛擬化等的內存資源分配是有好處的,可是對hadoop離線計算IO密集型操做是沒有優點的,關閉THG可加快處理速度)

  • 1.查看THG

    cat /sys/kernel/mm/redhat_transparent_hugepage/defrag

  • 2.關閉THG

    echo never > /sys/kernel/mm/redhat_transparent_hugepage/defrag

2.4.2 設置linux內核參數:vm.swappiness

vm.swappiness值的範圍爲0~100,做用是控制應用數據在物理內存和虛擬內存之間的交換,值越低,交換的越少。默認值爲60。

查看集羣各個主機的此參數值:

cat /proc/sys/vm/swappiness

建議調整值爲1:

sysctl -w vm.swappiness=1

2.4.3 配置HDFS

點擊HDFS -> 配置 -> 高級:hdfs-site.xml 的 HDFS 服務高級配置代碼段(安全閥),加入配置使用公平隊列

<property>  
    <name>ipc.8020.callqueue.impl</name>
    <value>org.apache.hadoop.ipc.FairCallQueue</value>
</property>
  • 1
  • 2
  • 3
  • 4
  • 1
  • 2
  • 3
  • 4

2.4.4 配置Yarn資源

關於Yarn內存分配與管理,主要涉及到了ResourceManage(集羣資源調度協調)、ApplicationMatser(任務資源配置)、NodeManager(YARN節點代理配置)這幾個概念,相關的優化也要牢牢圍繞着這幾方面來開展。

點擊Yarn -> 資源管理:

  1. 設置ApplicationMaster Java最大堆棧:800M(AM內存默認1G)

  2. 容器內存yarn.nodemanager.resource.memory-mb
    計算一個節點須要分配的容器內存方法:
    主機內存-操做系統預留內存(12G) - Cloudera Manager Agent(1G) - HDFS DN(1G) – Yarn NM(1G)
    = 主機內存-15G

若是安裝了hive.需減掉12G左右內存.
若是安裝了hbase.還需減掉12-16G內存。
若是安裝impala.還需減掉至少16G內存。

例:64G內存主機,若是安裝了hbase,hive,則建議分配的容器內存大約爲:25~30G

  1. 容器虛擬CPU內核yarn.nodemanager.resource.cpu-vcores

  2. 計算一個節點須要分配的容器虛擬內核方法:
    (主機cpu核數 – 系統預留1 – Cloudera1 – HDFS1 – Yarn NN 1) * 4
    Hbase : -1
    例:24核機器,爲yarn分配可用cpu核數大約20核左右,按照 核數:處理任務數=1:4(比例可酌情調整),建議分配爲80。因爲本次集羣CPU計算能力沒達到官網建議的比例的要求,大約分配的比例爲1:2,分配的核數爲30核左右。

  3. 高級配置中:mapred-site.xml 的 MapReduce 客戶端高級配置代碼段(安全閥)

<property>
    <name>mapreduce.tasktracker.outofband.heartbeat</name>
    <value>true</value>
</property>
  • 1
  • 2
  • 3
  • 4
  • 1
  • 2
  • 3
  • 4

2.4.5 配置oozie

點擊oozie –> 配置 -> 高級 : oozie-site.xml 的 Oozie Server 高級配置代碼段(安全閥),增長配置:

<property>
<name>oozie.launcher.fs.hdfs.impl.disable.cache</name>
  <value>true</value>
</property>
<property>
<name>oozie.action.max.output.data</name>
  <value>5000000</value>
</property>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

2.4.6 配置Oozie HA(用HAproxy負載均衡)

  1. Web界面操做略
  2. error:
    Oozie could not be start
    REASON:java.lang.noSuchFieldError:EXTERNAL_PROPERTY
    ERROR: java.lang.noSuchFieldError:EXTERNAL_PROPERTY
    Org.cod… jaskson…

致使上面錯誤是oozie的jaskson版本低,替換成1.9.13版本便可
只替換jackson-mapper-asl和jackson-core-asl便可

替換步驟:

1.
先將192.168.188.13的兩jar包拷貝到/opt/cloudera/parcels/CDH/lib/oozie下

2.

find . -name 「jackson*」 | grep -e 「^./lib」 | xargs -i dirname {} | sort |uniq | xargs -i cp jackson-* {}

3.

find . -name 「jackson*」 | grep -e 「^./lib」 | xargs -i dirname {} |sort | uniq | xargs -i mv {}/jackson-mapper-asl-1.8.8.jar .

4.

find . -name 「jackson*」 | grep -e 「^./lib」 | xargs -i dirname {} |sort | uniq | xargs -i mv {}/jackson-core-asl-1.8.8.jar .

2.4.7 其餘優化

1.DRF策略

CDH集羣調優:內存、Vcores和DRF

默認配置下,CPU核數和內存是1:1G的比例來啓動任務的。可經過調整參數yarn.nodemanager.resource.memory-mb進行調整

2.每一個Container的分配多少內存和cpu

當應用程序向resource manager 申請資源(即申請container )時, RM分配給一個container 多大的內存是按照一個最小單位進行分配的。 例如, 咱們設置分配的最小單位爲4GB, 則RM分配出來的container的內存必定是4G的倍數。 假設如今有一個程序向RM申請 5.1G的內存, 則RM會分配給它一個8GB的container去執行。

yarn.scheduler.minimum-allocation-mb=4096

在實際執行map reduce的job中, 一個container其實是執行一個map 或者reduce task的jvm的進程。 那麼這個jvm在執行中會不斷的請求內存,假設它的物理內存或虛擬內存佔用超出了container的內存設定, 則node manager 會主動的把這個進程kill 掉。

這裏須要澄清一點, JVM使用的內存實際上分爲虛擬內存和物理內存。 JVM中全部存在內存中的對象都是虛擬內存, 但在實際運行中只有一部分是實際加載在物理內存中的。 咱們使用linux的top 能夠看到 VM, RES, 前者是虛擬內存,後者能夠當作近似是實際佔用的物理內存。 所以在設置mapreduce的task的 jvm opts 參數時, 應將heap size 設置的比container容許的最大虛擬內存小。 這樣jvm 不會由於申請過多的內存而被node manager 強制關閉。 固然設置最大heap size 若是在執行中被超過, jvm就會報 OutOfMemoryException。

同時還有一個參數,設定了RM能夠分配的最大的container是多大。 假設應用程序向RM申請的資源超過了這個值, RM會直接拒絕這個請求。

yarn.scheduler.maximum-allocation-mb

3.HiBench集羣性能測試

在大數據領域中,集羣的性能很大程度上我認爲主要是由總體的網絡,數據吞吐量決定的,在使用HiBench測試時候發現,使用傳統電口千兆網絡的任務運行時間比光網任務運行時間要慢10s左右。HiBench的基準測試集是用來衡量一個大數據平臺(基於Hadoop)性能的基準測試集,包含了文件系統的IO性能,系統的批處理吞吐,數據倉庫用的OLAP分析算子,機器學習的處理能力,以及流處理系統的能力。

切換到光纖後,須要修改機器機器ip,這時候cdh竟然無法啓動了,百度以後,發現若是使用自帶數據庫postgresql,須要修改hosts表中記錄的元數據信息:修改CDH集羣ip

3.1 簡介

hibench做爲一個測試hadoop的基準測試框架,提供了對於hive:(aggregation,scan,join),排序(sort,TeraSort),大數據基本算法(wordcount,pagerank,nutchindex),機器學習算法(kmeans,bayes),集羣調度(sleep),吞吐(dfsio),以及新加入5.0版本的流測試:
we provide following streaming workloads for SparkStreaming, Storm .
這裏寫圖片描述

一個完整的TeraSort測試須要按如下三步執行:

  • 用TeraGen生成隨機數據
  • 對輸入數據運行TeraSort
  • 用TeraValidate驗證排好序的輸出數據

全部hibench測試基本都是這樣的流程,生成數據,運行,輸出結果。

3.2 配置並編譯HiBench

從GitHub下載HiBench開源包,本篇會基於HiBench-5.0爲例。https://github.com/intel-hadoop/HiBench。若是是基於CDH 5.5測試,建議使用HiBench-5.0,其中包含了Spark 1.5的編譯包。

編譯

  • 添加JAVA_HOME 環境變量
  • 註釋掉${HIBENCH_HOME} /src/streambench/pom.xml中兩行
<!-- <module>stormbench</module> -->
<!-- <module>samzabench</module> -->
  • 1
  • 2
  • 1
  • 2
  • 調用編譯腳本:${HIBENCH_HOME}/bin/build-all.sh

配置

  • 編輯 HiBench Configuration File:

    cd ${HIBENCH_HOME}/conf

    cp 99-user_defined_properties.conf.template 99-user_defined_properties.conf

    編譯配置文件,以下修改一些參數:

    hibench.hadoop.home      /opt/cloudera/parcels/CDH/lib/hadoop
    hibench.hadoop.mapreduce.home       /opt/cloudera/parcels/CDH/lib/hadoop-mapreduce
    hibench.spark.home       /opt/cloudera/parcels/CDH/lib/spark
    hibench.hdfs.master       hdfs://cdh-node-11.cdhtest.com
    hibench.hadoop.configure.dir       /etc/hadoop/conf
    hibench.masters.hostnames       master # Resource Manager addresses
    hibench.slaves.hostnames       hostname…

    # Node Manager addresses

    hibench.spark.master       yarn-client
    hibench.spark.version       spark1.6
    spark.kryoserializer.buffer       2000m # 不然會出現大量spark.kryoserializer.buffer.mb被啓用的警告
    hibench.streamingbench.zookeeper.host       zookeeper-hostnames
    hibench.streamingbench.brokerList       all-hostnames
    hibench.streamingbench.kafka.home       /opt/cloudera/parcels/KAFKA

  • 修改benchmarks.lst文件,只運行有必要的測試集,例:

    #aggregation
    #join
    #kmeans
    #pagerank
    #scan
    #sleep
    sort
    wordcount
    #bayes
    terasort
    #nutchindexing
    dfsioe

  • 修改language.lst文件,只運行有必要的語言

    cd ${HIBENCH_HOME}/conf

    在language.lst文件中,將如下兩行刪除

    spark/java
    spark/Python

  • 修改load-config.py文件,確保Bench在運行時能找到惟一的包:

    $HiBench-Home/bin/functions/load-config.py

    將hadoop-mapreduce-client-jobclient*-tests.jar改成hadoop-mapreduce-client-jobclient-tests.jar

  • Bench在運行時有一些固化的目錄和CDH不一致,須要創建目錄引用

    創建目錄引用

    mkdir -p /opt/cloudera/parcels/CDH/lib/hadoop-mapreduce/share/hadoop
    cd /opt/cloudera/parcels/CDH/lib/hadoop-mapreduce/share/hadoop
    ln -sf /opt/cloudera/parcels/CDH/lib/hadoop-mapreduce mapreduce2

  • Bench會在HDFS根目錄下生成文件,將HDFS的根目錄權限修改成777:

    sudo -u hdfs hadoop fs -chmod 777 /

  • (可選)若是在Kerberos啓用的情況下,請增長如下步驟:

    # 設置環境變量
    export HIBENCH_HOME=/root/Downloads/HiBench-master
    export JAVA_HOME=/usr/java/jdk1.7.0_67-cloudera
    export JAVA_LIBRARY_PATH=$JAVA_LIBRARY_PATH:/opt/cloudera/parcels/CDH/lib/hadoop/lib/native
    export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/cloudera/parcels/CDH/lib/hadoop/lib/native
    export SPARK_YARN_USER_ENV=」JAVA_LIBRARY_PATH=$JAVA_LIBRARY_PATH,LD_LIBRARY_PATH=$LD_LIBRARY_PATH」

    # 從新登陸Kerberos
    kdestroy
    kinit -k -t

運行

  • 命令行輸入
    ${HIBENCH_HOME}/bin/run-all.sh

3.3 HiBench基本優化配置

**優化基本原則** 在固定數據量的前提下,通常設置成讓MapReduce做業在一輪Map、Reduce內結束,不然會增長MapReduce進程的調度開銷。但若是輸入的數據量過大,有可能會由於單個Map或者Reduce的內存消耗過大而到時嚴重的GC問題,這個須要在運行時對Map或者Reduce任務進程須要監測。 **YARN基本配置**

NodeManager Container vCores數量就是系統的virtual core的數量
Container Memory配置成節點上可用內存的75%到80%之間(如128GB的機器,能夠設置96GB)
ResourceManager Fair Scheduler調度器
最小容器內存1GB
最小容器CPU 1個核
最大容器內存=NodeManager Container內存的75%~80%
最大容器CPU=NodeManager Container CPU的75%~80%
增量內存512MB
增量CPU 1個核
Gateway mapreduce.map/reduce.max.mb = 2GB
mapreduce.map/reduce.java.opts = max.mb * 0.8

附錄(CDH 相關目錄結構功能簡介)

**1.相關目錄**

/var/log/cloudera-scm-installer : 安裝日誌目錄。
/var/log/* : 相關日誌文件(相關服務的及CM的)。
/usr/lib64/cmf/ : Agent程序代碼。
/var/lib/cloudera-scm-server-db/data : 內嵌數據庫目錄。
/usr/bin/postgres : 內嵌數據庫程序。
/etc/cloudera-scm-agent/ : agent的配置目錄。
/etc/cloudera-scm-server/ : server的配置目錄。
/etc/clouder-scm-server/db.properties 默認元數據庫用戶名密碼配置
/opt/cloudera/parcels/ : Hadoop相關服務安裝目錄。
/opt/cloudera/parcel-repo/ : 下載的服務軟件包數據,數據格式爲parcels。
/opt/cloudera/parcel-cache/ : 下載的服務軟件包緩存數據。
/etc/hadoop/* : 客戶端配置文件目錄。

**2.配置**

  • Hadoop配置文件:

配置文件放置於/var/run/cloudera-scm-agent/process/目錄下。如:

/var/run/cloudera-scm-agent/process/193-hdfs-NAMENODE/core-site.xml

這些配置文件是經過Cloudera Manager啓動相應服務(如HDFS)時生成的,內容從數據庫中得到(即經過界面配置的參數)。

在CM界面上更改配置是不會當即反映到配置文件中,這些信息會存儲於數據庫中,等下次重啓服務時纔會生成配置文件。且每次啓動時都會產生新的配置文件。

CM Server主要數據庫爲scm基中放置配置的數據表爲configs。裏面包含了服務的配置信息,每一次配置的更改會把當前頁面的全部配置內容添加到數據庫中,以此保存配置修改歷史。

scm數據庫被配置成只能從localhost訪問,若是須要從外部鏈接此數據庫,修改

vim /var/lib/cloudera-scm-server-db/data/pg_hba.conf

文件,以後重啓數據庫。運行數據庫的用戶爲cloudera-scm。

  • 查看配置內容

直接查詢scm數據庫的configs數據表的內容。
訪問REST API: http://hostname:7180/api/v4/cm/deployment,返回JSON格式部署配置信息。

  • 配置生成方式

CM爲每一個服務進程生成獨立的配置目錄(文件)。全部配置統一在服務端查詢數據庫生成(由於scm數據庫只能在localhost下訪問)生成配置文件,再由agent經過網絡下載包含配置文件的zip包到本地解壓到指定的目錄。

  • 配置修改
    CM對於須要修改的配置預先定義,對於沒有預先定義的配置,則經過在高級配置項中使用xml配置片斷的方式進行配置。而對於/etc/hadoop/下的配置文件是客戶端的配置,能夠在CM經過部署客戶端生成客戶端配置。

    1. 數據庫
      Cloudera manager主要的數據庫爲scm,存儲Cloudera manager運行所須要的信息:配置,主機,用戶等。

    2. CM結構
      CM分爲Server與Agent兩部分及數據庫(自帶更改過的嵌入Postgresql)。它主要作三件事件:
      管理監控集羣主機。
      統一管理配置。
      管理維護Hadoop平臺系統。
      實現採用C/S結構,Agent爲客戶端負責執行服務端發來的命令,執行方式通常爲使用python調用相應的服務shell腳本。Server端爲Java REST服務,提供REST API,Web管理端經過REST API調用Server端功能,Web界面使用富客戶端技術(Knockout)。
      Server端主體使用Java實現。
      Agent端主體使用Python, 服務的啓動經過調用相應的shell腳本進行啓動,若是啓動失敗會重複4次調用啓動腳本。
      Agent與Server保持心跳,使用Thrift RPC框架。

    3. 升級
      在CM中能夠經過界面嚮導升級相關服務。升級過程爲三步:
      1.下載服務軟件包。
      2.把所下載的服務軟件包分發到集羣中受管的機器上。
      3.安裝服務軟件包,使用軟連接的方式把服務程序目錄連接到新安裝的軟件包目錄上。

    4. 卸載
      sudo /usr/share/cmf/uninstall-scm-express.sh, 而後刪除/var/lib/cloudera-scm-server-db/目錄,否則下次安裝可能不成功。

    5. 開啓postgresql遠程訪問 CM內嵌數據庫被配置成只能從localhost訪問,若是須要從外部查看數據,數據修改vim /var/lib/cloudera-scm-server-db/data/pg_hba.conf文件,以後重啓數據庫。運行數據庫的用戶爲cloudera-scm。

相關文章
相關標籤/搜索