天天看點

基于原版Hadoop的YDB部署 YDB依賴環境準備第五章非HDP版Hadoop基礎服務配置要點 第六章非HDP版本的YDB部署

YDB依賴環境準備

一、硬體環境

硬體如何搭配,能做到比較高的成本效益,不存在短闆。合理的硬體搭配,對系統的穩定性也很關鍵。

1.CPU不是核數越高越好,成本效益才是關鍵。

      經常遇到很多的企業級客戶,他們機器配置非常高,CPU有128 VCore,256G記憶體,但是隻挂載了1塊8T的SATA硬碟,千兆網卡。

      這樣的機器配置比較适合計算密集型的業務,但是如果是IO密集型的業務的話,就會發現磁盤成為瓶頸,會發現磁盤使用率100%,網絡使用率100%,但是CPU隻用了不到5%。存在巨大的資源浪費。

      這種問題在Hadoop系統中尤為突出,如果是這樣的配置的話,很可能一個MapReduce程式就會導緻全部的磁盤與網絡都是使用率100%,這樣所有的心跳都發送不出來,而本身Hadoop又沒有很好的網絡限速機制,就會導緻DataNode與TaskManager陸續的因為心跳逾時而挂掉。

2.SAS、SATA與SSD 磁盤的選擇與對比

       IOPS (Input/Output Per Second)即每秒的輸入輸出量(或讀寫次數),是衡量磁盤性能的主要名額之一。IOPS是指機關時間内系統能處理的I/O請求數量,I/O請求通常為讀或寫資料操作請求。對于随機讀寫頻繁的應用,如OLTP(Online Transaction Processing),IOPS是關鍵衡量名額。

       吞吐量(Throughput),指機關時間内可以成功傳輸的資料數量。對于大量順序讀寫的應用,如VOD(Video On Demand),則更關注吞吐量名額。

       一般SSD的IOPS是普通磁盤的千倍以上,但是吞吐量隻是普通磁盤的2倍左右。是以如果我們的業務是順序讀寫偏多的則建議選用普通SAS盤(如存儲形業務,以及Hive的文本資料分析),但是如果我們的業務是随機讀寫偏多,那麼選擇SSD 更劃算(如采用列存儲的系統,以及YDB的索引系統)

       如下圖所示,普通磁盤的IOPS與SSD磁盤的性能相差懸殊,特别是企業級SSD磁盤,能相差千倍以上。

基于原版Hadoop的YDB部署 YDB依賴環境準備第五章非HDP版Hadoop基礎服務配置要點 第六章非HDP版本的YDB部署
基于原版Hadoop的YDB部署 YDB依賴環境準備第五章非HDP版Hadoop基礎服務配置要點 第六章非HDP版本的YDB部署

       吞吐量:連續讀寫速度,性能提升在2倍左右。

基于原版Hadoop的YDB部署 YDB依賴環境準備第五章非HDP版Hadoop基礎服務配置要點 第六章非HDP版本的YDB部署

3.SSD的顆粒請不要選擇TLC

TLC的壽命太短,雖然便宜,但是用不了幾個月就基本報廢,一般個人電腦使用。不适合企業級使用,成本效益較好的建議選用MLC顆粒。

SSD顆粒目前主要分三種:SLC、MLC和TLC

      SLC=Single-LevelCell,即1bit/cell,速度快壽命長,價格超貴(約MLC3倍以上的價格),約10萬次擦寫壽命 

       MLC=Multi-LevelCell,即2bit/cell,速度一般壽命一般,價格一般,約3000---10000次擦寫壽命 

       TLC=Trinary-LevelCell,即3bit/cell,也有Flash廠家叫8LC,速度相對慢壽命相對短,價格便宜,約500次擦寫壽命,目前還沒有廠家能做到1000次擦寫。

      簡單地說SLC的性能最優,價格超高。一般用作企業級或高端發燒友。MLC性能夠用,價格适中為消費級SSD應用主流,TLC綜合性能最低,價格最便宜。但可以通過高性能主要、主要算法來彌補、提高TLC閃存的性能。

