Hadoop
依據維基百科說明:Apache Hadoop是一款支援數據密集型分布式應用程式並以Apache 2.0許可協定發布的開源軟體框架,結論就是有聽沒有懂。。。
其實Hadoop最單純來說明就是兩種功能:第一個可以儲存大量數據的檔案系統(稱做HDFS,Hadoop Distributed File System)、第二個為可以實現大量數據的計算框架(MRV2,又稱YARN,Yet Another Resource Negotiator),另外Hadoop本身為一套於安裝及設定沒有UI的軟體,並沒有像微軟Office等好用商用軟體按下一步就能安裝好的唷~~~
提到大量是指一般電腦無法負荷的單位為大量,一般電腦就能:負荷的了就不要鬧了。。。
所以就有一個Hadoop頂級專家(Cloudera 公司)創立了CDH,方便使用者快速部屬及設定大量Hadoop叢集,相關安裝方式請參閱CDH 部署步驟。
代表Hadoop方式: 當一匹馬拉不動一台馬車時,應該設法多找幾匹馬兒一塊拉,而不是瘋狂的訓練那一匹馬讓它變的無比強壯。。。
HDFS(Hadoop Distributed File System)當初受於 Google檔案系統(GFS)論文啟發 ,實做出來的檔案系統,垂直擴展硬體等級會出現瓶頸,相對成本付出較高,故此HDFS檔案系統採用水平擴充方使,以數台較低成本電腦模擬一台超級電腦。
HDFS是模擬檔案系統儲存數據,數據皆是儲存在硬碟上,故需要原生OS作業系統,另不建議硬碟使用容錯式磁碟陣列(RAID,Redundant Array of Independent Disks),HDFS預設複製3個副本數據儲存在不同機器。
HDFS為主-從式架構,由單個NameNode、Secondary NameNode及數個DataNode組合而成
YARN(Yet Another Resource Negotiator)當初受於 Google MapReduce論文啟發,實做出來的分散式運算框架,將大量運算需求,同時分布餘數台機器上一起運算。
YARN是個運算資源配置系統,類似建議於Linux Cgroup資源控制,可以動態調節配置好資源的給運算之應用程式,並且可以結合Spark、Kafka、Hive、Oozie、Sqoop、Flume、Impala等資源管理;另目前Impala與Yarn整合尚有些Bug,故建議由Cgroup 先配置給Impala自行管理限定資源。
YARN框架同為主-從式架構,由單個ResourceManager、JobHistory Server、數個NodeManager組成
一個方框代表一部機器
屬性 | 本機模式 | 偽分佈式模式 | 完全分佈式模式 |
---|---|---|---|
fs.defaultFS | file:/// | hdfs:/// | hdfs:/// |
dfs.replication | N/A | 1 | 3 |
mapreduce .framework.name | N/A | yarn | yarn |
yarn.resourcemanager.hostname | N/A | localhost | resourcemanager |
yarn.nodemanager.auxervices | N/A | mapreduce_shuffle | mapreduce_shuffle |
圖參考於Vimal Jain部落格
速度:CPU >RAM >SSD >SATA >一般網路,除非採用超高速網路之外
L1 cache reference 0.5 ns
Branch mispredict 5 ns
L2 cache reference 7 ns 14x L1 cache
Mutex lock/unlock 25 ns
Main memory reference 100 ns 20x L2 cache, 200x L1 cache
Compress 1K bytes with Zippy 3,000 ns 3 us
Send 1K bytes over 1 Gbps network 10,000 ns 10 us
Read 4K randomly from SSD* 150,000 ns 150 us ~1GB/sec SSD
Read 1 MB sequentially from memory 250,000 ns 250 us
Round trip within same datacenter 500,000 ns 500 us
Read 1 MB sequentially from SSD* 1,000,000 ns 1,000 us 1 ms ~1GB/sec SSD, 4X memory
Disk seek 10,000,000 ns 10,000 us 10 ms 20x datacenter roundtrip
Read 1 MB sequentially from disk 20,000,000 ns 20,000 us 20 ms 80x memory, 20X SSD
Send packet CA->Netherlands->CA 150,000,000 ns 150,000 us 150 ms
1 ns = 10^-9 seconds
1 us = 10^-6 seconds = 1,000 ns
1 ms = 10^-3 seconds = 1,000 us = 1,000,000 ns
By Jeff Dean: http://research.google.com/people/jeff/
Originally by Peter Norvig: http://norvig.com/21-days.html#answers