Hadoop單機模式部署 - CentOS

寫在前面:博主是一隻經過實戰開發歷練後投身培訓事業的“小山豬”,暱稱取自動畫片《獅子王》中的“彭彭”,總是以樂觀、積極的心態對待周邊的事物。本人的技術路線從Java全棧工程師一路奔向大數據開發、數據挖掘領域,如今終有小成,願將昔日所獲與大家交流一二,希望對學習路上的你有所助益。同時,博主也想通過此次嘗試打造一個完善的技術圖書館,任何與文章技術點有關的異常、錯誤、注意事項均會在末尾列出,歡迎大家通過各種方式提供素材。

  • 對於文章中出現的任何錯誤請大家批評指出,一定及時修改。
  • 有任何想要討論和學習的問題可聯繫我:[email protected]
  • 發佈文章的風格因專欄而異,均自成體系,不足之處請大家指正。

Hadoop單機模式部署 - CentOS

本文關鍵字:Hadoop、單機模式、安裝部署、CentOS

一、Hadoop介紹

Hadoop軟件庫是一個計算框架,可以使用簡單的編程模型以集羣的方式對大型數據集進行分佈式處理。

1. Hadoop發展史及生態圈

  • Hadoop起源於Apache Nutch項目,始於2002年,是Apache Lucene的子項目之一。
  • 2006年2月,成爲一套完整而獨立的軟件,並被命名爲Hadoop
  • 2008年1月,Hadoop成爲Apache頂級項目。
  • 2009年7月,MapReduceHDFS成爲Hadoop的獨立子項目。
  • 2010年5月,Avro脫離Hadoop項目,成爲Apache頂級項目。
  • 2010年5月,HBase脫離Hadoop項目,成爲Apache頂級項目。
  • 2010年9月,Hive脫離Hadoop項目,成爲Apache頂級項目。
  • 2010年9月,Pig脫離Hadoop項目,成爲Apache頂級項目。
  • 2011年1月,Zookeeper脫離Hadoop項目,成爲Apache頂級項目。
  • 2011年12月,Hadoop 1.0.0版本發佈。
  • 2012年10月,Impala加入Hadoop生態圈。
  • 2013年10月,Hadoop 2.0.0版本發佈。
  • 2014年2月,Spark成爲Apache頂級項目。
  • 2017年12月,Hadoop 3.0.0版本發佈。

2. Hadoop核心功能及優勢

  • 分佈式存儲系統:HDFS

HDFS是Hadoop分佈式文件系統(Hadoop Distributed File System)的簡稱,是Hadoop生態系統中的核心項目之一,也是分佈式計算中數據存儲管理的基礎。

  • 分佈式計算框架:MR

MapReduce是一種計算模型,核心思想就是“分而治之”,可以用於TB級的大規模並行計算。Map階段處理後形成鍵值對形式的中間結果;Reduce對中間結果相同的“鍵”對應的“值”進行處理,得到最終結果。

  • 資源管理平臺:YARN

YARN(Yet Another Resource Negotiator)是Hadoop的資源管理器,可以爲上層應用提供統一的資源管理和調度,爲集羣的資源利用率、統一管理、數據共享等方面提供了便利。

  • 高擴展

Hadoop是一個高度可擴展的存儲平臺,可以存儲和分發超數百個並行操作的廉價的服務器集羣。能夠打破傳統的關係數據庫無法處理大量數據的限制,Hadoop能夠提供TB級別數據的運算能力。

  • 成本低

Hadoop可以將廉價的機器組成服務器集羣來分發處理數據,成本較低,學習者及普通用戶也能夠很方便的在自己的PC上部署Hadoop環境。

  • 高效率

Hadoop能夠併發的處理數據任務,並且能夠在不同的節點之間移動數據,可以保證各個節點的動態平衡。

  • 容錯性

Hadoop可以自動維護多份數據的副本,如果計算任務失敗,Hadoop能夠針對失敗的節點重新處理。

3. 部署方式介紹

  • 單機模式

單機模式是一個最簡的安裝模式,因爲Hadoop本身是基於Java編寫的,所以只要配置好Java的環境變量就可以運行了。在這種部署方式中我們不需要修改任何的配置文件,也不需要啓動任何的服務,只需要解壓縮、配置環境變量
雖然配置很簡單,但是能做的事情也是很少的。因爲沒有各種守護進程,所以分佈式數據存儲以及資源調度等等服務都是不能使用的,但是我們可以很方便的測試MapReduce程序

  • 僞分佈模式

僞分佈模式是學習階段最常用的模式,可以將進程都運行在同一臺機器上。在這種模式下,可以模擬全分佈模式下的運行狀態,基本上可以完成全分佈模式下的所有操作,僞分佈模式是全分佈模式的一個特例。

  • 全分佈模式

