淺談Hadoop在大數據中的作用以及與Spark的關係

說起Hadoop在大數據中的作用以及與Spark的關係,首先要了解Hadoop作為一種分佈式的大數據框架,如今已在各個領域被廣泛使用,能夠對海量數據進行存儲和計算分析;同時,Hadoop作為一種開源的集群,有眾多的組件方便開發者安裝和開發,而且開發成本相對低廉;同時,Hadoop中的Hive對SQL的支持可以使Hadoop吸收了關係型數據庫的優點,便於用戶對數據進行優化管理。它和Spark的區別更多的是Spark偏重的不是數據存儲而是計算,通常人們會將Hadoop和Spark結合起來使用,充分發揮其各自的優點。

在實施Hadoop集群的過程中,如何減少HDFS的冗餘、用好大數據存儲的錯容性、使用MapReduce對數據進行離線處理是較為重點的部分。而沒有使用高效性能的關係型數據庫,儘管關係型數據庫可以快速處理用戶事務數據,可以實現較為複雜的表間關聯操作等。因為數據由磁盤是尋址讀取,在讀取所有數據之後再進行運算和操作,若是TB的數據,那麼讀取的時間會非常的長。那麼如果能把數據分散在多臺機器上並行讀取那麼理論上其速度必然是大幅度提升, HDFS提供的是流式數據處理,在讀取部分數據後即可操作。在MapReduce框架中,其框架形式為key-value形式,最終經過MapReduce的數據會保持其完整性。這就是Hadoop對磁盤讀取的優化。

淺談Hadoop在大數據中的作用以及與Spark的關係

其次,Hadoop生態系統中的Hive能夠完成複雜關聯操作,雖然Hive有一定的延遲,它是數據倉庫。但是在大數據處理中一般不需要進行復雜的關聯操作,基本上都是行列的分析與處理。尚學堂陳老師指出,在處理海量數據不能夠完全按照關係型數據庫的邏輯,所以要具體問題具體分析。而且關係型數據庫產品多樣,技術也相對十分成熟。在Hive可以發揮關係型數據庫的優勢之外,HBase可以在一定程度上進行補充。

Hadoop大數據處理的相關產品有很多,如Hive、HBase、Spark、Storm、Mahout等等,用戶的需求也能夠日益得到滿足。相比於使用場景已基本固化的關係型數據庫,Hadoop功能更加靈活。並且Hadoop是開源項目,有開源社區和大多技術者的支持,開發維護也較為方便。在Hive中,關係型數據主要基於SQL語言,並且Hadoop有SQL型,同時也可以用Java、Python等進行開發。那麼Hadoop和Spark有哪些不同呢?

首先,Hadoop 和Spark 兩者都是大數據框架,但解決問題的層面有所不同。Hadoop更多是一個分佈式數據基礎設施,將巨大的數據集分派到一個由普通計算機組成的集群中的多個節點進行存儲,節省了硬件成本 ,而Spark,則是那麼一個專門用來對那些分佈式存儲的大數據進行處理的工具,依賴於分佈式數據存儲。

其次, Spark要比Hadoop的MapReduce計算速度快很多。Spark,它會在內存中以接近“實時”的時間完成所有的數據分析,從集群中讀取數據,完成所有必須的分析處理,將結果寫回集群。對於動態數據實時分析而言,Spark要比Hadoop性能較為優越。 比如實時的市場活動、網絡安全分析等方面的應用。

以上就是Hadoop在大數據中的作用以及與Spark關係的說明,可見Hadoop在大數據分析中被廣泛應用,同時也可以與Spark相結合提高其實時計算分析能力。


分享到:


相關文章: