使用Azure Blob優化Hadoop集群存儲成本


  大數據與雲計算的關系就像一枚硬幣的正反面一樣密不可分,大數據是雲計算非常重要的應用場景,而雲計算則為大數據的處理和數據挖掘都提供了最佳的技術解決方案。雲計算的快速供給、彈性擴展以及按用量付費的優勢已經給IT行業帶來了巨大變化,它已經日益成為企業IT的首選。在讓企業通過數據洞察提升效率和效益的同時,如何降低大數據平台成本也是IT部門經常關心的問題。

 

  為什么用Azure Blob作為Hadoop分布式文件系統管理大數據?

 

  HDFS是Hadoop集群分布式文件系統,它將文件分割為數據塊Block,默認設置為64M,存儲於數據節點DataNode中。為了降低機架失效所帶來的數據丟失風險,HDFS會保存3份副本。公有雲提供的存儲,無論是磁盤存儲還是對象存儲,都是通過多份冗余來提高數據的可靠訪問和安全,通常是3份。講到這里可能大家已經發現,基於公有雲虛擬機和磁盤構建的Hadoop集群,存儲層面將會疊加產生更多份的冗余;同時磁盤存儲相較於Blob對象存儲價格要高,因此這種方案的總體成本會比較高。如果能采用Blob對象存儲作為Hadoop集群文件系統管理大量數據則可以大大降低成本。

  Hadoop能不能用雲計算對象存儲作為分布式文件系統?可以。從2015年開始,微軟Azure向Apache Hadoop社區提供了hadoop-azure模塊,Hadoop可以通過此雲存儲連接器集成Azure Blob存儲(包括Azure Data Lake),使其像用HDFS一樣存儲和管理海量大數據,同時獲得比較低廉的成本。除了Apache Hadoop,合並之后的Cloudera和Hortonworks旗下的CHD和HDP都很早就支持這一特性。Hadoop通過WASB協議訪問Azure Blob,通過ADLS協議訪問Azure Data Lake。Azure HDInsight服務是微軟與Hortonworks合作已久的全托管大數據分析服務,其自身也是用Azure Blob作為默認文件系統。

 

 

 

除了Azure Blob,AWS S3也可以作為Hadoop的分布式文件系統,GCP目前處於技術預覽階段。

 

下面通過HDP 2.6.5為例,簡要介紹基於Azure Blob + VM搭建Hadoop集群方案。

 

1. 安裝HDP 2.6.5

 

我們使用Ambari來安裝配置HDP集群,步驟如下:

第一步:通過Azure ARM模板安裝配置一個Ambari VM和若干個Hadoop VM. 這里要用到Azure CLI環境,請根據文檔自行安裝。

 

$ az group create -n rg-ryhdp01 -l westus2

$ az group deployment create -g rg-ryhdp01 --template-uri https://raw.githubusercontent.com/yongboyang/arm-templates/master/deployhdp26/azuredeploy.json

 

當虛擬機創建結束后,自定義腳本會在Ambari Server VM上執行如下操作:

. 下載Ambari Server軟件包,並安裝在Ambari VM

. 在所有部署VM的/etc/hosts中增加 IP 地址、FQDN和主機名

. 禁用所有VM的 iptables 和 Transparent Huge Page;iptables開啟會導致服務不能啟動

. 配置 ssh 密鑰免密登錄

 

 

第二步:使用Ambari 部署HDP 2.6.5集群

當ARM模板部署結束后,登錄Ambari管理門戶 http://ry-ambarisrv-n2.westus2.cloudapp.azure.com:8080/ 用戶密碼都是:admin

 

 

 

登錄后點擊 “Launch Install Wizard” 進入安裝界面。

 

 

 

 

 

 

通過ssh登錄 ry-ambarisrv-n2.westus2.cloudapp.azure.com,獲取FQDN服務器列表以及私鑰。用戶密碼:linuxadmin/MSLovesLinux!

 

$ sudu -s

$ cat /etc/hosts

$ cat /root/.ssh/id_rsa

 

