1. 程式人生 > 其它 >Hadoop的叢集(全分散式)安裝配置—Hadoop2.7.3-Centos7

Hadoop的叢集(全分散式)安裝配置—Hadoop2.7.3-Centos7

此處例如三臺主機:
NameNode:Master
DataNode:slave2、slave3

一、環境準備

1.1 建立使用者
1.2 關閉防火牆
1.3 免密登入
1.4 JDK安裝

二、下載安裝

三、NameNode核心檔案配置

3.1 hadoop-env.sh
3.2 hdfs-site.xml
3.3 core-site.xml
3.4 mapred-site.xml
3.5 yarn-site.xml
3.6 slaves

四、DateNode安裝配置

五、啟動檢驗

--------

一、環境準備(三臺主機同樣操作)

1.1 建立使用者

1,登入root使用者
2,新增使用者

# useradd -m hadoop -s /bin/bash

3,設定密碼

# passwd hadoop
更改使用者 hadoop 的密碼 。
新的 密碼:
無效的密碼: 密碼少於 8 個字元
重新輸入新的 密碼:
passwd:所有的身份驗證令牌已經成功更新。

(提示可以不用理會)
4,新增sudo許可權
1.4.1 `# visudo' 進入編輯模式

1.4.2 在接下述文字後新增:hadoop ALL=(ALL) ALL

## Allow root to run any commands anywhere
root    ALL=(ALL)       ALL

即:

##
## Allow root to run any commands anywhere
root    ALL=(ALL)       ALL
hadoop  ALL=(ALL)       ALL

1.4.3 儲存退出

1.2 關閉防火牆

systemctl stop firewalld.service
systemctl disable firewalld.service
systemctl status firewalld.service   //檢視防火牆狀態

另外可設定主機名vi /etc/hosts
1921.168.X.X 主機名

1.3 免密登入

$ ls ~/.ssh         # 如果有檔案可以刪除重新進行生成祕鑰
ls: 無法訪問'/home/hadoop/.ssh': 沒有那個檔案或目錄
$ exit                           # 退出剛才的 ssh localhost
$ cd ~/.ssh/                     # 若沒有該目錄,請先執行一次ssh localhost
$ ssh-keygen -t rsa              # 會有提示,都按回車就可以
$ ssh-copy-id -i .ssh/id_rsa.pub hadoop@Master  # 將所有機器的私鑰複製到Master機器上

將Master的authorized_keys檔案拷到其他節點:

scp /home/hadoop/.ssh/authorized_keys  hadoop@salve2:/home/hadoop/.ssh/
scp /home/hadoop/.ssh/authorized_keys  hadoop@salve3:/home/hadoop/.ssh/

此時再用 ssh localhost、ssh slave2、... 命令,無需輸入密碼就可以直接登陸了.

1.3 JDK1.8安裝

下載地址:jdk1.8
1.3.1 在Linux命令列介面中,執行如下Shell命令(當前登入使用者名稱是hadoop):

$ cd /usr
$ sudo mkdir jvm #建立/usr/jvm目錄用來存放JDK檔案
$ cd ~ #進入hadoop使用者的主目錄
$ cd download  #該目錄為自己建立,存放了jdk-8u301-linux-x64.tar.gz
$ sudo tar -zxvf ./jdk-8u301-linux-x64.tar.gz -C /usr/jvm/  #把JDK檔案解壓到/usr/lib/jvm目錄下
$ cd /usr/jvm
$ sudo mv ./jdk1.8.0_301/ ./jdk1.8

1.3.2 設定環境變數

$ vi ~/.bash_profile

加入下文字內容:

JAVA_HOME=/usr/jvm/jdk1.8
export JAVA_HOME
PATH=$JAVA_HOME/bin:$PATH
export PATH
$ source ~/.bash_profile

這時,可以使用如下命令檢視是否安裝成功:

$ java -version

如果能夠在螢幕上返回如下資訊,則說明安裝成功:

java version "1.8.0_301"
Java(TM) SE Runtime Environment (build 1.8.0_301-b09)
Java HotSpot(TM) 64-Bit Server VM (build 25.301-b09, mixed mode)

二、下載安裝(在Master機器hadoop使用者上操作)

2.1 下載地址:hadoop-2.7.3,下載hadoop-2.7.3.tar.gz;
2.2 解壓

sudo mkdir /usr/local/hdfs
sudo tar -zxvf ~/download/hadoop-2.7.3.tar.gz -C /usr/local/hdfs/    
cd /usr/local/hdfs
sudo mv ./hadoop-2.7.3/ ./hadoop            # 將資料夾名改為hadoop
sudo chown -R hadoop ./hadoop       # 修改檔案權

2.3 環境配置
如果方便後面進行版本更換,可以先建立軟連線

sudo ln -s /usr/local/hdfs/hadoop ~/hdfs/hadoop

設定Hadoop的環境變數 vi ~/.bash_profile,加入以下文字:
HADOOP_HOME=/home/hadoop/hdfs/hadoop
export HADOOP_HOME
PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH
export PATH
生效環境變數source ~/.bash_profile
檢視環境變數是否生效:
在任何介面輸入hadoop,然後連續按兩下Tab鍵,顯示下面內容則設定成功:

$ hadoop
hadoop             hadoop.cmd         hadoop-daemon.sh   hadoop-daemons.sh

三、核心檔案配置

需要修改“/usr/local/hdfs/hadoop/etc/hadoop”目錄下的配置檔案

$ cd /usr/local/hdfs/hadoop/etc/hadoop

3.1 hadoop-env.sh

# The java implementation to use.
export JAVA_HOME=/usr/jvm/jdk1.8

3.2 hdfs-site.xml

<!--資料塊的冗餘度,預設是3-->
<!--一般來說,資料塊冗餘度跟資料節點的個數一致,最大不超過3-->
<property>
  <name>dfs.replication</name>
  <value>3</value>
</property>

<!--禁用了HDFS的許可權檢查-->
<property>
  <name>dfs.permissions</name>
  <value>false</value>
</property>

可設定資料儲存路徑

<property>
	<name>dfs.namenode.name.dir</name>
	<value>file:/usr/local/hdfs/hadoop/tmp/dfs/name</value>
</property>
<property>
	<name>dfs.datanode.data.dir</name>
	<value>file:/usr/local/hdfs/hadoop/tmp/dfs/data</value>
</property>

3.3 core-site.xml

$ sudo mkdir /usr/local/hdfs/hadoop/tmp
<!--配置NameNode的地址-->
<!--9000是RPC通訊的埠-->
<property>
  <name>fs.defaultFS</name>
  <value>hdfs://hostname:9000</value>       # 需要換成自己的hostname
</property>
<!--HDFS對應的作業系統目錄-->
<!--預設值是Linux的tmp目錄-->
<property>
  <name>hadoop.tmp.dir</name>
  <value>/usr/local/hdfs/hadoop/tmp</value>
</property>

3.4 mapred-site.xml

$ sudo cp ./mapred-site.xml.template ./mapred-site.xml
<!--配置MapReduce執行的框架是Yarn-->
<property>
  <name>mapreduce.framework.name</name>
  <value>yarn</value>
</property>

3.5 yarn-site.xml

<!--配置ResourceManager的地址-->
<property>
  <name>yarn.resourcemanager.hostname</name>
  <value>hostname</value>                           # 需要改成自己的hostname
</property>
<!--MapReduce執行的方式是洗牌-->
<property>
  <name>yarn.nodemanager.aux-services</name>
  <value>mapreduce_shuffle</value>
</property>

3.6 slaves

slave2
slave3

四、其他節點安裝配置
sudo scp -r /usr/local/hdfs/hadoop hadoop@:/usr/local/hdfs/
sudo scp -r /usr/local/hdfs/hadoop hadoop@:/usr/local/hdfs/
...

五、啟動檢驗

首次啟動Hadoop叢集時,需要先在Master節點執行名稱節點的格式化(只需要執行這一次,後面再啟動Hadoop時,不要再次格式化名稱節點),命令如下:

$ hdfs namenode -format

成功的話,會看到 “successfully formatted” 的提示,具體返回資訊類似如下:

......
 INFO common.Storage: Storage directory /usr/local/hdfs/hadoop/tmp/dfs/name has been successfully formatted.
......
 INFO util.ExitUtil: Exiting with status 0
 INFO namenode.NameNode: SHUTDOWN_MSG: 
/************************************************************
SHUTDOWN_MSG: Shutting down NameNode at xiaojy/10.66.50.119
************************************************************/

啟動Hadoop: start-all.sh
通過jps檢視啟動狀態:

256547 DataNode
257314 NodeManager
256982 ResourceManager
257478 Jps
256762 SecondaryNameNode
256360 NameNode

啟動後通過命令“hdfs dfsadmin -report”檢視資料節點是否正常啟動,如果螢幕資訊中的“Live datanodes”不為 0 ,則說明叢集啟動成功。

Live datanodes (1):

Name: *******
Hostname: *******
Decommission Status : Normal
Configured Capacity: 357973671936 (333.39 GB)
......