1. 程式人生 > 其它 >hadoop完全分散式部署

hadoop完全分散式部署

軟體版本

虛擬機器管理軟體:VMware WorkStation Pro 12.0
作業系統:CentOS 6.7
Hadoop:Hadoop 2.7.4
JDK:jdk-8u65-linux-x64.tar.gz

一、環境準備
1、 修改各個節點主機名:vi /etc/sysconfig/network

NETWORKING=yes
HOSTNAME=node1

2、修改主機名和IP的對映關係:vi /etc/hosts

192.168.66.201 node1
192.168.66.202 node2
192.168.66.203 node3

3、設定ssh免密登入

在node1上執行:ssh-keygen -t rsa  (四個回車),生成公鑰和私鑰
將公鑰拷貝到要免密登陸的目標節點上

 --    ssh-copy-id node2

 --    ssh-copy-id node3

注意:生成的金鑰在目錄:/root/.ssh
4、檢視防火牆狀態(必須處於關閉狀態)

檢視防火牆狀態:service iptables status

關閉防火牆:service iptables stop

檢視防火牆開機啟動狀態 :chkconfig iptables --list

關閉防火牆開機啟動 :chkconfig iptables off
5、JDK 環境安裝

a、遞迴建立目錄

mkdir -p /export/server
mkdir -p /export/data

b、上傳jdk安裝包:jdk-8u65-linux-x64.tar.gz

c、tar -zxvf jdk-8u65-linux-x64.tar.gz -C /export/server/

d、配置環境變數:vi /etc/profile

export JAVA_HOME=/export/server/jdk1.8.0_65
export PATH=$PATH:$JAVA_HOME/bin
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

e、重新整理配置檔案:source /etc/profile(暫時可不操作)

6、系統時間同步(兩種方式)

第一種:手動同步

a、安裝ntp伺服器:yum -y install ntpdate

b、各節點執行:ntpdate cn.pool.ntp.org

第二種:使用NameNode當作伺服器

a、安裝ntp伺服器:yum -y install ntpdate

b、在node1上與網路伺服器同步:ntpdate cn.pool.ntp.org

c、DateName節點上開啟ntp服務:service ntpd start

d、各節點同步Namenode伺服器時間:ntpdate node1
二、Hadoop 叢集安裝

提示:hadoop的核心配置檔案,有預設的配置檔案core-default.xml、hdfs-default.xml、mapred-default.xml、yarn-default.xml
core-default.xml,且與對應在目錄/export/server/hadoop-2.7.4/etc/hadoop下的配置檔案功能相同,但是目錄/export/server/hadoop-2.7.4/etc/hadoop下的配置檔案配置的屬性優先順序更高,Hadoop叢集啟動時優先讀取,如果在core-site.xml裡沒有配置屬性,則自動讀取預設配置檔案裡的屬性的值。
1、安裝Hadoop

a、上傳Hadoop安裝包到/export/server:hadoop-2.7.4-with-centos-6.7.tar.gz

b、當前目錄解壓:tar -zxvf hadoop-2.7.4-with-centos-6.7.tar.gz

hadoop-2.7.4-with-centos-6.7.tar.gz解壓後目錄結構如下:

bin:Hadoop 最基本的管理指令碼和使用指令碼的目錄,這些指令碼是 sbin 目錄下管理指令碼的基礎實現,使用者可以直接使用這些指令碼管理和使用Hadoop
etc:Hadoop配置檔案所在的目錄,包括core-site,xml、hdfs-site.xml、 mapred-site.xml 等從 Hadoop1.0 繼承而來的配置檔案和 yarn-site.xml 等 Hadoop2.0新增的配置檔案
include:對外提供的程式設計庫標頭檔案(具體動態庫和靜態庫在lib目錄中),這些標頭檔案均是用C++定義的,通常用於C++程式訪問HDFS或者編寫MapReduce 程式
lib:該目錄包含了Hadoop對外提供的程式設計動態庫和靜態庫,與include目錄中的標頭檔案結合使用
libexec:各個服務對用的shell配置檔案所在的目錄,可用於配置日誌輸出、啟動引數(比如JVM引數)等基本資訊
sbin:Hadoop管理指令碼所在的目錄,主要包含HDFS和YARN中各類服務的啟動/關閉指令碼
share:Hadoop各個模組編譯後的jar包所在的目錄
2、Hadoop 配置檔案修改
a、vi hadoop-env.sh

export JAVA_HOME=/export/server/jdk1.8.0_65

解釋:Hadoop執行時依賴JDK的環境,JAVA_HOME是必須設定的。且需要在配置檔案hadoop-env.sh中指定JDK安裝目錄,因為Hadoop 即使是在本機上執行,它也是把當前的執行環境當成遠端伺服器,也就是說之前系統環境變數對Haddop來說時無效的。
b、vi core-site.xml

fs.defaultFS hdfs://node1:9000 hadoop.tmp.dir /export/data/hadoop