4.延雲YDB建議的硬體配置

一、延雲YDB最低配置

1.記憶體:32G

2.磁盤:

             離線模式:至少2塊獨立的實體硬碟分别用于HDFS資料盤、系統盤。

             實時模式:至少3塊獨立的實體磁盤分别用于Kafka資料盤,、HDFS資料盤、系統盤

3.CPU:至少8線程(1顆,4核,8線程)

二、如下場景,延雲将不再提供安裝技術支援

1.低于最低配置要求的使用者。

2.32位系統的使用者:這類系統最大隻有4G記憶體。

三、延雲YDB高性能配置 (毫秒響應)

1.機器記憶體:128G

2.磁盤:企業級SSD,600~800G*12個磁盤

3.CPU:32線程(2顆,16核,32線程)

4.萬兆網卡

三、延雲YDB正常配置 (秒級響應)

1.機器記憶體:128G

2.磁盤:2T*12的磁盤

3.CPU:24線程(2顆,12核,24線程)

4.千兆網卡

二、磁盤如何挂載?

    1.邏輯卷的問題

      一般很多Linux的預設安裝,會将磁盤直接以邏輯卷的方式挂載,邏輯卷的優點是後期的擴容以及調整磁盤非常的友善,看着比RAID好用多了,但是預設的邏輯卷配置方式是隻有一塊盤在工作 ,其他幾塊盤都閑着,發揮不出來多塊盤的性能,也就是說如果在邏輯卷裡面挂了10塊盤,那麼預設的邏輯卷的配置,隻能發揮出一塊盤的性能。是以對于YDB系統來說,大家不要使用邏輯卷。

    2.關于RAID

      有些客戶比較擔心資料丢失,将磁盤做了RAID10或者RAID5,其實這樣是沒有必要的,因為本身預設配置Hadoop是有三份副本的,并不怕磁盤損壞。RAID10與RAID5會導緻磁盤容量隻有原先的一半,由于需要雙寫,磁盤整體吞吐量降低了一倍。而且RAID5一旦損壞了一塊磁盤,就需要通過奇偶校驗還原資料,讀的吞吐量直接降低到原先了五分之一,而且更換新盤後,通過校驗要還原原先盤的資料的時候,經常會發生雪崩現象,IO瞬間增大,導緻其他盤陸續的跟着挂掉。是以對于YDB系統來說,不推薦使用RAID 10或RAID5.還有一些客戶,會将所有的盤都做成一個完整的RAID0,RAID0的缺點就是一塊盤損壞,整個系統就壞掉,但是RAID0确實會比單塊磁盤速度好,是以如果能做raid0我更推薦2個盤組成一起做一個RAID0,而不是整體所有磁盤都做成一個RAID0.

    3.關于系統盤與資料盤

      好多客戶,在挂盤的時候,為了節省磁盤空間,更充分的利用資源,會将一個8T的實體磁盤劃分成兩個邏輯分區,一個邏輯分區作為系統盤,另一個邏輯分區作為資料盤。但是資料盤一般會比較繁忙的,但是由于他們底層都共用的是同一塊實體磁盤,就會導緻系統盤實際上也會特别繁忙,系統盤繁忙會導緻整個系統會變的非常的慢,執行任何Linux指令都很慢,Socket連接配接建立也緩慢,很多系統會是以而逾時斷線,是以延雲YDB建議作業系統要獨立一塊磁盤,資料盤不要與作業系統共用同一塊盤,否則資料盤很慢的時候,運作在作業系統上的軟體都跟着慢,ZooKeeper之類的服務也很容易挂掉。

      另外還有一部分客戶,可能因某種習慣,預設會給系統盤的跟目錄預留的存儲空間特别小,比如說隻預留了10~30個G的空間,這樣其實對大資料系統來說風險較大,以Ambari為例,他的log預設是記錄在/var/log下的,這30G的空間會很快的被LOG記滿,大家都知道一旦作業系統根目錄滿了意味着什麼? 将是所有服務不可用,這樣隐患太大了。是以延雲建議系統跟目錄盡量留大一點的磁盤空間,如200G,預設CentOS給配置設定50G空間也太小,如果Hadoop等日志沒有及時清理掉,将來隐患較大

    4.關于磁盤陣列與雲

      有相當一部分的客戶使用雲伺服器,将機器虛拟化後确實節省了很多的資源,提高了硬體的使用率。目前的雲伺服器有相當一部分的解決方案是采用外挂存儲的方式将磁盤統一的挂載到遠端的一個磁盤陣列上去。這個時候磁盤陣列是單點,一旦發生斷電或者磁盤陣列出現問題,因為Hadoop的三分副本都存儲在這一個磁盤陣列上,一但丢失就會導緻整個Hadoop叢集不可用。如果有條件,我更建議做多個磁盤陣列而不是一個磁盤陣列單點,這樣通過Hadoop的機架政策,可以将 Hadoop 的三份副本分别存儲在不同的磁盤陣列上,NameNode以及SNameNode也分别存儲在不同的磁盤陣列上,這樣即使其中一個磁盤陣列出現了故障,我們的Hadoop也能夠恢複服務,而且不丢資料。

      另外由于虛拟化以後,一個真實的實體機上面可能會開多個虛拟機,如果這個實體機硬體發生損壞,這個實體機上的虛拟機也有異常,三個副本都存儲在這台機器上的檔案的資料會丢失,延雲建議虛拟機廠商與Hadoop廠商協同,采用Hadoop機架技術,将位于同一實體機上的虛拟機标記在同一個機架上,以免造成資料丢失。

      虛拟化後也存在系統盤與資料盤的問題,雖然在虛拟機裡看到了系統盤與資料盤确實分離了,但是在實體機上有可能是在虛拟機A裡面的系統盤,又作為了虛拟機B的資料盤,這樣當虛拟機B的資料盤特别繁忙的時候,會造成虛拟機A的響應非常慢。針對這種情況延雲YDB建議,将實體機的磁盤分類,一些磁盤專門用于挂系統盤,一些磁盤專門用于挂資料盤,不允許交叉使用,即不允許一個實體盤即挂資料盤又被挂成系統盤

    5.将大磁盤空間的硬碟與小磁盤空間的硬碟混合挂載

      可能是處于曆史原因,部分客戶的系統上出現了大小盤混合挂載的情況,比如說10塊磁盤,有的是300G,有的是8T的磁盤,他們混搭在一起。但是目前的hadoop對這樣的盤支援的并不友好,會出現300G的硬碟已經滿了,8T的硬碟還沒使用到原先的十分之一的情況,針對這種情況,延雲建議資料盤盡量大小一樣,别出現有的盤很大,有的盤很小的情況。那種300G的磁盤還是留作作業系統盤為好。

