hadoop第二課

那是個好男孩發表於2018-03-14

1.1為什麼需要Hadoop 

(1)資料分析者面臨的問題 

  – 資料日趨龐大,讀寫都出現效能瓶頸;

  – 使用者的應用和分析結果,對實時性和響應時間 要求越來越高;

  – 使用的模型越來越複雜,計算量指數級上升。 

(2)期待的解決方案 

  – 解決效能瓶頸,在可見的未來不會出現新瓶頸 之前的技術可以平穩過渡,如SQL;

  – 轉移成本,如軟硬體成本,開發成本,技能培 養成本,維護成本 

(3)關係型資料庫和Hadoop的比較 

 

課堂筆記

關係型資料庫屬於集中型的資料方案。

資料大小:

1PB=210GB

訪問:

互動式處理—處理線上資料,實時處理,通俗一點就是一問一答的意思。

批處理—處理離線資料,舉個例子,學生問老師10個問題,老師將這10個問題解決後,一次性將解答打包給學生。

更新:

一次寫入多次讀寫—eg:百度搜尋。(倒排索引)

ps:增刪改查,Hadoop中沒有改,當寫錯時,就只有直接覆蓋。

另外,關係型資料庫的資料結構是表,,在建好的表上增加或刪除屬性,成本是很大的。

結構:

怎麼說呢?在傳統關係型資料庫Mysql中,比如學生管理系統,其中關於學生的一個表,有很多屬性,Sno Sname Sage Ssex Sdept,其中,某些屬性對應的屬性值是null,儲存時是會佔空間的,而Hadoop的話,null值是不會佔空間的。資料一大,那優勢就體現出來了。

完整性:

正規化是符合某一種級別的關係模式的集合。關聯式資料庫中的關係必須滿足一定的要求,滿足不同程度要求的為不同正規化。

換句話說,就是規則(約束),進而有了完整性一說。

因而在關係型資料庫中,因為有外來鍵的存在,在刪除某個表時,要刪除從表資訊,才能刪除主表的資訊。

Hadoop就不同,它是一張大表,就沒有關係型資料庫的那些麻煩。

那麼,問題來了,既然如此,那麼我們的生活中就不需要關係型資料庫了嗎?

舉個例子,教務系統,當中有學生的資訊,老師的管理,課程的安排等等,不可能只用一張表能裝下如此錯綜複雜的資訊。因而我們生活中還是要用關係型資料庫!

橫向擴充套件:

嗯...沒有圖,將就了吧。想象一下,這裡有個二維函式,橫座標是伺服器的臺數,縱座標是效能,Hadoop和RDBMS(關係型資料庫)在第一區間的函式分別是怎樣的呢?前者是一個一次函式,一直上升;後者的函式先極速上升,後趨向平緩,進而無論後面增加多少臺伺服器,效能都趨於定值。

——————————————————————————————————————————————————

Hadoop思想-小魚與鯊魚,高富帥與屌絲 

(4)叢集

  • 叢集的定義

  – 叢集是一組相互獨立的、通過高速網路互聯的 計算機,它們構成了一個組,並以單一系統的 模式加以管理。

  – 一個客戶與叢集相互作用時,叢集像是一個獨 立的伺服器。

  • 叢集的作用

  – 在付出較低成本的情況下獲得在效能、可靠性、 靈活性方面的相對較高的收益  

  • 使用叢集的目的

  – 提高效能(橫向擴充套件)

  – 降低成本(買一臺百萬級的伺服器,用分散式10萬塊就可以辦到)

  – 提高可擴充套件性(加一臺機器,效能呈   上升)          

  – 增強可靠性(比如說一臺機子當機了)

  • 使用叢集的場景

  – 科學叢集

  – 負載均衡叢集

  – 高可用性叢集

  • 叢集的構建

  – 從硬體角度來看可以分為節點機系統、通訊系 統、儲存系統等 

  – 軟體角度則主要有作業系統、叢集作業系統 (COS)、並行環境、編譯環境和使用者應用軟體等

  • 叢集的關鍵技術

   – 任務排程——程式遷移

(5)Hadoop體系下的分析手段

  – 主流:Java 程式

  – 海量離線資料處理技術:MapReduce

  – 分散式檔案系統:HDFS

  – NoSQL(Not Only不止一個資料庫的意思)資料庫:Hbase

  – SQL技巧平穩:Hive

1.2Hadoop2.0生態系統 

 (1)Hadoop自身包括以下內容:

  Hadoop Common: hadoop的基礎

  Hadoop Distributed File System (HDFS): 分散式檔案系統

  Hadoop YARN: 叢集任務資源管理及任務 排程的框架

  Hadoop MapReduce: 基於YARN的分散式計算 

(2)與hadoop相關的產品大致上分為兩大部分:

  • 資料服務(Data Services)

  – HBase: 將檔案建於HDFS上的分散式KeyValue資料庫 要先搭建Hadoop平臺!

  – Hive: 有比較友好介面(相對來講)的資料倉 庫,它實際上是基於MapReduce的一個應用。搭建Hive之前不必要搭建Hbase,但要搭建Hadoop。

  – Pig:它使用一個叫做“Pig Latin”的東西來作為 使用者互動語言,底層依然是MapReduce。它與 Hive有類似之處,都是用來做大資料處理,但 它似乎比Hive要簡單一些,沒有“儲存”的概念 (metadata,“表”等), 介面也少。

  – HCatalog:這是一個hadoop資料管理層,你 可以用Hive, Pig , MapReduce等來存取 hadoop的資料,而不用關心這些資料是如何存 儲的。

  • 執行維護(Operational Services)

  – ZooKeeper:分散式應用協調器。只能搭建奇數個叢集。

  • 其他相關產品/專案:

  – Mahout: 機器學習和資料探勘

  – Spark:記憶體計算

  – Storm:實時計算 

ps:現在其餘兩個已經被Spark取代。

(3)Hadoop2.0中各種產品的相互關係 

 ps:灰色的Hadoop自帶,綠色的是與Hadoop相關的產品。

Amban:運維工具

Avro:某種協議

Cassandra:最最專業的NoSQL工具

Oozie:向Hadoop提交資料

三大主流的資料庫:Cassandra;芒果;Hbase。

 

相關文章