超詳細的Hadoop集羣部署

本文建立在已經把虛擬機ip環境等已經下載好情況下。
那麼,直接開始今天的正題:

搭建集羣

環境準備

這裏提供兩種思路:一種是將一臺直接搭建好,後面的克隆或者copy虛擬機
一種是3臺並進,多次進行虛擬機之間文件互傳,各有利弊,第一種方式容易漏改ip等問題,第二種方式簡單明瞭,一遍過手,就是步驟稍微多一點,這裏採用第二種方式:
1、配置服務器(我這裏是以3臺爲例)

1個主節點:hadoop1(192.168.183.161),2個(從)子節點,hadoop2(192.168.183.162),hadoop13(192.168.183.163)

2、配置主節點名hadoop1(192.168.183.161)

在命令行輸入: vi /etc/sysconfig/network

添加內容:
NETWORKING=yes
HOSTNAME=hadoop1

配置兩臺子節點名(192.168.102.136)和(192.168.102.137):
vi /etc/sysconfig/network
添加內容:
NETWORKING=yes
HOSTNAME=hadoop2

vi /etc/sysconfig/network
添加內容:
NETWORKING=yes
HOSTNAME=hadoop3

這塊再多改一個東西 vi /etc/hostname

加上主機名 hadoop1,每個節點都執行各自的主機名

注意vi /etc/sysconfig/network 記得去掉 #號那一行,有時候會因爲這個改不成功

3、配置hosts

打開主節點的hosts文件,將文件的前兩行註釋掉 (註釋當前主機的信息)並在文件中添加所有hadoop集羣的主機息。

在命令行輸入: vi /etc/hosts
添加3臺服務器的節點名信息(這個也就是後面用的映射)

192.168.183.161   hadoop1
192.168.183.162   hadoop2
192.168.183.163   hadoop3

保存之後,將主節點的hosts分別拷貝到其他兩個子節點
命令行分別輸入:
scp /etc/hosts [email protected]:/etc/
scp /etc/hosts [email protected]:/etc/
話不多說 重啓吧,然後我們繼續,可以看到主機名已經更改了

配置DNS請看這一篇 :https://blog.csdn.net/teisite/article/details/81196244

4、關閉防火牆(每一臺機器上面執行)

a.查看防火牆狀態
firewall-cmd --state

b.停止firewall
systemctl stop firewalld.service

c.禁止firewall開機啓動
systemctl disable firewalld.service

5、時間同步

命令行輸入:yum install ntp 下載ntp插件 ,
下載完成後 命令行輸入:ntpdate -u ntp1.aliyun.com
然後命令行輸入:date
如果出現如下情況表示配置成功:

6、配置ssh無密碼訪問(這步很關鍵,請用心)

生成公鑰密鑰對

在每個節點上分別執行:
命令行輸入:ssh-keygen -t rsa
一直按回車直到生成結束
執行結束之後每個節點上的/root/.ssh/目錄下生成了兩個文件 id_rsa 和 id_rsa.pub
其中前者爲私鑰,後者爲公鑰


在主節點上執行:
命令行輸入:cp id_rsa.pub authorized_keys
將子節點的公鑰拷貝到主節點並添加進authorized_keys

將兩個子節點的公鑰拷貝到主節點上
分別在兩個子節點上執行:

scp /root/.ssh/id_rsa.pub   root@hadoop1:/root/.ssh/id_rsa_hadoop2.pub
scp /root/.ssh/id_rsa.pub   root@hadoop1:/root/.ssh/id_rsa_hadoop3.pub

然後在主節點上,將拷貝過來的兩個公鑰合併到authorized_keys文件中去
主節點上執行:
cat id_rsa_hadoop2.pub>> authorized_keys
cat id_rsa_hadoop3.pub>> authorized_keys

將主節點的authorized_keys文件分別替換子節點的authorized_keys文件,此時主節點上面的內容已經是最全的了,
主節點上用scp命令將authorized_keys文件拷貝到子節點的相應位置,

scp authorized_keys root@hadoop2:/root/.ssh/
scp authorized_keys root@hadoop3:/root/.ssh/

最後測試是否配置成功

在hadoop1上分別執行
ssh hadoop2
ssh hadoop2

相互之前也要能ssh成功
能正確跳轉到兩臺子節點的操作界面即可,同樣在每個子節點通過相同的方式登錄主節點和其他子節點也能無密碼正常登錄就表示配置成功。

這裏的配置方式可以有多種操作步驟,最終目的是每個節點上的/root/.ssh/authorized_keys文件中都包含所有的節點生成的公鑰內容。到此免密已經OK

7、jdk安裝

配置環境變量, 編輯profile文件:
vi /etc/profile
在profile文件末尾添加以下代碼:

export JAVA_HOME=/usr/local/jdk1.8.0_191
export JRE_HOME=$JAVA_HOME/jre
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=$JAVA_HOME/lib:$JRE_HOME/lib

保存,source /etc/profile 生效配置文件
測試是否安裝成功:java -version

至此環境已經OK,開始開心的安裝hadoop集羣

8、安裝hadoop

解壓安裝包:tar -zxvf hadoop-2.7.7.tar.gz