三、作業系統如何選擇

1.延雲推薦使用CentOS 6.6,6.5的系統(請不要使用CentOS7)

2.盡量選擇安裝英文語言環境,中文版Ambari有時會有問題,。

3.安裝桌面版,請别安裝最簡版。

4.配置系統的yum源,如果部署Ambari會用到。

      開源世界确實好,選擇很多,但是意味着也坑很多。

      對于YDB來說,是不挑作業系統版本的,隻要您的系統能安裝上Hadoop,那麼YDB一般都能運作起來。甚至有些同學還在MAC上調試YDB。但是如果您是要運作在生産系統上,作業系統的選擇就尤為重要了。

      CentOS7筆者在其中一個客戶下踩了一個巨坑,一個核心的BUG導緻系統不斷重新開機,是以對比較新的核心版本還是比較畏懼,是以筆者不是特别推薦大家使用比較新的系統,建議大家選用經過較多生産系統上驗證過的穩定版本。如果非要推薦一個版本,那麼延雲推薦使用Centos 6.6的系統,因為延雲的日常開發與測試均在這個版本上進行。

      CentOS7我們當時踩的坑叫Transparent Huge Pages (THP)的BUG,在負載高的時候會造成機器的反複重新開機,并且從HDP官方也證明了這個BUG,http://www.cloudera.com/documentation/enterprise/latest/topics/cdh_admin_performance.html,但是我們按照上面的方法進行設定後,機器不重新開機了,但是依然發生偶爾斷網的情況。

