Hadoop學習筆記(1) - Hadoop2.7環境搭建教程

一. 集羣規劃

1.1 集羣節點分配

注意 : 可以根據自己電腦配置調整 , 如果配置比較低就少配置幾臺子節點

主機名 主機IP
master 192.168.100.100
slave1 192.168.100.101
slave2 192.168.100.102
slave3 192.168.100.1003

1.2 軟件版本

軟件名稱 軟件版本
Java 1.8.0_152
Centos CentOS-7-x64-1708
Hadoop 2.7.7

1.3 各軟件安裝路徑

軟件名 安裝路徑
Hadoop /opt/SoftWare/Hadoop/
Java /opt/SoftWare/Java/

二. 各主機基礎軟件安裝及操作

特別注意 : 四臺主機均按照下面步驟安裝基礎軟件工具

2.1 openssh安裝,便於遠程上傳文件

[root@master ~]# yum -y install openssh-clients

2.2 同步時間工具

#安裝ntpdate工具
[root@master ~]# yum -y install ntp ntpdate
#設置與網絡時間同步
[root@master ~]# ntpdate cn.pool.ntp.org
#系統時間寫入硬件時間
[root@master ~]# hwclock --systohc

2.3 文件上傳(rz)下載(sz)工具

可以在Xshell工具中通過rz調出上傳文件的窗口進行文件上傳,也可以通過sz 文件名下載
某一個文件

[root@master ~]# yum -y install lrzsz

2.4 安裝網絡下載工具 wget

[root@test ~]# yum -y install wget

2.5 關閉防火牆

注意 : 我們只需要執行關閉防火牆以及禁止開機啓動防火牆的命令即可!

#查看防火牆開啓狀態
[root@test ~]# systemctl status firewalld
#關閉防火牆
[root@test ~]# systemctl stop firewalld
#禁止開機啓動防火牆
[root@test ~]# systemctl disable firewalld
#開啓防火牆
[root@test ~]# systemctl start firewalld
#設置開機啓動防火牆
[root@test ~]# systemctl enable firewalld
#重啓防火牆
[root@test ~]# systemctl restart firewalld

三. 配置SSH免密碼登錄

注意 : 四臺主機均按照步驟2安裝基礎軟件工具

3.1 修改hosts文件

注意 : 添加以下內容,是四臺主機都需要添加的

[root@master ~]# vi /etc/hosts
#127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
#::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.100.100 master
192.168.100.101 slave1
192.168.100.102 slave2
192.168.100.103 slave3

3.2 配置SSH免密登錄

3.2.1 創建.ssh目錄

  1. 在每臺機器的root目錄下創建一個.ssh 文件夾
[root@master ~]# mkdir .ssh
  1. 每臺機器均進入~/.ssh 目錄進行操作
[root@master ~]# cd ~/.ssh

3.2.2 創建公鑰和祕鑰

  1. 在每臺機器的root目錄下創建一個.ssh 文件夾
[root@master ~]# mkdir .ssh
  1. 每臺機器均進入~/.ssh 目錄進行操作
[root@master ~]# cd ~/.ssh
  1. 輸入以下命令,一路回車,用以產生公鑰和祕鑰
[root@master .ssh]# ssh-keygen -t rsa -P ''
  1. 出現以下信息說明生成成功
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:6YO1h1emM9gcWvv9OT6ftHxLnjP9u8p25x1o30oq3No root@master
The key's randomart image is:
+---[RSA 2048]----+
| |
| |
| |
| . |
| S o o |
| + O * . |
| . B.X. o.+.|
| +o=+=**%|
| .oEo*^^|
+----[SHA256]-----+

3.2.3 合併公鑰文件

  1. 將每臺機器上的id_rsa.pub公鑰內容複製到authorized_keys文件中
