Hadoop Ecosystem解决方案---数据仓库
個(gè)人總結(jié)的一套基于hadoop的海量數(shù)據(jù)挖掘的開源解決方案.
?
BI系統(tǒng):
Pentaho
pentaho是開源的BI系統(tǒng)中做得算頂尖的了.
提供的核心功能如下:
??? 報(bào)表功能: 可視化(client, web)的報(bào)表設(shè)計(jì).
??? 分析功能: 可以生成分析視圖,作數(shù)據(jù)作動(dòng)態(tài)分析.
??? Dashboard功能: 可以定制動(dòng)態(tài)圖表(image/flash)頁面.
??? 調(diào)度功能: 可對(duì)指定的任務(wù)進(jìn)行crontab式調(diào)度. e.g.: 定期發(fā)送日/周/月報(bào)
??? 工作流: 任意組合復(fù)雜的任務(wù)流程.
??? ETL: 原生提供在各種數(shù)據(jù)庫之間進(jìn)行數(shù)據(jù)提取/轉(zhuǎn)換/導(dǎo)入,可以自行擴(kuò)展數(shù)據(jù)源.
??? webservice接口: 可由任意外部程序進(jìn)行調(diào)用.可以很好的結(jié)合進(jìn)SOA架構(gòu).
?
?
海量數(shù)據(jù)收集系統(tǒng)
??? 推薦我的開源項(xiàng)目Cloudscribe: http://code.google.com/p/cloudscribe.
??? 特點(diǎn): CAP特征: 弱C強(qiáng)A強(qiáng)P.
??? 與zookeeper集成,統(tǒng)一的組管理功能.
?
?
數(shù)據(jù)倉庫
Hive VS. Cloudbase VS. Pig
Pig:
??? 優(yōu)點(diǎn): 特定場(chǎng)景下使用性能較好.發(fā)展趨勢(shì)良好
??? 缺點(diǎn): 生僻的語法難以入手.
Cloudbase:
??? 缺點(diǎn): 設(shè)計(jì)過于簡單,性能一般.
??? 優(yōu)點(diǎn): 完全遵照SQL規(guī)范.比較容易上手.適合入門級(jí)使用.
Hive:
??? 優(yōu)點(diǎn): 設(shè)計(jì)較好.關(guān)注點(diǎn)分離到位.并在不斷演化中.發(fā)展趨勢(shì)良好
??? 缺點(diǎn): 稍微有別正統(tǒng)SQL.
?
綜合來講,個(gè)人推薦Hive.
?
基礎(chǔ)存儲(chǔ)和計(jì)算框架
Hadoop MapReduce:
??? 如果選擇Hive, 就基本綁定了Hadoop MapReduce.
?
Hadoop HDFS VS KFS
??? KFS采用C++實(shí)現(xiàn).HDFS采用Java,與Hadoop整個(gè)生態(tài)系統(tǒng)結(jié)合緊密. 從效率上來講, KFS要略勝一籌.
?
?
綜合考慮,個(gè)人還是推薦HDFS.
?
Hadoop當(dāng)前有3種版本:
??? 官方版本 & Yahoo版本 & Cloudera版本
?
個(gè)人推薦熟手研究并采用Cloudera的版本. Cloudera的版本提供了一些很好的拓展機(jī)制.并且也是開源的.
?
?
管理平臺(tái)
??? 推薦cloudera Hadoop desktop.
??? 它提供了一個(gè)針對(duì)hadoop的統(tǒng)一管理平臺(tái). 可基于WEB進(jìn)行文件系統(tǒng)操作,MapReduce Job管理,提交,瀏覽. 還有監(jiān)控圖表功能.
?
監(jiān)控平臺(tái)
??? 推薦采用Ganglia對(duì)hadoop進(jìn)行監(jiān)控.結(jié)合Nagios進(jìn)行告警.
?
?
?
?
拓展話題
關(guān)于hadoop的部署:
??? 分為兩種情況:
??????????? 即時(shí)架構(gòu):
??????????????? 可采用捆綁VM的方式,例如Cloudera為Amazon EC2制作的AMI. 此方案適合instant架構(gòu), 適合在租用計(jì)算的場(chǎng)景. 數(shù)據(jù)不是locality的.
??????????? 穩(wěn)定架構(gòu):
??????????????? 固定的集群,locality計(jì)算.部署方案:
??????????????????? 1). 可以針對(duì)不同配置采用帶本地緩存+autofs的NFS統(tǒng)一部署方案.
??????????????????? 2). 軟件分發(fā).
??????????? 配置注意事項(xiàng):
??????????????? namenode: 帶RAID,多磁盤存儲(chǔ)文件系統(tǒng)元信息.
??????????????? secondary namenode與namenode等同配置(尤其是內(nèi)存).
??????????????? namenode與jobtracker分離.
??????????????? datanode: 不帶RAID, 雙網(wǎng)卡: 一個(gè)用于內(nèi)部數(shù)據(jù)傳輸,一個(gè)用于外部數(shù)據(jù)傳輸.
??????????????? tasktracker與datanode配對(duì).
?
?
hadoop的運(yùn)營核心問題
??? Part1: HDFS系統(tǒng)
??????? namenode:
??????????? 資源限制:
??????????????? 由于文件系統(tǒng)元信息是全量存放在namenode.所以文件數(shù)量是有上限的.
??????????????? 同時(shí),某datanode意外失效后,其所有block都會(huì)在namenode中待備份隊(duì)列中排隊(duì),也會(huì)臨時(shí)占用很多內(nèi)存.
?
??????????? 負(fù)載限制:
??????????????? 隨著集群規(guī)模的增長帶給namenode更多負(fù)載:
??????????????????? 1. client與namenode之間的元信息操作;
??????????????????? 2. namenode與datanode之間的通信.
??????????????? 所以說,集群規(guī)模也是有上限的.??
???????
??????????? 對(duì)于龐大的hadoop集群,重啟恢復(fù)時(shí)間也會(huì)非常緩慢, 所以, 盡量存儲(chǔ)較大的文件.
?
??????????? 解決方案:
??????????????? 垂直擴(kuò)展:
??????????????????? 1. 配置更好的硬件,網(wǎng)絡(luò). 優(yōu)化單機(jī)程序性能.(Google GFS也做過一段這樣的努力).
??????????????????? 2. 功能垂直分離: 通過功能垂直劃分來構(gòu)建多個(gè)專有master.(Google GFS同樣做過類似方案)
??????????????????? 垂直擴(kuò)展總終究會(huì)面臨極限.
??????????????? 水平擴(kuò)展:
??????????????????? 通過在master前端引入一個(gè)Router, 來虛擬出一個(gè)更抽象的文件系統(tǒng)namespace, Router后端掛接多個(gè)Hadoop Cluster.(Google GFS也作過類似方案).
?
??????????? namenode的單點(diǎn)失效(SPOF)問題:
??????????????? 解決方案
??????????????????? namenode多元數(shù)據(jù)目錄, 配備secondary namenode:
??????????????????????? 一致性: 延遲一致.
??????????????????????? 可靠性: 有少許丟失.
??????????????????????? failover: 手工.
??????????????????????? 可用性: 故障恢復(fù)時(shí)間: 1 ~ 2小時(shí).
??????????????????????? 性能: 無損失
??????????????????????? 復(fù)雜性: 低
??????????????????? Linux Heartbeat +?TCP Bonding + DRBD網(wǎng)絡(luò)RAID:
????????????一致性: 可調(diào)節(jié),可完全一致.
????????????可靠性: 可調(diào)節(jié),可完全一致.
????????????failover: 自動(dòng).
????????????可用性: 自動(dòng)切換. 故障恢復(fù)時(shí)間: 0~30min
????????????性能: 有損
??????????????????????? 復(fù)雜性: 中等
??????????????????? Paxos分布式仲裁方案(hadoop + bookkeeper + zookeeper):
??????????????????????? 一致性: 理論完全一致.
????????????可靠性: 理論完全一致.
????????????failover: 自動(dòng).
????????????可用性: 自動(dòng)切換. 故障恢復(fù)時(shí)間: 0~30min
??????????? 性能: 較少損
????????????????????????復(fù)雜性: 高
?
??????? DataNode:
??????????? 文件存儲(chǔ)目錄結(jié)構(gòu), IO Handler數(shù)量, ulimit設(shè)置等.
?
??? Part 2: MapReduce
??????? 意外非預(yù)期故障導(dǎo)致Job失效:
??????? 磁盤滿,只讀磁盤等. 解決方式是采用0.21之后的health.check腳本進(jìn)行定期檢測(cè)和黑名單上報(bào).
??????????????? Job恢復(fù): 采用0.19之后原生提供的job recover機(jī)制.
??????? JobTracker單點(diǎn)問題:
??????? hadoop后續(xù)版本準(zhǔn)備把JobTracker與zookeeper結(jié)合.
?
?
高級(jí)優(yōu)化措施
??? 改造KFS,采用UDT傳輸協(xié)議.加速高帶寬時(shí)延積下的網(wǎng)絡(luò)傳輸.
轉(zhuǎn)載于:https://www.cnblogs.com/OnlyXP/archive/2009/10/14/1583450.html
總結(jié)
以上是生活随笔為你收集整理的Hadoop Ecosystem解决方案---数据仓库的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【转】一步一步教你远程调用EJB
- 下一篇: UML 面向对象分析与设计