四、作業系統設定

1.Ulimit配置

      作業系統預設隻能打開1024個檔案,打開的檔案超過這個數發現程式會有“too many open files”的錯誤,1024對于大資料系統來說顯然是不夠的,如果不設定,基本上整個大資料系統是“不可用的”,根本不能用于生産環境。

      配置方法如下:

echo "*  soft    nofile  128000" >> /etc/security/limits.conf

echo "*  hard    nofile  128000" >> /etc/security/limits.conf

echo "*  soft    nproc  128000" >> /etc/security/limits.conf

echo "*  hard    nproc  128000" >> /etc/security/limits.conf

cat /etc/security/limits.conf

sed -i 's/1024/unlimited/' /etc/security/limits.d/90-nproc.conf

cat/etc/security/limits.d/90-nproc.conf

ulimit -SHn128000

ulimit -SHu 128000

2.Swap的問題

      在10~20年前一台伺服器的記憶體非常有限,64m~128m,是以通過swap可以将磁盤的一部分空間用于記憶體。但是現今我們的伺服器記憶體普遍達到了64G以上,記憶體已經不再那麼稀缺,但是記憶體的讀取速度與磁盤的讀取相差倍數太大,如果我們某段程式使用的記憶體映射到了磁盤上,将會對程式的性能照成非常嚴重的影響,甚至導緻整個服務的癱瘓。對于YDB系統來說,要求一定要禁止使用Swap.

      禁用方法如下,讓作業系統盡量不使用Swap:

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

sysctl -p

sysctl -a|grep swappiness

3.網絡配置優化

echo " net.core.somaxconn = 32768 " >> /etc/sysctl.conf

sysctl -p

sysctl -a|grepsomaxconn

4.SSH無密碼登入

安裝 Hadoop與Ambari均需要無密碼登入

設定方法請參考如下指令

ssh-keygen

cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

chmod 700 ~/.ssh

chmod 600 ~/.ssh/authorized_keys

ssh-copy-id root@ydbslave01

ssh-copy-id root@ydbslave02

…..

5.關閉防火牆

iptables -P INPUT ACCEPT

iptables -P FORWARD ACCEPT

iptables -P OUTPUT ACCEPT

chkconfig iptables off

/etc/init.d/iptables stop

service iptables stop

iptables -F

6.配置機器名,以及hosts域名解析

hostname ydbmaster

vi /etc/sysconfig/network

vi /etc/hosts

切記 hosts檔案中 不要将localhost給注釋掉,并且配置完畢後,執行下 hostname -f 看下 是否能識别出域名

7.setenforce與Umask配置

•setenforce

setenforce 0

sed -i 's/enabled=1/enabled=0/' /etc/yum/pluginconf.d/refresh-packagekit.conf

cat /etc/yum/pluginconf.d/refresh-packagekit.conf

•Umask

umask 0022

echo umask 0022 >> /etc/profile

8.檢查/proc/sys/vm/overcommit_memory的配置值

   如果為2,建議修改為0,否則有可能會出現,明明機器可用實體記憶體很多,但JVM确申請不了記憶體的情況。

9.語言環境配置

先修改機器的語言環境

#vi /etc/sysconfig/i18n

SUPPORTED="zh_CN.GB18030:zh_CN:zh:en_US.UTF-8:en_US:en"

SYSFONT="latarcyrheb-sun16"

然後配置環境變量為utf8

echo "export >> ~/.bashrc

source ~/.bashrc

export|grep LANG

10.配置時間同步

      Hadoop,YDB等均要求機器時鐘同步,否則機器時間相差較大,整個叢集服務就會不正常,是以一定要配置。建議配置NTP服務。

叢集時間必須同步,不然會有嚴重問題

參考資料如下:http://www.linuxidc.com/Linux/2009-02/18313.htm