[root@master .ssh]# cp id_rsa.pub authorized_keys
  1. 將所有的authorized_keys文件進行合併(最簡單的方法是將其餘三臺slave主機的文件內容追加到master主機上)

    注意 : 這個是在三臺機器上分別執行的 , 注意下面的主機名

[root@slave1 .ssh]# cat ~/.ssh/authorized_keys | ssh root@master 'cat >>
~/.ssh/authorized_keys'
[root@slave2 .ssh]# cat ~/.ssh/authorized_keys | ssh root@master 'cat >>
~/.ssh/authorized_keys'
[root@slave3 .ssh]# cat ~/.ssh/authorized_keys | ssh root@master 'cat >>
~/.ssh/authorized_keys
  1. 查看master上的authorized_keys文件內容,類似如下即可
ssh-rsAAAAB3NzaC1yc2EAAAADAQABAAABAQC5iw8+LlLxo0d77uaTChOKKJqfMHzp2jgzqV2hFAneFXqqWmr
36Z4/FrMUPenmdss19bP4Up9G7PGbJu29yZDvkDwlmuqnVajYyDOsCl7PPXPWXMIlxMGUHgSXLnQQi6QnWp04vJKD37s0EbiRTd0ZYCSQefzJcZ8jbQ7bLYt6jtil7FfUupTdHTeexKKd8Mq3K7YFZHumKvhzs6wWiM+n41jANS083ss3O38YmAdO2cU0w1BhLVvJhdzd6fNG3RXVCXI2v0XxCUHiqI9Oewl2qPOfKzeyy09bJxo371Ezjmt8GMrkA/Ecepkvx1392qwNzC9bSPLfbnPWVo2gIxe4mMaFqCFJ root@master

40ssh-AAAAB3NzaC1yc2EAAAADAQABAAABAQC3CkB3Jejavt+yFphsbciktWciJmbcUBOv3ZLPVLW18ZxXGZK
41vG50EPXo/4By7P6IRW0wCa5YuckQEW+q6kmSatxqJ8e/K9a1mAk13N4f7V7M71Nn8IkujlF3gHYjKrmnEWpGJCy425YBURzywIQTRArlIac1xj2SeM6q+gTMV9WrAKJupIRHli+W0kHVaYHNdKl7KMUT4KVrSl+h4wFwAd7Tcyj7JIbU43cCCL6o/v/LqGFwpcJfbfUsuKJJho+tImh41j7mSXR8kRbTSZkcq5K+iANrANwOHZ58tV5KXmMQjuVq7aJ985C1446hHssB6zq/zjAxpxAyQIeE8Incc8U8ix root@slave1

45ssh-AAAAB3NzaC1yc2EAAAADAQABAAABAQC//uaMbzbkYqxdgZJSdq+gdQYldzMQ7D3SxsUaNO5oVnVOszw
46+mbNnmL8vp1EUUehabQHPCAvCmLKUPXzfcxlyJEF/pnY77u4ySwsRVEpHvsDZbrclgCOrS6hW00sSx303KHLOgX47T70LfrmnohfUhvTxajzLXT+C8f5ZfTZ8meKD73HKl16jRwZQ8YhW9GUyuCkgQTGtKtTKPsRUd9LpAc/7/u8xvvv48NvTYPxgyTJcUMzGSOHh8J3upI54ykY0FgBkjs1fCUaDalxAgsHw9B1iyx706WbcT6ymiQVMKGnnnM6k2KPvUvfD490swVfUSG+4ZsYSRHRTgWuiBbHoIr7DVd root@slave2

50ssh-AAAAB3NzaC1yc2EAAAADAQABAAABAQDDTzTTdGRTd1zts3m7uKobcgRom4lVyF9EdNOdbBWMucYjbCs
51BgP1ideDDQed2TyBj3Szz3Yx6h1L4McGmATY/D9qRLml26VW/x0Tod8JYkqOQpQL9knLW2cwITnhLzq5VDugOix5206r/uweP3Zed9CO7ld3jUxJJNZCYpsNz+eUKq9SWM5+ehUu9pfZZu9zUk7Q01js3uCHzu1AhsajgNzgB4+YLLcc53dHBfxGg4ix5wuaF82PlEEh70hTdfRkq8pqPMZ+FIQtTgfD5XllKTcnPItUY23hc7Umx4I3ujOd810vzffWYK07c54Otv1r7LEcYtYqbZ6zIvII+M775iRkzQX root@slave3