c、vi hdfs-site.xml

dfs.replication 2 dfs.namenode.secondary.http-address 192.168.66.202:50090

d、vi mapred-site.xml

第一步:cp mapred-site.xml.template mapred-site.xml

第二步:vi mapred-site.xml

mapreduce.framework.name yarn

解釋:目錄/export/server/hadoop-2.7.4/etc/hadoop沒有mapred-site.xml,但提供了一個mapred-site.xml.template,因此只需要拷貝一份模板配置檔案,並修改成mapred-site.xml即可。
e、vi yarn-site.xml

yarn.resourcemanager.hostname node1 yarn.nodemanager.aux-services mapreduce_shuffle

f、vi slaves

node1
node2
node3

slaves檔案裡面記錄的是叢集主機名,一般有以下兩種作用:

第一種:配合一鍵啟動指令碼如start-dfs.sh、stop-yarn.sh用來進行叢集啟動。這時候slaves檔案裡面的主機標記的就是從節點角色所在的機器。

第二種:可以配合hdfs-site.xml裡面dfs.hosts屬性形成一種白名單機制,配置如下:

<!-- dfs.hosts指定一個檔案 --> dfs.hosts <!-- 必須指定檔案的完整路徑名允許連線到NameNode的主機列表,如果值為空,則允許所有主機 --> /export/server/hadoop-2.7.4/etc/hadoop/slaves

g、Hadoop 環境變數

配置環境變數:vi /etc/profile

export HADOOP_HOME=/export/server/hadoop-2.7.4
export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

重新整理配置檔案: source /etc/profile(暫時可不操作)

h、拷貝Hadoop 解壓包及系統配置檔案profile到其他節點所在主機,即node2、node3

scp –r /export/server/hadoop-2.7.4 root@node2:/export/server

scp –r /export/server/hadoop-2.7.4 root@node3:/export/server

scp –r /etc/profile root@node2:/etc

scp –r /etc/profile root@node3:/etc

各節點所在主機重新整理配置檔案:source /etc/profile(必須操作)
三、Hadoop 叢集啟動

首次啟動HDFS時,必須對其進行格式化操作。本質上是一些清理和準備工作,因為此時的HDFS在物理上還是不存在的

格式化命令:hdfs namenode –format(hadoop namenode –format已過時)
1、單節點逐個啟動

主節點上啟動HDFS NameNode:hadoop-daemon.sh start namenode

各從節點上啟動HDFS DataNode:hadoop-daemon.sh start datanode

主節點上啟動YARN ResourceManager:yarn-daemon.sh start resourcemanager

各從節點上啟動YARN nodemanager:yarn-daemon.sh start nodemanager

提示:$HADOOP_PREFIX/sbin/目錄下。如果想要停止某個節點上某個角色,只需要把命令中的start改為stop即可
2、指令碼一鍵啟動

啟動HDFS叢集:$HADOOP_PREFIX/sbin/start-dfs.sh

啟動YARN叢集: $HADOOP_PREFIX/sbin/start-yarn.sh

同時啟動HDFS、YARN叢集:$HADOOP_PREFIX/sbin/stop-yarn.sh(不推薦,仍可使用)

停止HDFS叢集:$HADOOP_PREFIX/sbin/stop-dfs.sh、stop-yarn.sh

停止YARN叢集:$HADOOP_PREFIX/sbin/stop-yarn.sh

過時的指令碼:stop-all.sh(不可使用)
3、訪問叢集 web-ui

一旦Hadoop叢集啟動並執行,可以通過web-ui進行叢集檢視,如下所述:

NameNode http://nn_host:port/ 預設50070

訪問URL:http:node1:50070或者http:192.169.66.201:50070

ResourceManager http://rm_host:port/ 預設 8088

訪問URL:http:node1:8088或者http:192.169.66.201:8088

提示:需要配置本地主機名和IP的對映關係,才能使用NameNode http://nn_host:port/ 形式訪問

192.168.66.201 node1
192.168.66.202 node2
192.168.66.203 node3

提示:使用命令驗證叢集是否正常啟動:jps,需要關注各節點的職責、身份

27408 NameNode
28218 Jps
27643 SecondaryNameNode
28066 NodeManager
27803 ResourceManager
27512 DataNode

四、操作HDFS常用的Shell命令介紹
1、顯示檔案、目錄資訊:ls

用法:hadoop fs -ls [-d] [-h] [-R]

-d:目錄列為純檔案

-h:以人類可讀的方式格式化檔案大小

-R:遞迴列出遇到的子目錄

例子:hadoop fs -ls -R /user/hive/warehouse/
2、建立目錄:mkdir

用法:hadoop fs -mkdir [-p]

-p:遞迴建立目錄

例子:hadoop fs -mkdir /user/hadoop/dir1
3、上傳檔案:put

功能:將單個src或多個srcs從本地檔案系統複製到目標檔案系統

用法:hadoop fs -put [-f] [-p] [ localsrc2. ]

