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。