3.2.4 分發 authorized_keys 文件

  1. 將master上的authorized_keys文件分發到其他主機上
[root@master .ssh]# scp ~/.ssh/authorized_keys root@slave1:~/.ssh/
[root@master .ssh]# scp ~/.ssh/authorized_keys root@slave2:~/.ssh/
[root@master .ssh]# scp ~/.ssh/authorized_keys root@slave3:~/.ssh/

3.2.5 測試免密登錄

  1. 每臺機器之間進行ssh免密碼登錄操作,包括自己與自己
[root@master ~]# ssh master
[root@master ~]# ssh slave1
[root@slave1 ~]# ssh master
[root@master ~]# ssh slave2
[root@slave2 ~]# ssh master
[root@master ~]# ssh slave3
[root@slave3 ~]# ssh master
[root@master ~]# ssh slave1
[root@slave1 ~]# ssh slave1
[root@slave1 ~]# ssh slave2
[root@slave2 ~]# ssh slave1
[root@slave1 ~]# ssh slave3
[root@slave3 ~]# ssh slave1
[root@slave1 ~]# ssh slave2
[root@slave2 ~]# ssh slave2
[root@slave2 ~]# ssh slave3
[root@slave3 ~]# ssh slave2
[root@slave2 ~]# ssh slave3
[root@slave3 ~]# ssh slave2
[root@slave2 ~]# ssh slave3
[root@slave3 ~]# ssh slave3

四. 安裝配置Java環境並測試

注意 : 所有主機都需要配置Java環境

4.1 下載jdk

下載地址 :https://repo.huaweicloud.com/java/jdk/8u152-b16/jdk-8u152-linux-x64.tar.gz

4.2 卸載其他jdk

如果centos中已經安裝的有jdk,則需要先卸載當前jdk,重新安裝新的jdk

4.2.1 查詢當前所有安裝的jdk版本

[root@master ~]# rpm -qa|grep jdk

如果什麼都沒有展示說明沒有已安裝的jdk,則無需卸載,如果出現以下jdk,則卸載之

copy-jdk-configs-2.2-3.el7.noarch
java-1.8.0-openjdk-1.8.0.131-11.b12.el7.x86_64
java-1.8.0-openjdk-headless-1.8.0.131-11.b12.el7.x86_64

4.2.2 卸載jdk

  1. 使用下面的方法卸載即可 [參考]

    [root@master ~]# yum -y remove copy-jdk-configs-2.2-3.el7.noarch
    [root@master ~]# yum -y remove java-1.8.0-openjdk-1.8.0.131-11.b12.el7.x86_64
    [root@master ~]# yum -y remove java-1.8.0-openjdk-headless-1.8.0.131-11.b12.el7.x86_64
    
  2. 再次查詢當前所有安裝的jdk版本

    [root@master ~]# rpm -qa|grep jdk
    

4.3 開始安裝jdk

4.3.1 在master主節點上創建指定目錄

[root@master ~]# mkdir -p /opt/SoftWare/Java
[root@master ~]# mkdir -p /opt/SoftWare/Hadoop

4.3.2 解壓

  1. 進入到Java目錄
[root@master ~]# cd /opt/SoftWare/Java
  1. 使用rz命令從windows主機上傳jdk壓縮包到master節點
[root@master Java]# rz
  1. 解壓到當前目錄
[root@master Java]# tar -zxvf jdk-8u152-linux-x64.tar.gz

4.3.3 配置環境變量

  1. 打開 profile文件
