大數(shù)據(jù)的發(fā)展帶來了新的挑戰(zhàn),需要新的解決方案。前所未有地,服務(wù)器需要實(shí)時(shí)處理、分類和存儲(chǔ)大量數(shù)據(jù)。這一挑戰(zhàn)導(dǎo)致了新平臺(tái)的出現(xiàn),例如 Apache Hadoop,它可以輕松處理大型數(shù)據(jù)集。在本文中,您將了解 Hadoop 是什么,它的主要組件是什么,以及 Apache Hadoop 如何幫助處理大數(shù)據(jù)。
什么是 Hadoop?
Apache Hadoop軟件庫 是一個(gè)開源框架,可讓您在分布式計(jì)算環(huán)境中高效地管理和處理大數(shù)據(jù)。
Apache Hadoop 由 四個(gè)主要模塊組成:
Hadoop 分布式文件系統(tǒng) (HDFS)
數(shù)據(jù)駐留在 Hadoop 的分布式文件系統(tǒng)中,類似于典型計(jì)算機(jī)上的本地文件系統(tǒng)。與傳統(tǒng)文件系統(tǒng)相比,HDFS 提供了更好的數(shù)據(jù)吞吐量。此外,HDFS 提供了出色的可擴(kuò)展性。您可以在商用硬件上輕松地從單臺(tái)機(jī)器擴(kuò)展到數(shù)千臺(tái)。
又一個(gè)資源談判者 (YARN)
YARN 有助于計(jì)劃任務(wù)、整體管理和監(jiān)控集群節(jié)點(diǎn)和其他資源。
MapReduce
Hadoop MapReduce 模塊幫助程序執(zhí)行并行數(shù)據(jù)計(jì)算。 MapReduce 的 Map 任務(wù)將輸入數(shù)據(jù)轉(zhuǎn)換為鍵值對。減少任務(wù)消耗輸入,聚合它,并產(chǎn)生結(jié)果。
Hadoop 通用
Hadoop Common 在每個(gè)模塊中都使用標(biāo)準(zhǔn) Java 庫。
為什么要開發(fā)Hadoop?
萬維網(wǎng)在過去十年中呈指數(shù)級(jí)增長,現(xiàn)在它由數(shù)十億頁組成。由于數(shù)量龐大,在線搜索信息變得困難。這些數(shù)據(jù)變成了大數(shù)據(jù),它包含兩個(gè)主要問題:
- 難以以高效且易于檢索的方式存儲(chǔ)所有這些數(shù)據(jù)
- 處理存儲(chǔ)數(shù)據(jù)的困難
開發(fā)人員參與了許多開源項(xiàng)目,通過解決上述問題,更快、更有效地返回 Web 搜索結(jié)果。他們的解決方案是跨服務(wù)器集群分配數(shù)據(jù)和計(jì)算,以實(shí)現(xiàn)同時(shí)處理。最終,Hadoop 成為了這些問題的解決方案,并帶來了許多其他好處,包括降低服務(wù)器部署成本。
Hadoop 大數(shù)據(jù)處理如何工作?
使用Hadoop,我們利用集群的存儲(chǔ)和處理能力,實(shí)現(xiàn)大數(shù)據(jù)的分布式處理。從本質(zhì)上講,Hadoop 提供了一個(gè)基礎(chǔ),您可以在此基礎(chǔ)上構(gòu)建其他應(yīng)用程序來處理大數(shù)據(jù)。
以不同格式收集數(shù)據(jù)的應(yīng)用程序通過 Hadoop 的 API 將它們存儲(chǔ)在 Hadoop 集群中,該 API 連接到 NameNode。NameNode 捕獲文件目錄的結(jié)構(gòu)以及創(chuàng)建的每個(gè)文件的“塊”位置。Hadoop 跨 DataNode 復(fù)制這些塊以進(jìn)行并行處理。
MapReduce 執(zhí)行數(shù)據(jù)查詢。它映射出所有的DataNodes并減少與HDFS中的數(shù)據(jù)相關(guān)的任務(wù)。名稱“MapReduce”本身描述了它的作用。映射任務(wù)在每個(gè)節(jié)點(diǎn)上針對提供的輸入文件運(yùn)行,而 reducer 運(yùn)行以鏈接數(shù)據(jù)并組織最終輸出。
Hadoop 大數(shù)據(jù)工具
Hadoop 的生態(tài)系統(tǒng)支持各種開源大數(shù)據(jù)工具。這些工具補(bǔ)充了 Hadoop 的核心組件并增強(qiáng)了其處理大數(shù)據(jù)的能力。
最有用的大數(shù)據(jù)處理工具包括:
Apache Hive
Apache Hive 是一個(gè)數(shù)據(jù)倉庫,用于處理存儲(chǔ)在 Hadoop 文件系統(tǒng)中的大量數(shù)據(jù)。
Apache Zookeeper
Apache Zookeeper 自動(dòng)進(jìn)行故障轉(zhuǎn)移并減少失敗 NameNode 的影響。
Apache HBase
Apache HBase 是用于 Hadoop 的開源非關(guān)系數(shù)據(jù)庫。
Apache Flume
Apache Flume 是一種分布式服務(wù),用于流式傳輸大量日志數(shù)據(jù)。
Apache Sqoop
Apache Sqoop 是一個(gè)命令行工具,用于在 Hadoop 和關(guān)系數(shù)據(jù)庫之間遷移數(shù)據(jù)。
Apache Pig
Apache Pig 是 Apache 的開發(fā)平臺(tái),用于開發(fā)在 Hadoop 上運(yùn)行的作業(yè)。使用的軟件語言是 Pig Latin。
Apache Oozie
Apache Oozie 是一個(gè)有助于管理 Hadoop 作業(yè)的調(diào)度系統(tǒng)。
Apache HCatalog
Apache HCatalog 是一個(gè)存儲(chǔ)和表管理工具,用于對來自不同數(shù)據(jù)處理工具的數(shù)據(jù)進(jìn)行排序。
Hadoop的優(yōu)勢
Hadoop 是一種強(qiáng)大的大數(shù)據(jù)處理解決方案,是處理大數(shù)據(jù)的企業(yè)的必備工具。
Hadoop的主要特點(diǎn)和優(yōu)勢詳述如下:
更快地存儲(chǔ)和處理大量數(shù)據(jù)
隨著社交媒體和物聯(lián)網(wǎng) (IoT) 的到來,要存儲(chǔ)的數(shù)據(jù)量急劇增加。這些數(shù)據(jù)集的存儲(chǔ)和處理對于擁有它們的企業(yè)至關(guān)重要。
靈活性
Hadoop 的靈活性允許您保存非結(jié)構(gòu)化數(shù)據(jù)類型,例如文本、符號(hào)、圖像和視頻。在 RDBMS 等傳統(tǒng)關(guān)系數(shù)據(jù)庫中,您需要在存儲(chǔ)數(shù)據(jù)之前對其進(jìn)行處理。但是,使用 Hadoop,不需要預(yù)處理數(shù)據(jù),因?yàn)槟梢园丛瓨哟鎯?chǔ)數(shù)據(jù)并決定以后如何處理它。換句話說,它的行為類似于 NoSQL 數(shù)據(jù)庫。
處理能力
Hadoop 通過分布式計(jì)算模型處理大數(shù)據(jù)。它對處理能力的有效利用使其既快速又高效。
降低成本
許多團(tuán)隊(duì)在 Hadoop 等框架出現(xiàn)之前就放棄了他們的項(xiàng)目,因?yàn)樗鼈儺a(chǎn)生的成本很高。Hadoop 是一個(gè)開源框架,它可以免費(fèi)使用,并且它使用廉價(jià)的商品硬件來存儲(chǔ)數(shù)據(jù)。
可擴(kuò)展性
Hadoop 讓您無需太多管理即可快速擴(kuò)展系統(tǒng),只需更改集群中的節(jié)點(diǎn)數(shù)量即可。
容錯(cuò)
使用分布式數(shù)據(jù)模型的眾多優(yōu)點(diǎn)之一是它能夠容忍故障。Hadoop 不依賴硬件來維持可用性。如果一個(gè)設(shè)備發(fā)生故障,系統(tǒng)會(huì)自動(dòng)將任務(wù)重定向到另一個(gè)設(shè)備。容錯(cuò)是可能的,因?yàn)橥ㄟ^在集群中保存多個(gè)數(shù)據(jù)副本來維護(hù)冗余數(shù)據(jù)。換句話說,高可用性是在軟件層維護(hù)的。
三個(gè)主要用例
處理大數(shù)據(jù)
對于海量數(shù)據(jù),我們建議使用 Hadoop,通常在 PB 或更多的范圍內(nèi)。它更適合需要巨大處理能力的海量數(shù)據(jù)。對于處理數(shù)百 GB 范圍內(nèi)的少量數(shù)據(jù)的組織而言,Hadoop 可能不是最佳選擇。
存儲(chǔ)多樣化的數(shù)據(jù)集
使用 Hadoop 的眾多優(yōu)點(diǎn)之一是它很靈活并且支持各種數(shù)據(jù)類型。無論數(shù)據(jù)是由文本、圖像還是視頻數(shù)據(jù)組成,Hadoop 都可以有效地存儲(chǔ)它。組織可以根據(jù)需要選擇處理數(shù)據(jù)的方式。Hadoop 具有數(shù)據(jù)湖的特征,因?yàn)樗鼮榇鎯?chǔ)的數(shù)據(jù)提供了靈活性。
并行數(shù)據(jù)處理
Hadoop 中使用的 MapReduce 算法協(xié)調(diào)存儲(chǔ)數(shù)據(jù)的并行處理,這意味著您可以同時(shí)執(zhí)行多個(gè)任務(wù)。但是,不允許聯(lián)合操作,因?yàn)樗鼤?huì)混淆 Hadoop 中的標(biāo)準(zhǔn)方法。只要數(shù)據(jù)彼此獨(dú)立,它就包含并行性。
Hadoop 在現(xiàn)實(shí)世界中的用途是什么
世界各地的公司都在使用 Hadoop 大數(shù)據(jù)處理系統(tǒng)。下面列出了 Hadoop 的許多實(shí)際用途中的一些:
了解客戶需求
目前,Hadoop 已被證明在了解客戶需求方面非常有用。金融行業(yè)和社交媒體的主要公司使用這項(xiàng)技術(shù)通過分析有關(guān)客戶活動(dòng)的大數(shù)據(jù)來了解客戶需求。
公司使用這些數(shù)據(jù)為客戶提供個(gè)性化的優(yōu)惠。您可能已經(jīng)通過根據(jù)我們的興趣和互聯(lián)網(wǎng)活動(dòng)在社交媒體和電子商務(wù)網(wǎng)站上展示的廣告體驗(yàn)到這一點(diǎn)。
優(yōu)化業(yè)務(wù)流程
Hadoop 通過更好地分析業(yè)務(wù)和客戶數(shù)據(jù)來幫助優(yōu)化業(yè)務(wù)績效。趨勢分析和預(yù)測分析可以幫助企業(yè)定制產(chǎn)品和庫存以增加銷售額。這樣的分析將有助于做出更好的決策并帶來更高的利潤。此外,公司使用 Hadoop 通過收集有關(guān)他們相互交互的數(shù)據(jù)來監(jiān)控員工行為來改善他們的工作環(huán)境。
改善醫(yī)療保健服務(wù)
醫(yī)療行業(yè)的機(jī)構(gòu)可以使用 Hadoop 來監(jiān)控有關(guān)健康問題和醫(yī)療結(jié)果的大量數(shù)據(jù)。研究人員可以分析這些數(shù)據(jù)以識(shí)別健康問題、預(yù)測藥物治療并決定治療計(jì)劃。這種改進(jìn)將使各國能夠迅速改善其衛(wèi)生服務(wù)。
金融交易
Hadoop 擁有一種復(fù)雜的算法,可以使用預(yù)定義的設(shè)置掃描市場數(shù)據(jù),以識(shí)別交易機(jī)會(huì)和季節(jié)性趨勢。金融公司可以通過 Hadoop 的強(qiáng)大功能自動(dòng)化大部分這些操作。
將 Hadoop 用于 IoT 物
聯(lián)網(wǎng)設(shè)備取決于數(shù)據(jù)的可用性以有效運(yùn)行。制造商和發(fā)明者使用 Hadoop 作為數(shù)十億交易的數(shù)據(jù)倉庫。由于物聯(lián)網(wǎng)是一個(gè)數(shù)據(jù)流概念,Hadoop 是管理其包含的大量數(shù)據(jù)的合適且實(shí)用的解決方案。Hadoop 不斷更新,使我們能夠改進(jìn)物聯(lián)網(wǎng)平臺(tái)使用的指令。
Hadoop 的其他實(shí)際用途包括提高設(shè)備性能、提高個(gè)人量化和性能優(yōu)化、提高運(yùn)動(dòng)和科學(xué)研究。
使用 Hadoop 的挑戰(zhàn)是什么?
每個(gè)應(yīng)用程序都具有優(yōu)勢和挑戰(zhàn)。Hadoop 還引入了幾個(gè)挑戰(zhàn):
MapReduce 算法并不總是解決方案
MapReduce 算法并不支持所有場景。它適用于簡單的信息請求和分塊成獨(dú)立單元的問題,但不適用于迭代任務(wù)。MapReduce 對于高級(jí)分析計(jì)算效率低下,因?yàn)榈惴ㄐ枰芗南嗷ネㄐ牛⑶宜?MapReduce 階段創(chuàng)建多個(gè)文件。
完全開發(fā)的數(shù)據(jù)管理
Hadoop 不提供用于數(shù)據(jù)管理、元數(shù)據(jù)和數(shù)據(jù)治理的綜合工具。此外,它缺乏數(shù)據(jù)標(biāo)準(zhǔn)化和確定質(zhì)量所需的工具。
人才缺口
由于 Hadoop 的陡峭學(xué)習(xí)曲線,很難找到具備 Java 技能的入門級(jí)程序員,這些程序員足以在 MapReduce 中發(fā)揮生產(chǎn)力。這種密集性是供應(yīng)商有興趣將關(guān)系 (SQL) 數(shù)據(jù)庫技術(shù)置于 Hadoop 之上的主要原因,因?yàn)榕c MapReduce 技能相比,更容易找到具備 SQL 知識(shí)而不是 MapReduce 技能的程序員。Hadoop 管理既是一門藝術(shù),也是一門科學(xué),需要操作系統(tǒng)、硬件和 Hadoop 內(nèi)核設(shè)置的底層知識(shí)。
數(shù)據(jù)安全
Kerberos 身份驗(yàn)證協(xié)議是朝著使 Hadoop 環(huán)境安全邁出的重要一步。數(shù)據(jù)安全對于保護(hù)大數(shù)據(jù)系統(tǒng)免受碎片化數(shù)據(jù)安全問題的影響至關(guān)重要。
結(jié)論
當(dāng)有效實(shí)施并采取克服挑戰(zhàn)所需的步驟時(shí),Hadoop 在處理大數(shù)據(jù)處理方面非常有效。對于處理大量數(shù)據(jù)的公司來說,它是一種多功能工具。它的主要優(yōu)點(diǎn)之一是它可以在任何硬件上運(yùn)行,并且 Hadoop 集群可以分布在數(shù)千臺(tái)服務(wù)器上。這種靈活性在 基礎(chǔ)設(shè)施即代碼環(huán)境中尤為重要。