-p:保留訪問和修改時間,所有權和許可權。(假設許可權可以跨檔案系統傳播)

-f:覆蓋目標(如果已存在)

例子:

hadoop fs -put localfile /user/hadoop/hadoopfile

hadoop fs -D dfs.replication=1 -put localfile /user/hadoop/hadoopfile        上傳檔案的同時指定副本數為1

4、下載檔案:get

功能:將檔案複製到本地檔案系統

用法:hadoop fs -get [-p]

-p:保留訪問和修改時間,所有權和許可權。(假設許可權可以跨檔案系統傳播)
-f:覆蓋目標(如果已存在)

例子:hadoop fs -get hdfs://node1:9000/wordcount/input/wordcount.log

注意:hadoop fs -get hdfs://node1:9000/wordcount/input/ wordcount.log 這種形式是先建立wordcount.log目錄,再將wordcount.log檔案上傳到wordcount.log目錄下
5、追加檔案內容:-appendToFile

功能:將單個src或多個srcs從本地檔案系統附加到目標檔案系統的末尾

用法:hadoop fs -appendToFile ...

例子:hadoop fs -appendToFile localfile1 localfile2 /user/hadoop/hadoopfile
6、檢視檔案內容:cat

功能:顯示檔案內容到stdout

用法:hadoop fs -cat URI [URI ...]

例子:hadoop fs -cat localfile /user/hadoop/hadoopfile
7、跟追日誌:tail

功能:顯示檔案的最後一千位元組到stdout

用法:hadoop fs -tail [-f] URI

-f:持續輸出檔案增加的資料資訊

例子:hadoop fs -tail /hadoop/hadoopfile
8、拷貝檔案到本地:copyToLocal

功能:複製HDFS系統檔案到本地檔案系統中,與get命令類似,但目標只能是本地檔案

用法:hadoop fs -copyToLocal [-ignorecrc] [-crc] URI

例子:hadoop fs -copyToLocal /dim_time_dat.txt /root/data/
9、拷貝檔案到HDFS:copyFromLocal

功能:複製本地系統檔案到HDFS檔案系統中,與put命令類似,但原始檔只能是本地檔案

用法:hadoop fs -copyFromLocal URI

-p:保留訪問和修改時間,所有權和許可權。(假設許可權可以跨檔案系統傳播)
-f:覆蓋目標(如果已存在)

例子:hadoop fs -copyFromLocal -f dim_time_dat.txt /
10、拷貝檔案(同系統中):cp

功能:將檔案從源複製到目標。此命令也允許多個源,在這種情況下,目標必須是目錄

用法:hadoop fs -cp [-f] [-p | -p URI [URI ...]

-p:如果目標已存在,則-f選項將覆蓋目標

例子:hadoop fs -cp -f /dim_time_dat.txt /
11、合併檔案:getmerge

功能:合併下載多個檔案

用法:hadoop fs -getmerge [-nl]

例子:hadoop fs -getmerge -nl /a.txt /b.txt /c.txt
12、刪除檔案、目錄:rm

功能:刪除指定的檔案。只刪除非空目錄和檔案。

用法:hadoop fs -rm [-f] [-r | -R] [-skipTrash] URI [URI ...]

-r:選項以遞迴方式刪除目錄及其下的任何內容

例子:hadoop fs -rm -r /a.txt /b.txt /c.txt
13、修改HDFS檔案的副本數:setrep

功能:改變一個檔案的副本系數;如果path是目錄,則命令以遞迴方式更改以path為根的目錄樹下的所有檔案的複製因子

用法:hadoop fs -setrep [-R] [-w]

-w:標誌請求命令等待複製完成。這可能需要很長時間

-R :選項用於遞迴改變目錄下所有檔案的副本系數

例子:hadoop fs -setrep -w 3 /dim_time_dat.txt

hadoop fsck -locations:檢視當前hdfs的副本數
14、檢視HDFS檔案系統可用空間:df

用法:hadoop fs -df [-h] URI [URI ...]

例子:hadoop fs -df -h /
15、顯示檔案大小:du

用法:hadoop fs -du [-s] [-h] URI [URI ...]

-s選項將導致顯示檔案長度的彙總摘要,而不是單個檔案。
-h選項將以“人類可讀”的方式格式化檔案大小(例如64.0m而不是67108864)

例子:hadoop fs -du -s /dim_time_dat.txt
五:格式化HDFS檔案系統

前提條件:關閉HDFS叢集、YARN叢集(否則格式化不成功)

1、刪除所有節點的資料目錄

rm -rf /export/data/hadoop

2、刪除所有節點的日誌檔案

rm -rf /export/server/hadoop-2.7.4/logs/*

3、在node1節點上,重新格式化

hdfs namenode -format

作者:jinYwuM
來源:CSDN
原文:https://blog.csdn.net/jinYwuM/article/details/81210353
版權宣告:本文為博主原創文章,轉載請附上博文連結!