[root@master Java]# vi /etc/profile
  1. 在文件的末尾追加以下內容
export JAVA_HOME=/opt/SoftWare/Java/jdk1.8.0_152
export JRE_HOME=/opt/SoftWare/Java/jdk1.8.0_152/jre
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib/rt.jar
export PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
  1. 使剛纔的設置生效
[root@master Java]# source /etc/profile
  1. 檢測是否配置成功
[root@master Java]# java -version
java version "1.8.0_152"
Java(TM) SE Runtime Environment (build 1.8.0_152-b16)
Java HotSpot(TM) 64-Bit Server VM (build 25.152-b16, mixed mode)

五. 安裝配置Hadoop並配置

5.1 下載Hadoop安裝包

下載地址 https://mirrors.tuna.tsinghua.edu.cn/apache/hadoop/common/hadoop-2.7.7/hadoop-2.7.7.ta

5.2 上傳至master節點

  1. 上傳Hadoop安裝包
[root@master ~]# cd /opt/SoftWare/Hadoop
[root@master Hadoop]# rz
  1. 解壓
[root@master Hadoop]# tar -zxvf hadoop-2.7.7.tar.gz

5.3 創建目錄

5.3.1 進入解壓後的Hadoop根目錄

[root@master Hadoop]# cd hadoop-2.7.7

5.3.2 創建以下目錄

# 創建hadoop 緩存文件目錄
[root@master hadoop-2.7.7]# mkdir tmp
# 創建hadoop 日誌文件目錄
[root@master hadoop-2.7.7]# mkdir logs
# 創建hadoop NameNode數據目錄
[root@master hadoop-2.7.7]# mkdir -p hdfs/name
# 創建hadoop DataNode數據目錄
[root@master hadoop-2.7.7]# mkdir -p hdfs/data

5.4 修改配置

5.4.1 修改hadoop-env.sh文件

[root@master hadoop-2.7.7]# vi etc/hadoop/hadoop-env.sh
#修改JAVA_HOME爲以下內容,否則容易出現Hadoop無法啓動問題
export JAVA_HOME=/opt/SoftWare/Java/jdk1.8.0_152

5.4.2 修改yarn-env.sh文件

[root@master hadoop-2.7.7]# vi etc/hadoop/yarn-env.sh
#修改JAVA_HOME爲以下內容
export JAVA_HOME=/opt/SoftWare/Java/jdk1.8.0_152

5.4.3 編輯slaves文件

#該文件用於記錄本集羣有哪些數據節點
[root@master hadoop-2.7.7]# vi etc/hadoop/slaves
#刪除該文件中原來的內容,添加以下內容
slave1
slave2
slave3

5.4.4 修改core-site.xml文件

  1. 打開 core-site.xml 文件
[root@master hadoop-2.7.7]# vi etc/hadoop/core-site.xml
  1. 將下面的內容添加到 core-site.xml 文件
<!--在<configuration></configuration>中間添加一下內容-->
<property>
<name>fs.defaultFS</name><!--定義Hadoop Master的URI和端口-->
<value>hdfs://master:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name><!--hadoop的臨時存儲目錄-->
<value>file:/opt/SoftWare/Hadoop/hadoop-2.7.7/tmp</value>
</property>
<property>
<name>io.file.buffer.size</name><!--用作序列化文件處理時讀寫buffer的大小-->
<value>131702</value>
</property>

5.4.5 修改hdfs-site.xml文件

  1. 打開 hdfs-site.xml 文件
[root@master hadoop-2.7.7]# vi etc/hadoop/hdfs-site.xml
  1. 將下面的內容添加到 hdfs-site.xml

在中間添加一下內容

