fbpx

一個便當吃不飽,可以吃兩個啊!淺談巨量資料庫 Hadoop

Hadoop – 這隻黃色小象究竟是什麼?

「一個便當吃不飽,可以吃兩個啊!還不夠的話,可以再吃好幾個!」

當企業儲存的資料越來越多,若只是要增加幾 TB 可以加裝硬碟進行擴容就好,但若要增加幾百 TB 的資料,顯然不是一台電腦主機就可以搞定的。

那麼要怎樣把資料放到多台主機,又能夠同時使用與管理裡面的資料呢?

Hadoop 就此應運而生!既然一台電腦裝不下,那麼可以放到兩台,甚至更多台主機裡面囉!

Hadoop 目前是 Apache 的開源專案,能夠儲存並管理巨量資料,更可以儲存容量超大的檔案,並同時儲存、處理、分析這些檔案,因此許多組織採用它作為儲存巨量資料的雲端平台。Hadoop 完全免費、有活躍的社群,還有各式各樣的開源應用程式,儼然是個豐富的生態系。 

hadoop

Hadoop 可以做什麼?

Hadoop File System,簡稱 HDFS,是一種分散式檔案系統,可以整合多台主機的儲存空間來存放資料。HDFS 在存放檔案有自己獨特的邏輯,它會將一整個的檔案切成小塊(block)做上記號,然後製作副本(Data replication),散佈到不同的主機上。這麼做有幾個好處:

  • 當要讀取或寫入時,因為檔案被切分成小塊,壓力分散到多台主機,妥善運用資源,避免一台主機存放一個超大檔案,造成 I/O 擠在一台電腦上陷入瓶頸,其他主機卻閒得發慌。
  • 每個小塊都有自己的副本,雖然會花費更多儲存空間,但是當中一個主機意外故障時,存在其他地方的副本,馬上可以提供資料,HDFS 也會自動把缺少的副本補齊。

Hadoop 藉由 YARN 監控與分配資源,YARN (Yet Another Resource Negotiator) 是一種分散式運算系統,用於資源管理。它可以統籌多台主機的運算資源來進行計算,傳統上使用 MapReduce 運算框架,可以處理存放在 HDFS 中的大量資料。

有了基礎的檔案與運算系統,開始有許多的應用依附著 Hadoop,常見的有:

  • Apache Hive 主要用於資料倉儲,適合巨量資料的批量處理
  • Apache HBase 作為 No-SQL 的資料庫,提供更即時的搜尋
  • Apache Kafka 流式資料訊息傳遞中介,為資料流解耦
  • Apache Spark 資料分析工具,提供資料探勘與機器學習的 API

還有更多應用,族繁不及備載。

Hadoop 與資料庫有什麼不同?為什麼 Hive 查資料那麼慢?

Hadoop 是將資料存放在分散式檔案系統,所以可以存放各種檔案。Apache Hive 則是提供類似傳統關連式資料庫的介面,讓使用者可以使用近似 SQL 的指令 HiveQL,將大量的結構化資料存入 HDFS 中進行「資料倉儲」。

由於使用 Hive 的主要目的是存放大量資料,必要時才使用 YARN 進行存取與運算,傳統上Hive 使用 MapReduce 運算框架,運算過程中大量使用硬碟 I/O,避開因為昂貴的記憶體而導致的 OOM 問題,因此更多時候是用於巨量資料的批次處理。因此,相較用在 OLTP 追求速度而大量使用記憶體的資料庫,速度會慢上許多。

若是要更即時的互動式查詢,可以使用 Apache Impala 來訪問 Hive 中的資料,Impala 繞過 YARN 與 MapReduce,有著更快的反應速度。

什麼是 CDP Private Cloud Base?

Apache Hadoop 生態豐富,要合宜地將各個服務部署到叢集中,程序就變得相當複雜。不同的應用彼此相互依賴,其中各個參數互相影響,也需要第三方軟體來監視每個服務的狀態。

Cloudera 的 CDP Private Cloud Base 就是上述難題的解決方案,它整合了 Hadoop 生態系中常用的應用服務,它的 Cloudera Manager 提供 Web UI 方便管理者部署,也能夠集中管理,包括啟停服務、調校設定檔參數、套用安全策略等,省去手動操作的麻煩或編寫腳本的開發過程,讓企業可以更快速更方便地開始資料分析,讓大數據為企業帶來的價值。

相關文章