Hadoop權威指南摘抄 初識Hadoop

2021-09-02 02:51:52 字數 2088 閱讀 2775

初識hadoop

古代,人們用牛來拉重物,當一頭牛拉不動一根圓木時,他們不曾想過培育更大更壯的牛。同樣,

我們也不需要嘗試開發超級計算機,而應該結合使用更多計算機。

--格蕾斯.霍珀

資料的儲存與分析

大資料時代,磁碟儲存容量快速增加的同時,其訪問速度--磁碟資料讀取速度缺未能與時俱進。

2023年,乙個1370mb的磁碟,傳輸速度為4.4mb/s,因此讀取整個磁碟需要5分鐘,20年後,1tb的磁碟逐漸

普及,其資料傳輸速度約為100mb/s,因此讀取整個磁碟的資料要約兩個半小時。

假如我們擁有100塊磁碟,每個磁碟儲存1%的資料,並行讀取,那麼不到兩分鐘就讀取所有資料。

僅使用磁碟容量的1%似乎很浪費,但我們可以儲存100個資料集,每個資料集1tb,實現共享磁碟訪問。

1.硬體故障,一旦使用多個硬體,其中任一硬體發生故障的概率非常高,常見辦法是進行備份,發生

故障後使用另一副本。例如raid就是按照此原理實現。另外hadoop的檔案系統hdfs也是一類,不過

它採用的方法稍微不同。詳見後文

2.大多數的資料分析任務需要以某種方式結合大部分的資料共同完成分析任務,即從乙個磁碟讀取的

資料可能需要和從99個磁碟中讀取的資料結合使用,各種分布式系統允許結合多個**的資料並實現

分析,但保證其正確性是乙個非常大的挑戰。hadoop的mapreduce提出乙個程式設計模型,該模型將上述

問題進行抽象,並轉換為乙個資料集的計算(鍵/值對組成)。

簡而言之,hadoop提供了乙個可靠的共享儲存和分析系統。hdfs實現儲存,而mapreduce實現分析處理。

縱然hadoop還有其他功能,但這兩部分是它的核心。

關係型資料庫管理系統的對比

我們為什麼不能使用資料庫來對大量磁碟上大規模的資料進行批量分析?為什麼要需要mapreduce?

答案來自磁碟的發展趨勢:定址時間的提高遠遠慢於傳輸速率的提高,定址就是將磁頭移動到特定

磁碟位置進行讀寫的過程。它是導致磁碟延遲的主要原因,而傳輸速率取決於磁碟的頻寬。

如果資料的訪問模式中包含大量的磁碟定址,那麼讀取大量資料集所花的時間勢必會更長(相比流式資料讀取模式),

流式讀取主要取決於傳輸速率。另一方面,如果資料庫系統只更新一小部分記錄,傳統的b樹更有優勢。

但資料庫系統更新大部分資料時,b數的效率比mapreduce低的多。

在很多情況下,可以將mapreduce視為關係型資料庫管理系統的補充。mapreduce比較適合以批處理的方式

處理需要分析整個或大部分資料集的問題,尤其是即席查詢。rdbms適用於"點查詢"和更新,資料集被索引

後,資料庫系統能夠提供低延遲資料檢索和快速的少量資料更新。mapreduce適合一次寫入,多次讀取資料

的應用,而關係型資料庫更適合持續更新的資料集。

mapreduce和關係型資料庫之間的另乙個區別是在於它們所操作的資料集的結構化程度。

結構化資料:xml或資料庫表

半格式化: 雖然可能有格式,但經常被忽略,只能對資料結構一般指導。如電子**,各個單元格組成,但

每個單元格自身可儲存任何形式的資料。

半結構化資料:沒有任何內部結構。比如純文字或影象資料。

mapreduce對非結構化或半結構化資料非常有效,因為在處理資料時才對資料進行解釋。換句話說,mapreduce

輸入的鍵值並不是資料固有的屬性,而是由分析資料的人員來選擇的。

關係型資料往往是規範的,以保持其資料完整不冗餘。但規範化給mapreduce帶來了問題,它是記錄的讀取

稱為異地操作,而mapreduce的核心之一就是,它可以進行高速的流式讀寫操作。

但是在不久的將來,關係型資料庫系統和mapreduce之間的差異可能變得模糊,關係型資料庫都開始吸收

mapreduce的一些思路(入aster data和greeplum的資料庫),另一方面,基於mapreduce的高階查詢語言

(pig,hive)使mapreduce的系統更接近傳統的資料庫程式設計方式。

mapreduce的設計目標是服務於那些只需數分鐘或數小時即可完成的作業,並且執行於內部通過高速

網路連線的單一資料中心內,並且該資料中心內的計算機需要可靠的,可定製的硬體組成。

Hadoop 權威指南

rpm包和deb包是兩種linux系統下最常見的安裝包格式,在安裝一些軟體或服務的時候免不了要和它們打交道。rpm包主要應用在redhat系列包括 fedora等發行版的linux系統上,deb包主要應用於debian系列包括現在比較流行的ubuntu等發行版上。yum可以用於運作rpm包,例如在f...

hadoop 權威指南 HBase

hbase原理 基本概念 基本架構 應用將資料儲存在帶標籤的表中,表的單元格是行和列座標的座標交集,他們有版本號。在預設情況下版本號是單元格插入時hbase自動分配的時間戳。表的單元格內容是乙個未解釋的位元組陣列 錶行的鍵也是位元組陣列。行鍵是表的主鍵,被用來對錶行進行排序。錶行的列分組,形成列族 ...

Hadoop權威指南 DFSClient

第9章 hdfs客戶端 1.dfsclient的構造和關閉 dfsclient 構造方法的功能 1 讀取配置項資訊並初始化成員變數 2 建立到namenode的ipc連線 createrpcnamenode 和createnamenode dfsclient.close 關閉客戶端的功能 1 lea...