在全分佈模式下,會在配置文件中體現出主節點與分節點,可以指定哪些機器上運行哪些服務以達到的成本與效率的平衡。在企業中主要採用的都是全分佈式模式,節點從數十個到上百個不等。在學習階段,如果個人PC的性能足夠強勁,也可以使用多臺虛擬機代替。

二、Hadoop下載

作爲一個軟件的學習者和開發者,大家一定要培養自己:去官網、查資料的好習慣,擺脫各種一鍵安裝、軟件管家之類的東西,把一切掌控在自己手中,用嚴謹的態度來要求自己,加油!

1. 下載地址

在百度中搜索Hadoop,前兩條就會顯示我們需要的網站,目前Hadoop屬於Apache基金會,所以我們打開網址時注意一下是apache.org

進入後來到Hadoop的官網,點擊Download就可以打開下載界面:https://hadoop.apache.org/releases.html

2. 版本選擇

現在我們使用的是開源社區版,目前的主流版本爲2.x.y3.x.y

在選擇Hadoop的版本時,我們應該考慮到與其他生態圈軟件的兼容問題。通常的組建方式有兩種:

  • 根據各組件的兼容性要求手動選擇版本並搭建
  • 使用CDH(Cloudera’s Distribution Including Apache Hadoop)自動選擇版本並解決兼容問題

在學習階段,由於進行的操作比較簡單,不需要特別的在意版本的兼容問題,但是建議兩種方式大家都能夠去進行了解和實踐。

3. 安裝包下載

本文選擇2.9.2版本進行演示,Source爲源碼,Binary爲我們所需要的軟件包,點擊對應版本的binary進入下載界面。

點擊任意一個鏡像地址開始下載,直擊鏈接:https://www.apache.org/dyn/closer.cgi/hadoop/common/hadoop-2.9.2/hadoop-2.9.2.tar.gz

三、安裝步驟

文本將在CentOS 7系統環境下演示Hadoop的單機模式部署。

1. 前置環境

在配置Hadoop前,需要先配置好JDK,在安裝先需要先卸載歷史版本,詳細的步驟可以參考我的另一篇文章:JDK的解壓安裝 - CentOS

  • 查詢歷史版本(如沒有可跳過下一步)
rpm -qa|grep java
rpm -qa|grep jdk
  • 卸載歷史版本(使用root用戶操作)
rpm -e --nodeps 軟件包全稱(從查詢處獲得)
  • 解壓縮
tar -zvxf jdk-8u251-linux-x64.tar.gz
  • 配置環境變量(以全局爲例-root用戶操作)
vi /etc/profile

# 在文件結尾添加以下內容
JAVA_HOME=/opt/jdk1.8.0_251
PATH=$PATH:$JAVA_HOME/bin:$JAVA_HOME/jre/bin

export JAVA_HOME
export PATH
  • 刷新環境變量
source /etc/profile
  • 使用命令測試
java -version

2. Hadoop安裝

對於Hadoop軟件,通常會新建一個單獨的用戶來管理,下面以普通用戶hadoop爲例來進行操作。

# 新建hadoop用戶
useradd hadoop
# 爲hadoop用戶設置密碼
passwd hadoop
# 切換至hadoop用戶
su - hadoop
  • 解壓縮

使用hadoop用戶新建一個會話,上傳Hadoop軟件包。

tar -zxvf hadoop-2.9.2.tar.gz
  • 配置環境變量(以用戶變量爲例)
vi ~/.bash_profile

# 在文件結尾添加以下內容
HADOOP_HOME=/home/hadoop/hadoop-2.9.2
PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

export HADOOP_HOME
export PATH
  • 刷新環境變量
source ~/.bash_profile
  • 使用命令測試
hadoop version

3. 運行WordCount

測試命令成功之後我們還可以運行一個MapReduce小程序來測試一下,相當於Hadoop的“Hello World”。在Hadoop的安裝目錄中,存放了一些可以直接運行的jar包,對於不同版本,存放路徑可能有所差異。在2.9.2版本中,存放路徑爲:share/hadoop/mapreduce/hadoop-mapreduce-examples-2.9.2.jar

  • 進入jar包所在路徑

  • 準備數據

新建一個純文本文件,使用空格、換行符來分隔單詞,寫入一些句子。

touch data.txt
vi data.txt

good good study
day day up
today is a good day

  • 開始計算

使用hadoop jar命令來運行一個jar包,在jar包中可能存在多個可執行的類,目前需要運行的是其中的wordcount。運行時需要兩個參數:

  • 輸入路徑:數據源文件或目錄
  • 輸出路徑:一個還不存在的目錄,會自動創建

輸入路徑就是剛剛創建的data.txt,而輸出路徑必須是一個不存在路徑,每次執行完成後會自動創建該目錄,並生成一些結果文件。

hadoop jar hadoop-mapreduce-examples-2.9.2.jar wordcount data.txt output


在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章