11.JDK安裝部署

      YDB支援JDK1.7,JDK1.8,為了便于管理和使用,建議使用YDB随機提供的JDK1.8

建議統一安裝到/opt/ydbsoftware路徑下。

12.環境變量

請大家千萬不要在公共的環境變量配置HIVE、Spark、LUCENE、HADOOP等環境變量,以免互相沖突。

13.請檢查盤符,不要含有中文

      尤其是Ambari,有些時候,使用U盤或移動硬碟複制軟體,如果這個移動硬碟挂載點是中文路徑,這時在安裝Ambari的時候會出現問題,一定要注意這個問題。

14.檢查磁盤空間,使用率不得超過90%

      預設Yarn會為每台機器保留10%的空間,如果剩餘空間較少,Yarn就會停掉這些機器上的程序,并出現Container released on a *lost* node錯誤。

15.關鍵日志,定時清理,以免時間久了磁盤滿了

如可以編輯crontab -e 每小時,清理一次日志,尤其是hadoop日志,特别占磁盤空間

0 */1 * * * find /var/log/hadoop/hdfs  -type f -mmin +1440 |grep -E "\.log\." |xargs rm -rf

第五章非HDP版Hadoop基礎服務配置要點

一、Hadoop服務-注意事項

1)NameNode:是HDFS的主節點,是Hadoop最至關重要的服務,一旦出問題,整個叢集都不可用,NameNode的editlog與image目錄,一定要配置多盤,設定備援,如果有必要,配置RAID 10。

2)SNameNode:是Namenode的備份節點,一旦NameNode機器損壞,可以通過SNameNode恢複資料,故YDB要求一定要啟動SNameNode服務,并且SNameNode不可與NameNode位于同一個實體機上 。

3)雙NameNode HA:為了高可用,有些客戶會啟用HA,延雲不建議啟用HA,如果必須啟用一定要確定首節點為Active狀态,而不是Stand by狀态,否則整個叢集的NameNode響應會比較慢,進而影響整個叢集的響應速度。

4)一定要確定dfs.datanode.data.dir與yarn.nodemanager.local-dirs的目錄配置的是所有的資料盤,而不是配給了系統盤,特别多的使用者在初次安裝Hadoop的時候忘記配置這個,導緻預設将資料都存儲在了/tmp目錄。另外系統盤一定要與資料盤分離,否則磁盤特别繁忙的時候會造成作業系統很繁忙,ZooKeeper之類的容易挂掉。

5)規劃好Hadoop的logs目錄,盡量分給一個大點磁盤存儲空間的目錄,否則經常會出現導入幾十億資料後,logs目錄将系統/var/log給撐滿,占用率100%

6)確定将來準備配置設定給YDB的HDFS目錄有讀寫權限,建議第一次新手安裝,取消HDFS的權限驗證,配置dfs.permissions.enabled 為false,并重新開機叢集。

7)Hadoop的logs目錄要配置上定期清理,以免時間久了,硬碟被撐爆。

8)確定HDFS安裝成功,一定要手工通過hadoop  -put指令,上傳一個檔案試一試。

9)打開8088,檢查Yarn是否啟動成功, VCores Total \Memory Total 配置設定的是否正确。經常有朋友忘記更改Yarn的預設配置導緻一台128G記憶體的機器最多隻能啟動2個程序,隻能使用8G記憶體。

10)yarn.nodemanager.resource.memory-mb用于配置Yarn目前機器的可用記憶體,通常配置目前機器剩餘可用記憶體的80%.

11)yarn.scheduler.minimum-allocation-mb為一個Yarn container申請記憶體的最小計費機關,建議調小一些,如128,讓計費更精準.

12)yarn.scheduler.maximum-allocation-mb為一個Yarn container可以申請最大的記憶體,建議調整為32768 (不一定真用到這些)

13)不建議啟用CGROUPS,進行CPU隔離,對于即席系統來說,盡量充分利用資源。

14)yarn.nodemanager.resource.cpu-vcores 目前機器可以啟動的Yarn container的數量,建議配置為目前機器的cpu的線程數的80%。