<!--在<configuration></configuration>中間添加一下內容-->
<property><!--namenode節點數據存儲目錄-->
<name>dfs.namenode.name.dir</name>
<value>file:/opt/SoftWare/Hadoop/hadoop-2.7.7/hdfs/name</value>
</property>
<property><!--datanode數據存儲目錄-->
<name>dfs.datanode.data.dir</name>
<value>file:/opt/SoftWare/Hadoop/hadoop-2.7.7/hdfs/data</value>
</property>
<property><!--指定DataNode存儲block的副本數量,不大於DataNode的個數就行,默認爲3-->
<name>dfs.replication</name>
<value>2</value>
</property>
<property><!--指定master的http協議訪問地址-->
<name>dfs.namenode.secondary.http-address</name>
<value>master:50090</value>
</property>
<property><!--指定master的https協議訪問地址-->
<name>dfs.namenode.secondary.https-address</name>
<value>192.168.10.250:50091</value>
</property>
<property><!--必須設置爲true,否則就不能通過web訪問hdfs上的文件信息-->
<name>dfs.webhdfs.enabled</name>
<value>true</value>
</property>

5.4.6 修改yarn-site.xml文件

  1. 打開 yarn-site.xml 文件
[root@master hadoop-2.7.7]# vi etc/hadoop/yarn-site.xml
  1. 將下面的內容添加到 yarn-site.xml
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
<value>org.apache.hadoop.mapred.ShuffleHandler</value>
</property>
<property>
<name>yarn.resourcemanager.address</name>
<value>master:8032</value>
</property>
<property>
<name>yarn.resourcemanager.scheduler.address</name>
<value>master:8030</value>
</property>
<property>
<name>yarn.resourcemanager.resource-tracker.address</name>
<value>master:8031</value>
</property>
<property>
<name>yarn.resourcemanager.admin.address</name>
<value>master:8033</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.address</name>
<value>master:8088</value>
</property>
<property>
<name>yarn.nodemanager.resource.memory-mb</name>
<value>2048</value>
</property>

5.4.7 修改mapred-site.xml文件

  1. 這個文件並不存在,先複製再打開
#使用cp命令複製一份出來,不要自己創建
[root@master hadoop-2.7.7]# cp etc/hadoop/mapred-site.xml.template etc/hadoop/mapred-site.xml
[root@master hadoop-2.7.7]# vi etc/hadoop/mapred-site.xml
  1. 添加下面的內容
<property><!--使用yarn運行mapreduce程序-->
    <name>mapreduce.framework.name</name>
    <value>yarn</value>
</property>
<property><!--MapReduce JobHistory Server地址-->
    <name>mapreduce.jobhistory.address</name>
    <value>master:10020</value>
</property>
<property><!--MapReduce JobHistory Server Web界面地址-->
    <name>mapreduce.jobhistory.webapp.address</name>
    <value>master:19888</value>
</property>

5.5 分發Hadoop文件

  1. 將master節點上的Hadoop目錄遠程拷貝到其他slave節點
[root@master hadoop-2.7.7]# scp -r /opt/SoftWare/Hadoop root@slave1:/opt/SoftWare/
[root@master hadoop-2.7.7]# scp -r /opt/SoftWare/Hadoop root@slave2:/opt/SoftWare/
[root@master hadoop-2.7.7]# scp -r /opt/SoftWare/Hadoop root@slave3:/opt/SoftWare/

5.6 修改環境變量

  1. 編輯 /etc/profile 文件
[root@master hadoop-2.7.7]# vi /etc/profile
  1. 添加以下內容
#添加以下內容
export HADOOP_HOME=/opt/SoftWare/Hadoop/hadoop-2.7.7
export HADOOP_LOG_DIR=$HADOOP_HOME/logs
export YARN_LOG_DIR=$HADOOP_LOG_DIR
export PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH
  1. 使設置生效
[root@master hadoop-2.7.7]# source /etc/profile

5.7 格式化Hadoop

注意 : 這個只需要在 master節點上執行即可, 其他的不需要執行!

不要重複格式化 ! 如果需要重複格式化, 先把之前創建的hdsf目錄下的name 和data 目錄刪除,然後再重新創建!

  1. 執行下面的命令
