歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> 使用Linux 和Hadoop 進行分布式計算[圖文]

使用Linux 和Hadoop 進行分布式計算[圖文]

日期:2017/2/28 16:50:53   编辑:Linux教程

人們每天都依賴搜索引擎以從 Internet 的海量數據中找到特定的內容,但您曾經想過這些搜索是如何執行的嗎?一種方法是 Apache 的 Hadoop,它是一個能夠對海量數據進行分布式處理的軟件框架。Hadoop 的一個應用是並行索引 Internet Web 頁面。Hadoop 是一個受到 Yahoo!、Google 和 IBM 等公司支持的 Apache 項目。本文將介紹 Hadoop 框架,並展示它為什麼是最重要的基於 Linux? 的分布式計算框架之一。

Hadoop 由 Apache Software Foundation 公司於 2005 年秋天作為 Lucene 的子項目 Nutch 的一部分正式引入。它受到最先由 Google Lab 開發的 MapReduce 和 Google File System 的啟發。2006 年 3 月份,MapReduce 和 Nutch Distributed File System (NDFS) 分別被納入稱為 Hadoop 的項目中。

Hadoop 是最受歡迎的在 Internet 上對搜索關鍵字進行內容分類的工具,但它也可以解決許多要求極大伸縮性的問題。例如,如果您要 grep 一個 10TB 的巨型文件,會出現什麼情況?在傳統的系統上,這將需要很長的時間。但是 Hadoop 在設計時就考慮到這些問題,因此能大大提高效率。

先決條件

Hadoop 是一個能夠對大量數據進行分布式處理的軟件框架。但是 Hadoop 是以一種可靠、高效、可伸縮的方式進行處理的。Hadoop 是可靠的,因為它假設計算元素和存儲會失敗,因此它維護多個工作數據副本,確保能夠針對失敗的節點重新分布處理。Hadoop 是高效的,因為它以並行的方式工作,通過並行處理加快處理速度。Hadoop 還是可伸縮的,能夠處理 PB 級數據。此外,Hadoop 依賴於社區服務器,因此它的成本比較低,任何人都可以使用。

您可能已經想到,Hadoop 運行在 Linux 生產平台上是非常理想的,因為它帶有用 Java? 語言編寫的框架。Hadoop 上的應用程序也可以使用其他語言編寫,比如 C++。

Hadoop 架構

Hadoop 有許多元素構成。最底部是 Hadoop Distributed File System(HDFS),它存儲 Hadoop 集群中所有存儲節點上的文件。HDFS(對於本文)的上一層是 MapReduce 引擎,該引擎由 JobTrackers 和 TaskTrackers 組成。

HDFS

對外部客戶機而言,HDFS 就像一個傳統的分級文件系統。可以創建、刪除、移動或重命名文件,等等。但是 HDFS 的架構是基於一組特定的節點構建的(參見圖 1),這是由它自身的特點決定的。這些節點包括 NameNode(僅一個),它在 HDFS 內部提供元數據服務;DataNode,它為 HDFS 提供存儲塊。由於僅存在一個 NameNode,因此這是 HDFS 的一個缺點(單點失敗)。

圖 1. Hadoop 集群的簡化視圖

存儲在 HDFS 中的文件被分成塊,然後將這些塊復制到多個計算機中(DataNode)。這與傳統的 RAID 架構大不相同。塊的大小(通常為 64MB)和復制的塊數量在創建文件時由客戶機決定。NameNode 可以控制所有文件操作。HDFS 內部的所有通信都基於標准的 TCP/IP 協議。

Copyright © Linux教程網 All Rights Reserved