Hadoop的安裝和配置

1  下載程序包:

 http://hadoop.apache.org/releases.html

我們使用的是hadoop-2.7.1.tar.gz

2  安裝hadoop

(1) 將hadoop-2.7.1.tar.gz拖拽到ubuntu桌面

(2) mkdir /usr/local/hadoop #在/usr/local/中創建hadoop目錄用來存放程序文件

(3) cp -rf Desktop/hadoop-2.7.1.tar.gz /usr/local/hadoop/  #將hadoop的壓縮文件拷貝到(2)中新建的/usr/local/hadoop目錄

(4) 進入/user/local/Hadoop 解壓剛纔拷貝過來的壓縮包,查看解壓的壓縮包,並刪除原壓縮包

cd /usr/local/Hadoop

tar –zxf Hadoop-2.7.1.tar.gz

3  配置hadoop爲單機模式

(1) 配置java信息

vim  /usr/local/hadoop/hadoop-2.7.1/etc/hadoop/hadoop-env.sh

 

在文件hadoop-env.sh的最後一行添加如下信息:

exportJAVA_HOME=/usr/lib/java/jdk1.7.0_80

 

使修改的配置信息立即生效:

source /usr/local/hadoop/hadoop-2.7.1/etc/hadoop/hadoop-env.sh

 

(2) 爲了方便使用hadoop命令的方便,我們將hadoop相關命令添加進/etc/profile

vim /etc/profile

 

添加以下信息(注意分割符是“:”而不是“;”):

exportHADOOP_INSTALL=/usr/local/hadoop/hadoop-2.7.1

exportHADOOP_CONF_DIR=${HADOOP_INSTALL}/etc/hadoop

export HADOOP_COMMON_LIB_NATIVE_DIR=${HADOOP_INSTALL}/lib/native

exportHADOOP_OPTS="-Djava.library.path=${HADOOP_INSTALL}/lib"

exportPATH=${JAVA_HOME}/bin:${HADOOP_INSTALL}/bin:${HADOOP_INSTALL}/sbin:$PATH

(3) source /etc/profile #使修改的配置立即生效

 

(4) 測試hadoop是否安裝正確

Hadoop version

 

4  在單機模式下執行wordcount程序

(1) 準備數據,我們就統計下hadoop的etc目錄下xml文件中相同的單詞數量

在/usr/local/hadoop目錄建立input用來存入輸入數據

 

將/usr/local/hadoop/hadoop-2.1.1/etc/hadoop/下的xml文件都拷貝到input中

 

(2) 運行hadoop自帶的wordcount程序來統計單詞(注輸出文件不能存在,這樣設計的目的防止,原始磁盤數據被覆蓋)

hadoop jar /usr/local/hadoop/hadoop-2.7.1/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.1.jarwordcount input output

 

執行結束:

 

(3) 查看運行結果:

 

結果:

 

單機模式的構建、配置和運行成功

5  配置hadoop爲僞分佈式

(1) 僞分佈式需要配置的信息

A.  Hadoop的核心配置文件core-site.xml,主要配置HDFS的地址和端口

B.  Hadoop中hdfs的配置文件hdfs-site.xml,主要配置replication

(2) 配置core-site.xml

先在/usr/local/hadoop/hadoop-2.7.1下建立tmp,hdfs,hdfs/data,hdfs/name四個目錄

 

先備份core-site.xml爲core-site.xml.bak

 

配置文件core-site.xml,添加如下內容

 

(3) 配置hdfs-site.xml

先備份hdfs-site.xml爲hdfs-site.xml.bak

 在配置文件添加如下內容:

 

(4) 重啓虛擬機

(5) 把namenode進行格式化

Hadoop namenode –format

 

格式化完成(格式化完成後namenode自動關閉):

 

(6) 啓動hadoop

start-dfs.sh

 

(7) 使用jps查看

 

(8) 驗證

http://localhost:50070/

 

我們的僞分佈式搭建成功.

6  在僞分佈式上運行wordcount程序

(1) 在fs中創建input目錄

hadoop fs –mkdir input

(2) 將我們的數據放在fs上