15)yarn.scheduler.maximum-allocation-vcores配置的稍微大一些,以便單個container能夠多啟動一些線程。

16)yarn.nodemanager.pmem-check-enabled與yarn.nodemanager.vmem-check-enabled一定要都配置成false,因為1.6版本的spark有BUG,會使用較多的堆外記憶體,Yarn會kill掉相關container,造成服務的不穩定。

17)檢查mapreduce.application.classpath 裡面的值是否有配置的jar包并不存在,典型的情況下是找不到lzo的包(許多廠商的安裝部署會配置該參數)。如果有的jar包找不到,建議注釋掉相關依賴,否則可能會造成YDB啟動失敗,如預設的HDP叢集就要将其中的lzo的配置給注釋掉/usr/hdp/${hdp.version}/hadoop/lib/hadoop-lzo-0.6.0.${hdp.version}.jar;如果是紅象雲騰Power版本在最後加上這個 /usr/crh/4.1.5/hadoop/share/hadoop/tools/lib/*

18)為了便于查找問題,我們一般保留7天的Hadoop日志,可以配置Yarn日志清理yarn.nodemanager.delete.debug-delay-sec     為  604800 (7天)

19)調整dfs.datanode.max.transfer.threads的值,預設4096太小,建議調整為10240

20)調整ipc.server.listen.queue.size為32768

21)調整yarn.resourcemanager.am.max-attempts的值為10000000,預設的2次太小,客戶測試過程反複的kill就會導緻整個任務失敗。

二、Spark 需要使用延雲提供的spark版本

1)無需配置,隻需要解壓開放到指定目錄即可,我們一般解壓到/opt/ydbsoftware/spark

2)請大家不要啟動spark服務,YDB本身會自己調用Spark啟動服務,無須我們額外為Spark啟動服務。

三、ZooKeeper服務注意事項

第一:要探測ZooKeeper的2181端口是否啟動 可以通過netstat –npl|grep 2181來檢視

第二:ZooKeeper的資料目錄别與HDFS的資料盤放在一起,盡量獨立一個磁盤,或者放在系統盤,否則資料盤特别繁忙的時候ZooKeeper本身非常容易挂掉。如果機器富餘,建議将ZK單獨部署一個叢集,不要混搭,如果因機制資源有限,必須混搭,請将zookeeper部署在通常來說負載不很很高的Master節點。

第三:ZooKeeper的日志清理要打開,否則會出現系統運作幾個月後,ZooKeeper所在的磁盤硬碟變滿的情況,将zoo.cfg裡的這兩個配置項注釋開即可:

autopurge.purgeInterval=24

autopurge.snapRetainCount=30

第四:YDB使用的ZK的版本一定要與ZK的版本一緻,如果不一緻請更換ya100/lib下的zookeeper相關jar包。

四、Kafka注意事項

如果kafka配置的不好, 會發生比較嚴重的資料傾斜,而且在壓力較大的情況會導緻資料丢失。是以跟Kafka有關的如下配置,請一定要認真閱讀

注意kafka server 的num.partitions一定要大于總分片數的兩倍,否則有的程序消費不到資料,導緻資料傾斜。YDB的總分片數為YA100_EXECUTORS*(spark.executor.max.usedcores);

注:spark.executor.max.usedcores預設(沒有配置)為2個,表示每個程序會啟動2個分片。

l資料丢失根本問題在于磁盤與網絡是否繁忙!!!!!!

如果磁盤長時間使用率100%,必出現丢資料,會出現如下異常,配置的kafka retry機制無效

基于原版Hadoop的YDB部署 YDB依賴環境準備第五章非HDP版Hadoop基礎服務配置要點 第六章非HDP版本的YDB部署

l如果我們先前采用的send方法沒使用callback,一旦消息發送失敗,我們沒有處理異常的話,這個消息就丢了。

這個問題如何解決?

1)如果有條件,Kafka盡量獨立叢集,最低要求也一定要獨立磁盤,并且寫入限速

獨立磁盤是解決問題的根本,磁盤很繁忙的情況下,broker出錯的機率很大。

2)send 裡面的callback,如果是異常一定要自己做容錯處理

發現send函數裡的callback,一定要對Exception exception不是null的情況做重試處理,一定要處理,根據判斷重試幾次。

基于原版Hadoop的YDB部署 YDB依賴環境準備第五章非HDP版Hadoop基礎服務配置要點 第六章非HDP版本的YDB部署

3)調整kafka的參數

a)建議在Producter端增加如下參數

        props.put("compression.type", "gzip");

        props.put("linger.ms", "50");

        props.put("acks", "all");

        props.put("retries ", 30);

        props.put("reconnect.backoff.ms ", 20000);

        props.put("retry.backoff.ms", 20000);

b)在Server端的broker增加如下配置

基于原版Hadoop的YDB部署 YDB依賴環境準備第五章非HDP版Hadoop基礎服務配置要點 第六章非HDP版本的YDB部署
基于原版Hadoop的YDB部署 YDB依賴環境準備第五章非HDP版Hadoop基礎服務配置要點 第六章非HDP版本的YDB部署
基于原版Hadoop的YDB部署 YDB依賴環境準備第五章非HDP版Hadoop基礎服務配置要點 第六章非HDP版本的YDB部署

第六章非HDP版本的YDB部署

一、安裝前的準備

請參考第三章基本環境注意事項,第四章的依賴的服務注意事項,準備基礎環境,這個很重要。

二、YDB軟體下載下傳

從http://url.cn/42R4CG8擷取延雲軟體

1)下載下傳延雲YDB

2)延雲YDB提供的Spark

注意一定要使用延雲提供的Spark,不能從其他地方下載下傳

該Spark延雲修正了一些BUG,以及在SQL解析上做了處理

3)JDK1.8

基于原版Hadoop的YDB部署 YDB依賴環境準備第五章非HDP版Hadoop基礎服務配置要點 第六章非HDP版本的YDB部署
基于原版Hadoop的YDB部署 YDB依賴環境準備第五章非HDP版Hadoop基礎服務配置要點 第六章非HDP版本的YDB部署

三、特殊版本的Spark的編譯

       如果我們的Hadoop版本比較特殊,大家可以從延雲下載下傳Spark源碼執行進行編譯。

編譯示例如下:

修改源碼包裡面的ydb.combile.sh,将裡面的hadoop改成我們對應的版本。

基于原版Hadoop的YDB部署 YDB依賴環境準備第五章非HDP版Hadoop基礎服務配置要點 第六章非HDP版本的YDB部署

然後直接運作 sh ./ydb.compile.sh 即可,編譯時間取決于我們的網絡,首次編譯時間估計會非常長,可以先下載下傳延雲提供的repository.tar.gz,以減少通路國外網絡的下載下傳時間。

四、軟體解壓

解壓到/opt/ydbsoftware目錄下,最後可以看到目錄結構是這樣的

conf目錄是YDB的所有配置檔案,bin目錄是YDB的執行檔案

基于原版Hadoop的YDB部署 YDB依賴環境準備第五章非HDP版Hadoop基礎服務配置要點 第六章非HDP版本的YDB部署

五、配置conf目錄下的ya100_env.sh環境變量

1.基本環境配置

export HADOOP_CONF_DIR=/etc/hadoop/conf

export HADOOP_HOME=/usr/hdp/current/hadoop-client

export JAVA_HOME=/usr/jdk64/jdk1.8.0_60

export SPARK_HOME=/root/software/spark-1.6.1

注意:配置過後大家一定要手工驗證下,相關目錄的配置檔案是否真的存在

2.配置記憶體與啟動的并發數

#為啟動的程序數量,切記不要超過Yarn總的VCores的數量-1

#建議每台機器配置CPU線程數的一半,如12個;

#如果有3台機器,每台機器配置12個的話那麼下面這項的值要寫36,不要隻寫12

export YA100_EXECUTORS=12

#啟動的程序,每個給配置設定多少記憶體

#YA100_EXECUTORS*YA100_MEMORY的大小建議為yarn總記憶體的3/5(剩下的留給作業系統)

#關于記憶體控制參數的詳細說明,請閱讀example下的《3.大家需要了解的幾個記憶體控制的參數.txt》說明

#正常128G記憶體的機器,建議配置為6000m~7000m

export YA100_MEMORY=6000m

#每個程序内啟動的線程數,一般不需要修改

#配置值不可超過Yarn的yarn.scheduler.maximum-allocation-vcores的值

#建議預設配置為5~9

export YA100_CORES=5

#ydb 的JDBC接口程式配置設定的記憶體,建議6000m以上

export YA100_DRIVER_MEMORY=6000m

基于原版Hadoop的YDB部署 YDB依賴環境準備第五章非HDP版Hadoop基礎服務配置要點 第六章非HDP版本的YDB部署

六、配置conf目錄下的ydb_site.yaml環境變量

該檔案的配置非常容易出錯,要注意如下幾點:

1.檔案格式必須為UTF8格式,切記切記

2.每個配置項的開頭必須有個空格,而不TAB

3.配置檔案中别出現TAB

4.注意每個KEY : VALUE 之間是有一個空格的,如果value是字元串類型,要用雙引号括起來

配置項說明如下:

1.配置 YDB的存儲路徑的配置 ydb.hdfs.path

注意YDB的存儲路徑與ya100的存儲路徑不是一個,要分别配置成不同的路徑,不能重複

ya100的預設存儲路徑在conf目錄下的hive-site.xml中的hive.metastore.warehouse.dir

Ya100的每張表的存儲路徑也可以再建立表的時候由location來指定。

2.配置Ydb在實時導入過程中,所使用的臨時目錄ydb.reader.rawdata.hdfs.path

3.配置ydb http ui服務的端口 ydb.httpserver.port 預設為1210

4.配置ydb依賴的zookeeper:storm.zookeeper.servers 與 storm.zookeeper.root

基于原版Hadoop的YDB部署 YDB依賴環境準備第五章非HDP版Hadoop基礎服務配置要點 第六章非HDP版本的YDB部署

七、其他ya100/conf目錄下的配置檔案的說明

hive-site.xml hive表的配置,如果想要更改Hive的一些配置,如将Hive的中繼資料寫入到資料庫裡,可修改此檔案。

spark-defaults.conf 用于配置Spark,如果需要修改Spark的預設排程規則,可以修改此配置。

init.sql 為ya100啟動時候的初始化方法,如果我們的業務需要自定義UDF,可以考慮将自定義UDF語句放到這裡,通過init.sh來執行

driver.log.properties為接口程式的log4j的配置,預設日志記錄在logs目錄下

worker.log.properties為ya100的工作程序的log4j的配置,預設記錄在每台機器的Yarn的工作目錄下。如果不想Yarn清理掉,可以通過改檔案改變日志的存儲的路徑,為了日常運維調試的友善,我們都建議修改,但一定要注意每台機器目錄的權限。

八、開始部署延雲YDB-服務的啟動與檢查

進入bin目錄,執行chmod a+x *.sh

第一:ydb

./restart-all.sh 或 ./start-all.sh

第二:spark 服務檢查:

1.tail  -f ../logs/ya100.log 看是否有報錯,當出現如下的日志,表示啟動成功

2.打開yarn的8088頁面,看啟動的container數量以及記憶體的時候是否正确

3.看下面是否有ya100 on spark的任務,點選對應的Application Master看是否能打開Spark的UI頁面

基于原版Hadoop的YDB部署 YDB依賴環境準備第五章非HDP版Hadoop基礎服務配置要點 第六章非HDP版本的YDB部署

第三:YDB服務檢查

1.通過浏覽器打開:1210頁面,看是否能打開

2.點開“work工作程序清單”看啟動的worker數量是否與在ya100_env.sh裡配置的YA100_EXECUTORS數量一緻

第四:服務的停止

./stop-all.sh

繼續閱讀