[root@master hadoop-2.7.7]# bin/hdfs namenode -format
  1. 在最後出現以下內容說明格式化成功
18/03/01 10:07:59 INFO namenode.FSImage: Allocated new BlockPoolId: BP-1057357071-192.168.100.100-1519870079201
18/03/01 10:07:59 INFO common.Storage: Storage directory /opt/SoftWare/Hadoop/hadoop-2.7.7/hdfs/name has been successfully formatted.
18/03/01 10:07:59 INFO namenode.FSImageFormatProtobuf: Saving image file /opt/SoftWare/Hadoop/hadoop-2.7.7/hdfs/name/current/fsimage.ckpt_0000000000000000000 using no compression
18/03/01 10:07:59 INFO namenode.FSImageFormatProtobuf: Image file /opt/SoftWare/Hadoop/hadoop-2.7.7/hdfs/name/current/fsimage.ckpt_0000000000000000000 of size 321 bytes saved in 0 seconds.
18/03/01 10:07:59 INFO namenode.NNStorageRetentionManager: Going to retain 1 images with txid >= 0
18/03/01 10:07:59 INFO util.ExitUtil: Exiting with status 0
18/03/01 10:07:59 INFO namenode.NameNode: SHUTDOWN_MSG: 
/************************************************************
SHUTDOWN_MSG: Shutting down NameNode at master/192.168.100.100
************************************************************/

注意上面的第二行最後的successfully formatted

5.8 啓動Hadoop集羣

5.8.1 啓動HDFS

  1. 按照新版要求,不建議直接使用start-all.sh命令
[root@master hadoop-2.7.7]# sbin/start-dfs.sh
  1. 然後會在控制檯打印以下信息
Starting namenodes on [master]
master: starting namenode, logging to /opt/SoftWare/Hadoop/hadoop-2.7.7/logs/hadoop-rootnamenode-master.out
slave1: starting datanode, logging to /opt/SoftWare/Hadoop/hadoop-2.7.7/logs/hadoop-rootdatanode-slave1.out
slave2: starting datanode, logging to /opt/SoftWare/Hadoop/hadoop-2.7.7/logs/hadoop-rootdatanode-slave2.out
slave3: starting datanode, logging to /opt/SoftWare/Hadoop/hadoop-2.7.7/logs/hadoop-rootdatanode-slave3.out
Starting secondary namenodes [master]
master: starting secondarynamenode, logging to /opt/SoftWare/Hadoop/hadoop-2.7.7/logs/hadooproot-secondarynamenode-master.out

5.8.2 啓動Yarn

  1. 執行 start-yarn.sh
[root@master hadoop-2.7.7]# sbin/start-yarn.sh
  1. 然後會在控制檯打印以下信息
starting yarn daemons
starting resourcemanager, logging to /opt/SoftWare/Hadoop/hadoop-2.7.7/logs/yarn-rootresourcemanager-master.out
slave2: starting nodemanager, logging to /opt/SoftWare/Hadoop/hadoop-2.7.7/logs/yarn-rootnodemanager-slave2.out
slave3: starting nodemanager, logging to /opt/SoftWare/Hadoop/hadoop-2.7.7/logs/yarn-rootnodemanager-slave3.out
slave1: starting nodemanager, logging to /opt/SoftWare/Hadoop/hadoop-2.7.7/logs/yarn-rootnodemanager-slave1.out

5.9 檢測集羣是否搭建成功

5.9.1 在 Master上執行

[root@master hadoop-2.7.7]# jps
44658 ResourceManager
44509 SecondaryNameNode
44318 NameNode
44958 Jps

5.9.2 在 slave節點上執行

[root@slave1 ~]# jps
2262 DataNode
2360 NodeManager
2461 Jps

5.9.3 使用WEB界面訪問

  1. 在瀏覽器地址欄中輸入http://192.168.100.100:50070 即可
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章