hadoop fs -copyFromLocal/usr/local/hadoop/input/* /input

 在網頁中查看複製到fs上的文件

 

 

(3) 運行wordcount程序

hadoop jar/usr/local/hadoop/hadoop-2.7.1/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.1.jarwordcount /input output

 

結束:

 

可以在網頁上查到fs上生成了一個文件:

 

 

(4)  查看執行結果

hadoop fs -cat/user/root/output/part-r-00000

 

7  配置YARN

配置mapred-site.xml 和yarn-site.xml中

(1) 配置mapred-site.xml

因爲已經有了mapred-site.xml.template作爲備份文件,因此我們在建立一個內容和mapred-sit.xml.template一樣的mapred-site.xml

在配置文件中添加以下內容,將mapreduce執行過程中的資源控制權交給YARN:

 

(2) 配置yarn-site.xml

先備份yarn的配置文件

copy –rf yarn-site.xml yarn-site.xml.bak

 

在配置文件中添加以下信息:

 

(3) 啓動yarn 否則mapreduce在執行過程中找不到資源

start-yarn.sh

可以發現多了ResourceManager資源管理器的進程和NodeManager的進程

 

(4) 驗證yarn

在瀏覽器中輸入:http://localhost:8088/

成功配置yarn將會出現如下信息

 

8  配置YARN後執行wordcount程序

 

執行過程:

 

執行結束:

 

9  配置hadoop爲完全分佈式

9.1  準備操作系統

(1) 先移除虛擬機中的鏡像

 

(2) 查看我們安裝好的僞分佈式Ubuntu文件大小,實際使用大概5G,默認分配了30G

 

我們的分佈式選擇三臺系統,這裏我們在虛擬機中建立三個Ubuntu系統(有條件的話還是放在真實物理機器上吧),我們需要90G來存儲這三個Ubuntu系統

(3) 在本地操作系統複製三份鏡像,根據磁盤的大小將鏡像放在同一個盤符或者不同的盤符

 

我們在E盤已經有個鏡像文件,我們把E盤的鏡像文件給F盤複製一份,G盤複製一份

並且把E盤的鏡像命名爲master作爲namenode和datanode節點,把F盤和G盤的鏡像分別命名爲slave1和slave2分別作爲datanode節點

 

(4) 在虛擬機中加載系統

打開虛擬機->文件->打開

 

隨後我們可以看到在虛擬機中加載到了一臺Ubuntu系統

 

我們把E盤鏡像在虛擬機中的名字改爲:master

 

我們在用同樣的方法將f盤和G盤的鏡像加載進虛擬機分別命名爲slave1和slave2

 

啓動每臺虛擬機:

開機時選擇我已複製該虛擬機。

9.2  前期準備

(1) 修改主機名

分別將E,F,G盤對應的主機名改爲master,slave1,slave2,因爲E盤的主機名已經是master,現在我們就用F盤爲例修改主機名:

修改前:

 

vim /etc/hostname #打開文件後我們發現默認名稱爲master

 

修改爲:slave1並保存,並且重啓.

 

同樣修改G盤的主機名爲slave2

(2) 配置主機名和ip的對應的關係

查看本機ip地址:

Ifconfig

 

分別查看master,slave1,slave2的地址

master: 192.168.189.130

slave1: 192.168.189.131

slave2: 192.168.189.132

配置每臺機器的/etc/hosts文件如下:

 

在每臺機器上ping以下每個ip看是否通

9.3  使用ssh無密碼互相訪問

A.  ssh 公鑰私鑰相同,當然可以直接訪問,現在我們就是這種方式

B.  每臺機器的公鑰和私鑰都不同,下面我們主要講這種方法:

a)  我們先刪除每臺機器原公鑰私鑰信息

rm –rf ~/.ssh/*

b)  再在每臺機器上分別生成公鑰信息和私鑰信息

 

公鑰和私鑰存放的路徑爲~/.ssh/下

在將自己的公鑰存放在authorized_keys中(重要)

 

c)  把slave1和slave2的公鑰id_rsa.pub分別重命名爲id_rsa.pubs1,id_rsa.pubs2並且傳給master 在拷貝過程需要master的密碼

 

Slave2

 

在master上查看會有如下文件,證明成功將文件傳送過來

 

d)  在master上合併公鑰

 

e)  將合併後的公鑰文authorized_keys件發送給slave1和slave2

 

f)  互相測試用ssh無密碼登錄

 

9.4  修改配置文件

(1) 修改所有機器core-site.xml和mapred-site.xml中的localhost爲master

我們先修改master機器

 

(2) 修改所有機器hdfs-site.xml中的df.replication的value值爲3

我們先修改master機器

(3) 修改/usr/local/hadoop/hadoop-2.7.1/etc/hadoop/slaves

代表master,slave1,slave2都被作爲datanode節點

 

(4) 將master配置的信息(xml文件和slaves文件)發送給slave1和slave2

 

將slaves發送到各個節點

 

9.5  測試

a)  格式化hdfs :hadoop namenode –format

 

b)  啓動start-all.sh

 

啓動後master運行的進程:

 

Slave運行的進程:

Slave1

 

Slave2

 

在這裏我們即把master作爲namenode又把master作爲datenode。

/usr/local/hadoop/hadoop-2.7.1/etc/hadoop/slaves就是要設置的節點

10 在完全分佈式上運行wordcount

(1) 在hdfs上建立一個input目錄用來存放數據

 

(2) 將數據放在hdfs上

 

(3) 執行wordcount程序

 

 

(4) 查看mapreduce執行結果

 

11 常見問題

11.1     no datanode to stop

原因:每次執行“hadoop namenode -format”命令格式化文件系統的時候會出現一個新的namenodeId,

解決辦法:把master,slave1,slave2上/usr/local/hadoop/hadoop-2.7.1/下面的tmp內容清空,再把/usr/local/hadoop/hadoop-2.7.1/hdfs內容清空

 

發佈了29 篇原創文章 · 獲贊 11 · 訪問量 7萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章