將相關信息填寫至安裝頁面,然后一路默認向下即可。過程中需要填寫幾個元數據服務管理和用戶的密碼。

 

 

 

 

 

 2. 修改參數,配置HiveHBase使用Azure Blob

創建一個GPv2存儲賬號,名稱為:ryhdp。實際生產要考慮容量和性能,根據存儲賬號配額限制來使用一個或多個存儲賬號。

在Ambari管理門戶中,選擇HDFS->Configs->Advanced->Custom core-site,

#配置 HDFS Custom core-site

按照命名規則增加存儲賬號和訪問密鑰,fs.azure.account.key.<account name>.blob.core.windows.net=<key>,如果賬號位於Azure中國,則使用Azure China對應域名fs.azure.account.key.<account name>.blob.core.chinacloudapi.cn=<key>

這里配置如下(可以增加多個存儲賬號):

fs.defaultFS=wasb://data@ryhdp.blob.core.windows.net

fs.azure.account.key.ryhdp.blob.core.windows.net=exyVpVnuBXXKcilWi2KBrCNtm9bGsyHbKsu1hdgNkJePqjQ+sDsllOoAJhR0MyqpokC2AFNpC256PkVQ8VJgQ==

fs.azure.page.blob.dir=/WALs,/oldWALs

fs.azure.page.blob.size=262144000

fs.azure.page.blob.extension.size=262144000

 

Azure Blob分Block Blob和Page Blob,二者不同,適用於不同場景。Block Blob為默認類型,適用於Hive, Pig,Map/Reduce任務等,每個文件最大200GB,單個文件吞吐帶寬60MB/s;Page Blob最大可以為1TB,適合隨機讀寫,適合HBase WAL。這里的fs.azure.page.blob.* 參數是用於配置Page Blob,HBase會將WAL和oldWAL日志寫入page blob。默認是每個RegionServer有1個WAL,生產環境還可以根據需要通過配置hbase.wal.provider=multiwall 使用多個管道來並行寫入多個WAL流,增加寫入期間的總吞吐量。

#配置 hive-site.xml

fs.azure.account.key.ryhdp.blob.core.windows.net=nz3iBFEiW9dG+cfVut65cLV8m3ISMndYXUbvIgJZyl4WcqGypPzkq36sZQdCbaSV/kLoCD5apbrWvOUdl8mLxQ==

 

[hbase-site.xml]

hbase.rootdir=wasb://hbase@ryhdp.blob.core.windows.net/

 

然后重啟HDFS,Hive和HBase服務。

 

 3. 驗證

#通過HDFS 驗證

設置fs.defaultFS=wasb://data@ryhdp.blob.core.windows.net,Hadoop FS將Azure Storage作為默認文件系統,因此hdfs dfs -ls / 查詢結果為Azure Blob。

 

 

 

 

 

 

#通過Hive View驗證工作正常,然后到存儲賬號中檢查文件類型

CREATE EXTERNAL TABLE t1 (t1 string, t2 string, t3 string, t4 string)

ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' STORED AS TEXTFILE

LOCATION 'wasb://data@ryhdp.blob.core.windows.net/t1';

load data inpath 'wasb://data@ryhdp.blob.core.windows.net/table1.csv' into table t1;

SELECT * FROM t1

 

 

 

# 通過HBase Shell驗證工作正常,然后到存儲賬號中檢查文件類型

create 'emp','personal data','professional data'

put 'emp','1','personal data:name','raju'

put 'emp','1','personal data:city','hyderabad'

put 'emp','1','professional data:designation','manager'

put 'emp','1','professional data:salary','50000'

scan 'emp'

get 'emp', '1'

 

 

 

 

 

 

總結:

通過VM自建Hadoop集群,采用Azure Blob或Azure Data Lake管理大數據可以獲得更高的性價比。

 

 

附錄:

https://blogs.msdn.microsoft.com/cindygross/2015/02/03/why-wasb-makes-hadoop-on-azure-so-very-cool/

https://docs.microsoft.com/en-us/azure/hdinsight/hdinsight-hadoop-use-blob-storage

 


免責聲明!

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



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