tar -zxvf hadoop-2.7.0.tar.gz -C /home/software/soft/ 解壓到指定目錄
cp -r jdk1.8.0_11/ /home/software/soft/ 複製到指定目錄

完事兒後配置環境變量:
vi /etc/profile
在末尾添加:

export HADOOP_HOME=/usr/local/hadoop-2.7.7
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

保存後使新編輯的profile生效:source /etc/profile

hadoop配置
修改文件:
1:hadoop-env.sh ——>jdk
2:yarn-env.sh ——>jdk
3:core-site.xml
4:hdfs-site.xml
5:mapred-site.xml
6:yarn-site.xml
7:slaves ——>子節點,節點
其中hadoop-env.sh和yarn-env.sh裏面都要添加jdk,接下來一個一個來

hadoop-env.sh中

添加如下代碼:   export JAVA_HOME=/home/usr/java/jdk1.8.0_11       到如下位置:

yarn-env.sh中

添加如下代碼:   export JAVA_HOME=/home/usr/java/jdk1.8.0_11       到如下位置:

core-site.xml中

添加如下代碼:

<configuration>
	<property>
                <name>fs.defaultFS</name>
                <value>hdfs://hadoop1:9000</value>
        </property>
        <property>
                <name>io.file.buffer.size</name>
                <value>131072</value>
        </property>
        <property>
                <name>hadoop.tmp.dir</name>
                <value>file:/home/usr/java/hadoop-2.7.0/temp</value>
        </property>
        <property>
                <name>hadoop.proxyuser.root.hosts</name>
                <value>*</value>
        </property>
        <property>
                <name>hadoop.proxyuser.root.groups</name>
                <value>*</value>
        </property>
</configuration>

注:上面代碼中file後的路徑下的temp文件夾需要自己創建

hdfs-site.xml中

添加如下代碼:

<configuration>
	<property>
                <name>dfs.namenode.secondary.http-address</name>
                <value>hadoop1:9001</value>
        </property>
        <property>
                <name>dfs.namenode.name.dir</name>
                <value>file:/home/usr/java/hadoop-2.7.0/dfs/name</value>
        </property>
        <property>
                <name>dfs.datanode.data.dir</name>
                <value>file:/home/usr/java/hadoop-2.7.0/dfs/data</value>
        </property>
        <property>
                <name>dfs.replication</name>
                <value>2</value>
        </property>
        <property>
                <name>dfs.webhdfs.enabled</name>
                <value>true</value>
        </property>
        <property>
                <name>dfs.permissions</name>
                <value>false</value>
        </property>
        <property>
                <name>dfs.web.ugi</name>
               	<value>supergroup</value>
        </property>
</configuration>

注:上面代碼中file後的路徑下的/dfs/data文件夾需要自己創建

mapred-site.xml中

(注意要將mapred-site.xml.template重命名爲 .xml的文件   Mv mapred-site.xml.template mapred-site.xml)
<configuration>
        <property>
                <name>mapreduce.framework.name</name>
                <value>yarn</value>
        </property>
        <property>
                <name>mapreduce.jobhistory.address</name>
                <value>hadoop1:10020</value>
        </property>
        <property>
                <name>mapreduce.jobhistory.webapp.address</name>
                <value>hadoop1:19888</value>
        </property>
</configuration>

yarn-site.xml中

添加如下代碼:

<configuration>
        <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>hadoop1:8032</value>
        </property>
        <property>
                <name>yarn.resourcemanager.scheduler.address</name>
                <value>hadoop1:8030</value>
        </property>
        <property>
                <name>yarn.resourcemanager.resource-tracker.address</name>
                <value>hadoop1:8031</value>
        </property>
        <property>
                <name>yarn.resourcemanager.admin.address</name>
                <value>hadoop1:8033</value>
        </property>
        <property>
                <name>yarn.resourcemanager.webapp.address</name>
                <value>hadoop1:8088</value>
        </property>
</configuration>

slaves中

修改成:
hadoop2
hadoop3

主節點上面該配的已經配完,下面是copy子節點的了

主節點上執行:
scp -r /home/usr/java/hadoop-2.7.0     root@hadoop2:/home/usr/java
scp -r /home/usr/java/hadoop-2.7.0     root@hadoop3:/home/usr/java

拷貝profile到子節點

主節點上執行:
scp /etc/profile root@hadoop2:/etc/
scp /etc/profile root@hadoop3:/etc/

在兩個子節點上分別使新的profile生效:

source /etc/profile

格式化主節點的namenode

主節點上進入hadoop目錄
然後執行:
./bin/hadoop namenode -format
新版本用下面的語句不用hadoop命令了
./bin/hdfs namenode -format
提示:successfully formatted表示格式化成功

記得加上這個配置,可避免集羣環境停不下來的問題:

https://blog.csdn.net/Alex_81D/article/details/105092935

此時已經完成:

啓動hadoop

主節點上在hadoop目錄下執行:
./sbin/start-all.sh

主節點上jps進程如下:
NameNode
SecondaryNameNode
ResourceManager

每個子節點上的jps進程如下:
DataNode
NodeManager

如果這樣表示hadoop集羣配置成功

此時整個集羣完成!!!!是不是很簡單

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